提示:以下是本篇文章正文内容,下面案例可供参考
rgb彩灯的介绍
ESP32 RGB彩灯是一种可以通过ESP32开发板控制的灯具,它可以实现多种灯光效果,如闪烁、跳变、渐变等。使用ESP32 RGB彩灯可以实现远程控制,可以通过Wi-Fi或蓝牙连接到ESP32开发板,然后使用Arduino IDE编写代码来控制RGB彩灯的亮度和颜色。此外,还可以使用PWM波来控制RGB彩灯的亮度,以实现更多的灯光效果。使用ESP32 RGB彩灯可以实现多种灯光效果,可以为家庭或办公室带来更多的色彩和活力。
B站的RGB彩灯效果展示:
Arduino开源硬件编程学习炫酷玩法-RGB全彩灯珠点阵,彩灯效果,汉字显示,字符显示,传感器扩展,声控音乐效果灯
使用方法
连线
pin16连接到rgb彩灯上面即可。
库
需要在软件中选择"项目"–>“加载库”–>“管理库”–>输入"Adafruit_NeoPixel"安装即可。
操作
包含头文件#include
定义彩灯类Adafruit_NeoPixel pixels(彩灯数量, pin脚, NEO_GRB + NEO_KHZ800);
rgb灯珠的开始
pixels.begin();
设置亮度:
pixels.setBrightness(255);
设置全部灯珠颜色:
pixels.fill(0xFF0000);
清除
pixels.clear();
设置指定的灯珠的rgb值:
pixels.setPixelColor(index, pixels.Color(r,g,b));
显示:
pixels.show();
彩灯变换颜色实验
我这里只有5个灯珠,所以最大灯珠就写了5.
#include <Adafruit_NeoPixel.h> // 设置灯珠数量 #define NUMPIXELS 5 // 设置输出数据引脚 #define PIN_NEOPIXEL 16 // 初始化灯珠控制实例 Adafruit_NeoPixel pixels(NUMPIXELS, PIN_NEOPIXEL, NEO_GRB + NEO_KHZ800); // 当前灯珠指向 int16_t idx = 0; // 启动设置 void setup() { // 灯珠控制开始 pixels.begin(); // 设置亮度为255 pixels.setBrightness(255); // 设置灯珠颜色,全部关闭 pixels.fill(0x000000); delay(100); // 设置灯珠颜色 pixels.fill(0xFF0000); delay(100); pixels.clear(); } uint16_t c1 = 0; uint16_t c2 = 0; uint16_t c3 = 0; uint16_t sign_bit =0; uint16_t sign = 1; // 循环主体程序 void loop() { if(sign_bit == 0) { //这个if语句在循环体内只运行一次,该if语句及下方if语句可以用switch代替 if(sign) { c1++; if(c1>=255) sign=0; } else { c2++; if(c2>=255) { sign=1; sign_bit = 1; } } } if(sign_bit == 1) { if(sign) { c1--; if(c1<=0) sign=0; } else { c3++; if(c3>=255) { sign=1; sign_bit = 2; } } } if(sign_bit == 2) { if(sign) { c2--; if(c2<=0) sign=0; } else { c1++; if(c1>=255) { sign=1; sign_bit = 3; } } } if(sign_bit == 3) { if(sign) { c3--; if(c3<=0) sign=0; } else { c2++; if(c2>=255) { sign=1; sign_bit = 1; } } } //在这里注释的是一个一个将灯珠点亮并实现渐变 idx++; idx%=5; pixels.setPixelColor(idx, pixels.Color(c1,c2,c3)); /*======================================= 全部点亮用该函数 pixels.fill(pixels.Color(c1,c2,c3)); =======================================*/ delay(10);//延时,改变速度 // 显示 pixels.show(); }
if里面的东西可以直接抄,以及上面的变量,其他的实验请大家自己完成。
彩灯呼吸灯效果
原理:通过setBrightness(255);函数实现。
/* 深圳市普中科技有限公司(PRECHIN 普中) 技术支持:www.prechin.net * * 实验名称:RGB彩灯实验 * * 接线说明:RGB彩灯模块-->ESP32 IO * WS-->(16) * * 实验现象:程序下载成功后,RGB彩灯循环点亮且循环变化颜色 * * 注意事项:需要在软件中选择"项目"-->"加载库"-->"管理库"-->输入"Adafruit_NeoPixel"安装即可。 * */ #include <Adafruit_NeoPixel.h> // 设置灯珠数量 #define NUMPIXELS 5 // 设置输出数据引脚 #define PIN_NEOPIXEL 16 // 初始化灯珠控制实例 Adafruit_NeoPixel pixels(NUMPIXELS, PIN_NEOPIXEL, NEO_GRB + NEO_KHZ800); // 当前灯珠指向 int16_t idx = 0; // 启动设置 void setup() { // 调试串口速率设置 Serial.begin(115200); // 灯珠控制开始 pixels.begin(); // 设置亮度为255 pixels.setBrightness(0); // 设置灯珠颜色,全部关闭 pixels.fill(0x000000); delay(100); // 设置灯珠颜色 pixels.fill(0xFF0000); delay(100); pixels.clear(); } unsigned int bright = 0;//定义亮度变量 // 循环主体程序 void loop() { pixels.setPixelColor(0,pixels.Color(220,255,251)); bright++; bright%=256; pixels.setBrightness(bright); delay(10);//延时,改变速度 // 显示 pixels.show(); }
运行后就可以看到第一个rgb彩灯在变换亮度。
一起变换也是一样的,指定index,设置亮度就ok了。
总结
大家可以想一些其他的好看的效果,并实现他。