【Beetle 树莓派RP2350】 补光灯
本帖最后由 i-FOX 于 2025-5-13 09:15 编辑补光灯是一种辅助照明设备,主要用于在光线不足的环境中提供额外光源,以改善拍摄、直播、视频通话或日常照明的效果。
在当前直播行业或是人像摄影、产品拍摄等都有很好的效果。
正好手头上有一个环形的RGB灯,可以通过调整亮度或是色温的方式,支持不同的场景。
功能说明:
由一个GPIO接一个按键,一个GPIO来控制RGB灯的亮度。
根据GPIO按下的时间来动态变化RGB灯的亮度。
而且可以设置成暖光灯或是其他颜色进行补光。
硬件:
RGB灯环模块
按键模块
Beetle与扩展板
4p连接线两条
连接:
按键模块连接到A1接口。
RGB灯环连接到A0接口。
效果:
由于手机有自动 调节功能,拍摄效果不太好,正常使用时,亮度的变化还是很明显的。
代码:
#include "FastLED.h"
#define BUTTON_PIN 27 // 按钮连接的引脚
#define NUM_LEDS 36 // LED数量
#define LED_PIN 26 // 数据引脚
#define MAX_BRIGHTNESS128 // 亮度(0-255)
#define CYCLE_TIME 3000 // 亮度循环周期(毫秒)
CRGB leds;
unsigned long buttonPressStartTime = 0;
bool buttonWasPressed = false;
uint8_t currentBrightness = 0;
void setup() {
pinMode(BUTTON_PIN, INPUT_PULLUP); // 使用内部上拉电阻
FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS); // 初始化LED
// 初始状态:关闭LED
FastLED.setBrightness(0);
fill_solid(leds, NUM_LEDS, CRGB::White); // 设置为白色(可根据需要修改)
FastLED.show();
}
void loop() {
// 检测按钮是否被按下(低电平)
if (digitalRead(BUTTON_PIN) == LOW) {
if (!buttonWasPressed) {
// 按钮刚被按下,记录开始时间
buttonPressStartTime = millis();
buttonWasPressed = true;
}
// 计算按钮被按下的持续时间(毫秒)
unsigned long pressDuration = millis() - buttonPressStartTime;
currentBrightness = map(pressDuration % CYCLE_TIME, 0, CYCLE_TIME, 0, MAX_BRIGHTNESS);
// 设置LED亮度并显示
FastLED.setBrightness(currentBrightness);
FastLED.show();
} else {
if (buttonWasPressed) {
// 按钮被释放
buttonWasPressed = false;
}
}
delay(10);
}
页:
[1]