写一段arduino代码,分别有两条灯带,灯带1有42个灯珠,有白色呼吸效果和从中间向两端亮起的效果。灯带2有7个灯珠,颜色为黄色,亮度由暗变亮
时间: 2024-03-17 14:44:27 浏览: 105
灯光_灯带_Arduino灯光_
5星 · 资源好评率100%
好的,下面是实现你要求的 Arduino 代码:
```
// 定义灯带1的引脚和灯珠数量
#define LED_STRIP_1_PIN 3
#define LED_STRIP_1_NUM_LEDS 42
// 定义灯带2的引脚和灯珠数量
#define LED_STRIP_2_PIN 5
#define LED_STRIP_2_NUM_LEDS 7
// 定义灯带1的呼吸效果的参数
#define LED_STRIP_1_BREATHE_SPEED 5
#define LED_STRIP_1_BREATHE_MIN_BRIGHTNESS 0
#define LED_STRIP_1_BREATHE_MAX_BRIGHTNESS 255
// 定义灯带1从中间向两端亮起的效果的参数
#define LED_STRIP_1_MIDDLE_TO_BOTH_SPEED 50
// 定义灯带2从暗到亮的效果的参数
#define LED_STRIP_2_FADE_SPEED 10
#define LED_STRIP_2_FADE_MIN_BRIGHTNESS 0
#define LED_STRIP_2_FADE_MAX_BRIGHTNESS 255
// 初始化灯带1和灯带2
Adafruit_NeoPixel ledStrip1(LED_STRIP_1_NUM_LEDS, LED_STRIP_1_PIN, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel ledStrip2(LED_STRIP_2_NUM_LEDS, LED_STRIP_2_PIN, NEO_GRB + NEO_KHZ800);
void setup() {
// 初始化串口
Serial.begin(9600);
// 初始化灯带1和灯带2
ledStrip1.begin();
ledStrip2.begin();
}
void loop() {
// 灯带1的呼吸效果
for (int i = LED_STRIP_1_BREATHE_MIN_BRIGHTNESS; i <= LED_STRIP_1_BREATHE_MAX_BRIGHTNESS; i++) {
for (int j = 0; j < LED_STRIP_1_NUM_LEDS; j++) {
// 计算当前灯珠的亮度
int brightness = (int)(0.5 + (LED_STRIP_1_BREATHE_MAX_BRIGHTNESS - LED_STRIP_1_BREATHE_MIN_BRIGHTNESS) * (1.0 + sin(millis() / (1000.0 / LED_STRIP_1_BREATHE_SPEED) + ((2.0 * PI) / LED_STRIP_1_NUM_LEDS) * j)) / 2.0);
// 设置当前灯珠的颜色和亮度
ledStrip1.setPixelColor(j, brightness, brightness, brightness);
}
// 显示当前灯带1的效果
ledStrip1.show();
// 等待一段时间
delay(50);
}
// 灯带1从中间向两端亮起的效果
for (int i = 0; i < LED_STRIP_1_NUM_LEDS / 2; i++) {
// 计算中间灯珠的位置
int middle = LED_STRIP_1_NUM_LEDS / 2;
// 计算当前亮起的灯珠数量
int numLit = i * 2 + 1;
// 计算当前亮起的灯珠的左右端点
int left = middle - (numLit / 2);
int right = middle + (numLit / 2);
// 设置当前亮起的灯珠的颜色和亮度
for (int j = left; j <= right; j++) {
ledStrip1.setPixelColor(j, 255, 255, 255);
}
// 显示当前灯带1的效果
ledStrip1.show();
// 等待一段时间
delay(LED_STRIP_1_MIDDLE_TO_BOTH_SPEED);
}
// 灯带2从暗到亮的效果
for (int i = LED_STRIP_2_FADE_MIN_BRIGHTNESS; i <= LED_STRIP_2_FADE_MAX_BRIGHTNESS; i++) {
// 设置当前亮度的颜色
for (int j = 0; j < LED_STRIP_2_NUM_LEDS; j++) {
ledStrip2.setPixelColor(j, (int)(0.5 + (255.0 / LED_STRIP_2_FADE_MAX_BRIGHTNESS) * i), (int)(0.5 + (255.0 / LED_STRIP_2_FADE_MAX_BRIGHTNESS) * i * 0.7), 0);
}
// 显示当前灯带2的效果
ledStrip2.show();
// 等待一段时间
delay(LED_STRIP_2_FADE_SPEED);
}
}
```
希望这段代码能够满足你的需求,如果有任何问题,欢迎随时询问!
阅读全文