单片机元器件详解

元器件名称 用法介绍 编程设计代码 官方文档
电阻 (Resistor) 用于限制电流或分压。
#define RESISTOR_VALUE 1000  // 1kΩ
int main() {
    int voltage = 5;  // 5V
    int current = voltage / RESISTOR_VALUE;
    printf("Current: %d mA\n", current);
    return 0;
}
查看文档
电容 (Capacitor) 用于存储电荷,平滑电压波动。
#define CAPACITOR_VALUE 10e-6  // 10μF
int main() {
    float time_constant = RESISTOR_VALUE * CAPACITOR_VALUE;
    printf("Time Constant: %.2f seconds\n", time_constant);
    return 0;
}
查看文档
二极管 (Diode) 用于单向导电,防止电流反向流动。
#define DIODE_FORWARD_VOLTAGE 0.7  // 0.7V
int main() {
    float output_voltage = 5 - DIODE_FORWARD_VOLTAGE;
    printf("Output Voltage: %.2f V\n", output_voltage);
    return 0;
}
查看文档
晶体管 (Transistor) 用于放大电流或作为开关。
#define BASE_CURRENT 10e-3  // 10mA
#define GAIN 100  // 放大倍数
int main() {
    float collector_current = BASE_CURRENT * GAIN;
    printf("Collector Current: %.2f A\n", collector_current);
    return 0;
}
查看文档
LED (Light Emitting Diode) 用于发光,常用于指示灯。
#define LED_FORWARD_VOLTAGE 2.0  // 2.0V
#define RESISTOR_VALUE 330  // 330Ω
int main() {
    float current = (5 - LED_FORWARD_VOLTAGE) / RESISTOR_VALUE;
    printf("LED Current: %.2f mA\n", current * 1000);
    return 0;
}
查看文档
电感 (Inductor) 用于存储磁场能量,常用于滤波和振荡电路。
#define INDUCTOR_VALUE 10e-3  // 10mH
int main() {
    float time_constant = INDUCTOR_VALUE / RESISTOR_VALUE;
    printf("Time Constant: %.2f seconds\n", time_constant);
    return 0;
}
查看文档
晶振 (Crystal Oscillator) 用于提供稳定的时钟信号,常用于单片机时钟源。
#define CRYSTAL_FREQUENCY 12e6  // 12MHz
int main() {
    printf("Crystal Frequency: %.0f Hz\n", CRYSTAL_FREQUENCY);
    return 0;
}
查看文档
继电器 (Relay) 用于控制高电压或大电流的开关。
#define RELAY_COIL_RESISTANCE 200  // 200Ω
int main() {
    float current = 5 / RELAY_COIL_RESISTANCE;
    printf("Relay Coil Current: %.2f mA\n", current * 1000);
    return 0;
}
查看文档
传感器 (Sensor) 用于检测环境参数,如温度、湿度等。
#define SENSOR_PIN A0
int main() {
    int sensor_value = analogRead(SENSOR_PIN);
    printf("Sensor Value: %d\n", sensor_value);
    return 0;
}
查看文档
蜂鸣器 (Buzzer) 用于发出声音,常用于报警或提示。
#define BUZZER_PIN 9
int main() {
    pinMode(BUZZER_PIN, OUTPUT);
    digitalWrite(BUZZER_PIN, HIGH);
    delay(1000);
    digitalWrite(BUZZER_PIN, LOW);
    return 0;
}
查看文档
Arduino Uno 常用的开源微控制器主板,基于ATmega328P芯片。
#define LED_PIN 13
void setup() {
pinMode(LED_PIN, OUTPUT);
}
void loop() {
digitalWrite(LED_PIN, HIGH);
delay(1000);
digitalWrite(LED_PIN, LOW);
delay(1000);
}
查看文档
Raspberry Pi 基于ARM架构的单板计算机,广泛用于物联网和嵌入式系统。
import RPi.GPIO as GPIO
import time

LED_PIN = 18
GPIO.setmode(GPIO.BCM)
GPIO.setup(LED_PIN, GPIO.OUT)
						
try:
while True:
GPIO.output(LED_PIN, GPIO.HIGH)
		time.sleep(1)
GPIO.output(LED_PIN, GPIO.LOW)
        time.sleep(1)
except KeyboardInterrupt:
GPIO.cleanup()
						
查看文档
74HC595 Shift Register 用于扩展微控制器的输出引脚,通过串行输入并行输出。
#define DATA_PIN 2
#define LATCH_PIN 3
#define CLOCK_PIN 4
						
void setup() {
    pinMode(DATA_PIN, OUTPUT);
    pinMode(LATCH_PIN, OUTPUT);
    pinMode(CLOCK_PIN, OUTPUT);
}
						
void loop() {
    for (int i = 0; i < 256; i++) {
        digitalWrite(LATCH_PIN, LOW);
        shiftOut(DATA_PIN, CLOCK_PIN, MSBFIRST, i);
        digitalWrite(LATCH_PIN, HIGH);
        delay(500);
	}
}
查看文档
LM35 Temperature Sensor 线性温度传感器,输出电压与温度成正比。
#define SENSOR_PIN A0
						
void setup() {
    Serial.begin(9600);
}
						
void loop() {
    int sensorValue = analogRead(SENSOR_PIN);
    float voltage = sensorValue * (5.0 / 1023.0);
    float temperature = voltage * 100;
    Serial.print("Temperature: ");
    Serial.print(temperature);
    Serial.println(" C");
    delay(1000);
}
查看文档
HC-SR04 Ultrasonic Sensor 用于测量距离的超声波传感器。
#define TRIG_PIN 9
#define ECHO_PIN 10
						
void setup() {
    Serial.begin(9600);
    pinMode(TRIG_PIN, OUTPUT);
    pinMode(ECHO_PIN, INPUT);
}
						
void loop() {
    digitalWrite(TRIG_PIN, LOW);
    delayMicroseconds(2);
    digitalWrite(TRIG_PIN, HIGH);
    delayMicroseconds(10);
    digitalWrite(TRIG_PIN, LOW);
						
    long duration = pulseIn(ECHO_PIN, HIGH);
    float distance = duration * 0.034 / 2;
						
    Serial.print("Distance: ");
    Serial.print(distance);
    Serial.println(" cm");
    delay(1000);
}
查看文档