【史上最全面esp32教程】RGB彩灯篇

简介: 【史上最全面esp32教程】RGB彩灯篇

提示:以下是本篇文章正文内容,下面案例可供参考

rgb彩灯的介绍


ESP32 RGB彩灯是一种可以通过ESP32开发板控制的灯具,它可以实现多种灯光效果,如闪烁、跳变、渐变等。使用ESP32 RGB彩灯可以实现远程控制,可以通过Wi-Fi或蓝牙连接到ESP32开发板,然后使用Arduino IDE编写代码来控制RGB彩灯的亮度和颜色。此外,还可以使用PWM波来控制RGB彩灯的亮度,以实现更多的灯光效果。使用ESP32 RGB彩灯可以实现多种灯光效果,可以为家庭或办公室带来更多的色彩和活力。

B站的RGB彩灯效果展示:


image.png


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了。

总结

大家可以想一些其他的好看的效果,并实现他。

相关文章
Threejs入门进阶实战案例(5):坐标系理解时辅助坐标系的使用
Threejs入门进阶实战案例(5):坐标系理解时辅助坐标系的使用
135 0
|
IDE 物联网 开发工具
【史上最全面esp32教程】点灯大师篇
【史上最全面esp32教程】点灯大师篇
884 0
|
前端开发 JavaScript
Threejs入门进阶实战案例(3):视频贴图的解决方案
Threejs入门进阶实战案例(3):视频贴图的解决方案
352 0
|
6月前
|
前端开发
【零基础入门前端系列】—浏览器内核、背景渐变、转换(二十二)
【零基础入门前端系列】—浏览器内核、背景渐变、转换(二十二)
【史上最全面esp32教程】oled显示篇
【史上最全面esp32教程】oled显示篇
1321 0
|
IDE 开发工具 C语言
【史上最全面esp32教程】蜂鸣器篇(是噪声还是音乐?)
【史上最全面esp32教程】蜂鸣器篇(是噪声还是音乐?)
838 0
|
安全
【史上最全面esp32教程】激超声波模块测距篇
【史上最全面esp32教程】激超声波模块测距篇
733 0
|
前端开发
前端学习案例3-canvas时钟3
前端学习案例3-canvas时钟3
65 0
前端学习案例3-canvas时钟3
|
前端开发
前端学习案例1-canvas时钟1
前端学习案例1-canvas时钟1
54 0
前端学习案例1-canvas时钟1
|
前端开发
前端学习案例2-canvas时钟2
前端学习案例2-canvas时钟2
44 0
前端学习案例2-canvas时钟2