在电子制作和创意项目的世界里,Arduino Uno无疑是一颗璀璨的明星。它那简洁而强大的设计,为无数爱好者和专业人士提供了探索电子世界的窗口。今天,就让我们一起走进Arduino Uno与灯带的奇妙世界,看看如何通过简单的编程和硬件连接,让灯带展现出绚丽多彩的效果。
#include <FastLED.h>
#define LED_PIN 6 // 灯带连接的引脚
#define COLOR_ORDER GRB // 灯带的颜色顺序
#define CHIPSET WS2812B // 灯带的芯片类型
#define NUM_LEDS 30 // 灯带的 LED 数量
CRGB leds[NUM_LEDS]; // 定义一个数组来存储每个 LED 的颜色
void setup() {
FastLED.addLeds<CHIPSET, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS); // 初始化 FastLED
}
void loop() {
// 效果1:全亮白色
fill_solid(leds, NUM_LEDS, CRGB::White);
FastLED.show();
delay(2000);
// 效果2:全亮红色
fill_solid(leds, NUM_LEDS, CRGB::Red);
FastLED.show();
delay(2000);
// 效果3:全亮绿色
fill_solid(leds, NUM_LEDS, CRGB::Green);
FastLED.show();
delay(2000);
// 效果4:全亮蓝色
fill_solid(leds, NUM_LEDS, CRGB::Blue);
FastLED.show();
delay(2000);
// 效果5:彩虹渐变
rainbowCycle(5);
delay(2000);
// 效果6:跑马灯
for(int i = 0; i < NUM_LEDS * 2; i++) {
fill_solid(leds, NUM_LEDS, CRGB::Black);
leds[i % NUM_LEDS] = CRGB::White;
FastLED.show();
delay(100);
}
}
// 彩虹渐变函数
void rainbowCycle(uint8_t wait) {
uint16_t i, j;
for(j=0; j<256; j++) { // 256 色彩循环
for(i=0; i<NUM_LEDS; i++) {
leds[i] = Wheel((i * 256 / NUM_LEDS + j) & 255);
}
FastLED.show();
delay(wait);
}
}
// 生成彩虹颜色的函数
CRGB Wheel(byte WheelPos) {
WheelPos = 255 - WheelPos;
if(WheelPos < 85) {
return CRGB(255 - WheelPos * 3, 0, WheelPos * 3);
}
if(WheelPos < 170) {
WheelPos -= 85;
return CRGB(0, WheelPos * 3, 255 - WheelPos * 3);
}
WheelPos -= 170;
return CRGB(WheelPos * 3, 255 - WheelPos * 3, 0);
}