连接 LED 到 Arduino的 很简单,但是有 最佳实践 确保 安全操作和适当的亮度控制。以下是连接 LED 连接至 Arduino 同时避免常见的错误。
🔹 1. 基本 LED 连接(带电阻器)
🛠 必需组件
- 1x Arduino(Uno、Mega、Nano 等)
- 1 个 LED(任意颜色)
- 1 个电阻(220Ω – 1kΩ)
- 跳线
🛠接线:
| 元件 | 连接升级包 |
|---|---|
| LED 阳极(+,长脚) | Arduino 数字 Pin (例如 D7) |
| LED 阴极(-,短脚) | 电阻 (220Ω – 1kΩ) → GND |
📌 为什么要使用电阻器?
- 限制电流以防止 LED 烧坏.
- 典型 LED 电流应为 5mA – 20mA.
- 对于 5V Arduino,建议使用 220Ω – 1kΩ 电阻.
✅ Arduino 代码示例:LED 闪烁
#define LED_PIN 7 // LED connected to pin 7
void setup() {
pinMode(LED_PIN, OUTPUT);
}
void loop() {
digitalWrite(LED_PIN, HIGH); // Turn LED ON
delay(1000); // Wait 1 second
digitalWrite(LED_PIN, LOW); // Turn LED OFF
delay(1000);
}
📌 怎么了?
- 此 LED 每秒闪烁一次.
🔹 2. 使用 PWM(模拟输出)控制 LED 亮度
📌 PWM(脉冲宽度调制)可控制亮度 通过调整 LED 亮起和熄灭的时间长度。
🛠 接线(与基本设置相同)
- 将 LED 连接到支持 PWM 的 pin (Arduino Uno 上的 D3、D5、D6、D9、D10、D11)。
- 使用 220Ω – 1kΩ 电阻。
✅ Arduino 代码示例:LED 淡入淡出效果
#define LED_PIN 9 // PWM-capable pin
void setup() {
pinMode(LED_PIN, OUTPUT);
}
void loop() {
for (int brightness = 0; brightness <= 255; brightness++) {
analogWrite(LED_PIN, brightness); // Increase brightness
delay(10);
}
for (int brightness = 255; brightness >= 0; brightness--) {
analogWrite(LED_PIN, brightness); // Decrease brightness
delay(10);
}
}
📌 怎么了?
- 此 LED 亮度逐渐增加和减少.
🔹 3. 将多个 LED 连接到 Arduino
📌 您可以单独或按顺序控制多个 LED.
✅ 示例:多个 LED 闪烁
#define LED1 5
#define LED2 6
#define LED3 7
void setup() {
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
}
void loop() {
digitalWrite(LED1, HIGH);
delay(500);
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
delay(500);
digitalWrite(LED2, LOW);
digitalWrite(LED3, HIGH);
delay(500);
digitalWrite(LED3, LOW);
}
📌 怎么了?
- 每个 LED 每 0.5 秒按顺序闪烁一次.
🔹 4. 使用晶体管控制大功率 LED
📌 如果你想控制大功率 LED(例如 12V LED 灯带或 1W/3W LED),Arduino 无法直接提供足够的电流.
🛠 必需组件
- 1x NPN 晶体管(例如 BC547、2N2222、TIP120)
- 1x 1kΩ电阻(基极电阻)
- 1 个大功率 LED 或 LED 灯带(12V)
- 1x 外部 12V 电源
🛠 接线
| 元件 | 连接升级包 |
|---|---|
| LED阳极 | +12V 电源 |
| LED阴极 | 晶体管集电极 |
| 晶体管发射极 | GND |
| 晶体管基极 | Arduino PWM Pin (通过1kΩ电阻) |
✅ 示例代码:大功率 LED 的 PWM 控制
#define LED_PIN 9 // Connect to transistor base via 1kΩ resistor
void setup() {
pinMode(LED_PIN, OUTPUT);
}
void loop() {
analogWrite(LED_PIN, 128); // 50% Brightness
delay(2000);
analogWrite(LED_PIN, 255); // 100% Brightness
delay(2000);
}
📌 为什么要使用晶体管?
- Arduino 无法处理大电流负载.
- 晶体管允许 Arduino 使用外部电源控制大功率 LED.
🔹 5. 使用 MOSFET 控制 LED 灯带
📌 对于 RGB LED 灯带,MOSFET(IRLZ34N、IRF540N)是比晶体管更好的选择.
🛠 MOSFET 控制接线
| 元件 | 连接升级包 |
|---|---|
| LED 灯带 + | 12V电源 |
| LED 灯带 – | MOSFET 漏极 |
| MOSFET 源极 | GND |
| MOSFET 栅极 | Arduino PWM Pin (通过220Ω电阻) |
RGB LED 灯带的示例代码
#define RED_PIN 9
#define GREEN_PIN 10
#define BLUE_PIN 11
void setup() {
pinMode(RED_PIN, OUTPUT);
pinMode(GREEN_PIN, OUTPUT);
pinMode(BLUE_PIN, OUTPUT);
}
void loop() {
analogWrite(RED_PIN, 255); // Full Red
analogWrite(GREEN_PIN, 0);
analogWrite(BLUE_PIN, 0);
delay(1000);
analogWrite(RED_PIN, 0);
analogWrite(GREEN_PIN, 255); // Full Green
delay(1000);
analogWrite(RED_PIN, 0);
analogWrite(GREEN_PIN, 0);
analogWrite(BLUE_PIN, 255); // Full Blue
delay(1000);
}
📌 怎么了?
- 此 RGB LED 灯带循环显示红、绿、蓝三种颜色.
🔹 6. 连接 LED 时的常见错误
❌ 不使用电阻连接 LED → 可以 烧坏 LED 或损坏 Arduino pin.
✅ 始终使用电阻器(220Ω - 1kΩ) 至 限制电流.
❌ 将大功率 LED 直接连接到 Arduino → 可以 使 Arduino 过载 pin.
✅ 使用晶体管或 MOSFET 至 控制大电流 LED.
❌ 使用错误的 MOSFET(高栅极阈值电压) → 意志 无法通过 Arduino 的 5V 完全开启.
✅ 使用与 34V 逻辑兼容的逻辑电平 MOSFET(例如 IRLZ5N).
🎯 闭幕
- 基本 LED 可 通过电阻直接连接到 Arduino.
- PWM 允许亮度控制 (使用
analogWrite以实现平滑衰落)。 - 适用于多个 LED, 使用 顺序编程或移位寄存器.
- 对于大功率 LED,使用 晶体管(BC547、TIP120)或MOSFET(IRLZ34N、IRF540N).
- 用于 LED 灯条,使用 MOSFET 控制亮度和颜色.