Arduino实战小项目:电子烟花
发布时间
阅读量:
阅读量
前言:
通过火焰传感器,获取信号后,控制ws2812的亮灯顺序与颜色,实现一个简单的电子烟花的效果。
效果如下:

目录
前言:
材料:
接线图:
说明:
完整代码如下:
材料:
1.火焰传感器:

2.arduino nano
3.ws2812
接线图:

说明:
1.WS2812主要使用FastLED库,该库的安装如下:
工具>管理库>库管理器:

选择安装即可
2.FastLED库常用代码:
| 颜色控制函数 | 说明 |
|---|---|
| leds[i]=CRGB::Red | 颜色设置,其中设置Black为关灯 |
| leds[i]=CRGB(252,156,93); | 根据GRB参数设置颜色 |
| fill_solid(leds, 12, CRGB::Red) | 将所有灯设置一个颜色 |
| fill_solid(leds+n, 2, CRGB::Red) | 从第n个灯开始起后2个灯设置为一个颜色 |
| fill_gradient_RGB(leds,0,CRGB::Red,4,CRGB::Blue); | 从0到4号灯设置渐变色 |
3.火焰传感器上有D0和A0两个接口,其中D0是发送数字信号,A0是发送模拟信号。本文只需要一个识别是否打火的信号,故只用D0即可。
完整代码如下:
#include <FastLED.h>
#define NUM_LEDS 12 // LED灯珠数量
#define DATA_PIN 2 // Arduino输出控制信号引脚
#define LED_TYPE WS2812 // LED灯带型号
#define COLOR_ORDER GRB // RGB灯珠中红色、绿色、蓝色LED的排列顺序
uint8_t max_bright = 80; // LED亮度控制变量,可使用数值为 0 ~ 255, 数值越大则光带亮度越
int fire_check_pin=2;
CRGB leds[NUM_LEDS]; // 建立灯带leds
void setup() {
LEDS.addLeds<LED_TYPE, DATA_PIN, COLOR_ORDER>(leds, NUM_LEDS); // 初始化灯带
FastLED.setBrightness(max_bright); // 设置灯带亮度
}
void loop() {
if (digitalRead(fire_check_pin)==HIGH){
for (int i=0;i<NUM_LEDS;i++){
leds[i] = CRGB::Red; // 设置灯带中第一个灯珠颜色为红色,leds[0]为第一个灯珠,leds[1]为第二个灯珠
FastLED.show(); // 更新LED色彩
if (i!=0){
leds[i-1] = CRGB::Black;
FastLED.show(); // 更新LED色彩
}
delay(500);
}
fill_gradient_RGB(leds,0,CRGB::Red,NUM_LEDS/4,CRGB::Blue);
fill_gradient_RGB(leds,NUM_LEDS/4,CRGB::Red,NUM_LEDS,CRGB::Green);
FastLED.show();
delay(250);
for (int i=0;i<NUM_LEDS;i++){
leds[i] = CRGB::Black;
}
FastLED.show();
delay(250);
fill_gradient_RGB(leds,0,CRGB::Red,NUM_LEDS/4,CRGB::Blue);
fill_gradient_RGB(leds,NUM_LEDS/4,CRGB::Red,NUM_LEDS,CRGB::Green);
FastLED.show();
delay(250);
for (int i=0;i<NUM_LEDS;i++){
leds[i] = CRGB::Black;
}
FastLED.show();
delay(1000);
}
}
全部评论 (0)
还没有任何评论哟~
