【史上最全面esp32教程】RGB彩灯篇
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
提示:以下是本篇文章正文内容,下面案例可供参考
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.h>
定义彩灯类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了。
总结
大家可以想一些其他的好看的效果,并实现他。