写一段arduino代码,共有两条灯带,灯带1有42个灯珠,灯带1开始为白色呼吸灯效果,延时5秒之后,从两端向中间亮起,灯带2有7个灯珠,灯珠刚开始比较暗,然后慢慢变亮
时间: 2024-03-17 20:44:35 浏览: 45
好的,下面是实现你要求的 Arduino 代码:
```
#include <Adafruit_NeoPixel.h>
// 定义灯带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和灯带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);
// 灯带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
void setup() {
// 初始化串口
Serial.begin(9600);
// 初始化灯带1和灯带2
ledStrip1.begin();
ledStrip2.begin();
// 灯带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);
}
}
void loop() {
// 延时5秒
delay(5000);
// 灯带1从两端向中间亮起
for (int i = LED_STRIP_1_NUM_LEDS / 2; i >= 0; i--) {
// 计算当前亮起的灯珠数量
int numLit = i * 2 + 1;
// 计算当前亮起的灯珠的左右端点
int left = LED_STRIP_1_NUM_LEDS / 2 - (numLit / 2);
int right = LED_STRIP_1_NUM_LEDS / 2 + (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);
}
// 显示当前灯带2的效果
ledStrip2.show();
// 等待一段时间
delay(LED_STRIP_2_FADE_SPEED);
}
}
```
希望这段代码能够满足你的需求,如果有任何问题,欢迎随时询问!
阅读全文