介绍
三线制高亮LED灯珠模块,VCC/GND/SIG三针接口,SIG引脚支持PWM调光,电压3.3-5V,内置MOS管驱动,最大电流约30mA(板载限流电阻),适用于亮度调节、呼吸灯等场景
三线制高亮LED灯珠模块,VCC/GND/SIG三针接口,SIG引脚支持PWM调光,电压3.3-5V,内置MOS管驱动,最大电流约30mA(板载限流电阻),适用于亮度调节、呼吸灯等场景
| 参数 | 值 |
|---|---|
| 尺寸 | 约 18x12mm |
| 接口 | 3针 (VCC/GND/SIG) |
| LED颜色 | 白光/暖白(可选) |
| PWM频率 | 建议100Hz ~ 2kHz |
| SIG电平 | 高电平亮/低电平灭,支持PWM |
| 工作电压 | 3.3V ~ 5V |
| 最大电流 | ~30mA(板载限流电阻) |
| 调光方式 | PWM占空比调节 |
| 驱动方式 | N-MOS低电平驱动 |
# PWM可调灯珠模块(三针) — 代码例程
---
## 示例 1:Arduino — 呼吸灯效果
```cpp
/*
* PWM灯珠模块 — Arduino 呼吸灯
* SIG → D9 (PWM)
* VCC → 5V, GND → GND
*/
#define LED_PIN 9
void setup() {
pinMode(LED_PIN, OUTPUT);
}
void loop() {
// 渐亮 (0 → 255)
for (int brightness = 0; brightness <= 255; brightness++) {
analogWrite(LED_PIN, brightness);
delay(5);
}
// 渐暗 (255 → 0)
for (int brightness = 255; brightness >= 0; brightness--) {
analogWrite(LED_PIN, brightness);
delay(5);
}
delay(200);
}
```
---
## 示例 2:Arduino — 串口控制亮度
```cpp
/*
* PWM灯珠 — 串口指令调光
* 发送 0~255 设置亮度,发送 "ON"/"OFF" 开关
*/
#define LED_PIN 9
void setup() {
pinMode(LED_PIN, OUTPUT);
Serial.begin(115200);
Serial.println("PWM灯珠控制:输入 0~255 调光,ON/OFF 开关");
}
void loop() {
if (Serial.available()) {
String cmd = Serial.readStringUntil('\n');
cmd.trim();
if (cmd == "ON") {
analogWrite(LED_PIN, 255);
Serial.println("灯珠 → ON (255)");
} else if (cmd == "OFF") {
analogWrite(LED_PIN, 0);
Serial.println("灯珠 → OFF");
} else {
int brightness = cmd.toInt();
if (brightness >= 0 && brightness <= 255) {
analogWrite(LED_PIN, brightness);
Serial.print("亮度 → ");
Serial.println(brightness);
} else {
Serial.println("无效值,请输入 0~255");
}
}
}
}
```
---
## 示例 3:STM32 HAL — TIM PWM 呼吸灯
```c
/*
* STM32 HAL — TIM2_CH1 (PA0) 驱动PWM灯珠
* CubeMX配置: TIM2 → Channel1 → PWM Generation, ARR=999, PSC=71
* 72MHz / (71+1) / (999+1) = 1kHz PWM
*/
#include "main.h"
TIM_HandleTypeDef htim2;
#define LED_PWM_CH TIM_CHANNEL_1
#define ARR_MAX 999
void LED_Init(void) {
HAL_TIM_PWM_Start(&htim2, LED_PWM_CH);
__HAL_TIM_SET_COMPARE(&htim2, LED_PWM_CH, 0);
}
void LED_SetBrightness(uint16_t val) {
// val: 0 ~ ARR_MAX
if (val > ARR_MAX) val = ARR_MAX;
__HAL_TIM_SET_COMPARE(&htim2, LED_PWM_CH, val);
}
void LED_Breathe(uint32_t stepDelayMs) {
// 渐亮
for (uint16_t i = 0; i <= ARR_MAX; i += 10) {
LED_SetBrightness(i);
HAL_Delay(stepDelayMs);
}
// 渐暗
for (int32_t i = ARR_MAX; i >= 0; i -= 10) {
LED_SetBrightness(i);
HAL_Delay(stepDelayMs);
}
}
// 在主循环中调用
// while(1) { LED_Breathe(3); HAL_Delay(200); }
```
---
## 示例 4:MicroPython (ESP32)
```python
"""
PWM灯珠模块 — ESP32 MicroPython
SIG → GPIO25, VCC → 3.3V 或 5V, GND → GND
"""
from machine import Pin, PWM
import time
led = PWM(Pin(25), freq=1000, duty=0)
def breathe():
# 渐亮
for d in range(0, 1024, 4):
led.duty(d)
time.sleep_ms(10)
# 渐暗
for d in range(1023, -1, -4):
led.duty(d)
time.sleep_ms(10)
def set_brightness(percent: int):
"""percent: 0~100"""
duty = int(percent * 1023 / 100)
led.duty(duty)
# 测试循环
print("PWM灯珠呼吸灯演示")
while True:
breathe()
time.sleep(0.5)
# 手动设置亮度示例
# set_brightness(50) # 50%亮度
# set_brightness(10) # 10%亮度
```
暂无参考文献