查看: 2069|回复: 0

【ESP32-E Arduino开发板】WS2812彩色灯环的显示驱动

[复制链接]
  • TA的每日心情
    奋斗
    2023-5-10 20:09
  • 签到天数: 1742 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    发表于 2021-7-26 00:13:46 | 显示全部楼层 |阅读模式
    分享到:
    ESP32-EArduino开发板配有一个基于WS2812的RGB灯珠,其原理图如图1所示,从中我们可以知道它是由IO5来控制的。
                                  
    1.jpg
    图1  WS2812控制原理图
    要在ArduinoIDE中编写程序,需添加第三方的FastLED库,其添加与使用方法为:
    1.选取“项目”菜单下“加载库”的“管理库”选项,在库管理器的搜索栏,输入“FastLED”;
    2. 在出现搜索结果后,点击“安装”按钮;
    3. 在完成安装后,即可见到“INSTALLED”的提示,然后点击“关闭”以返回原界面;
    2.jpg
    图2 添加FastLED库
    在添加FastLED库之后,即可编写相应的控制程序,其操作方法为:
    1. 选取“文件”菜单下的“新建”选项,生成一个新文件;
    2. 在“项目”菜单的“加载库”下可见到“FastLED”选项,点击它即可在新文件中添加FastLED的头文件;
    3. 录入下列程序:
    #defineNUM_LEDS 1
    #defineDATA_PIN 5
    CRGBleds[NUM_LEDS];
    void setup() {
        FastLED.addLeds<NEOPIXEL,DATA_PIN>(leds, NUM_LEDS);  // GRBordering is assumed
    }
    void loop() {
      //灯珠显示红色
      leds[0] = CRGB::Red;
      FastLED.show();
      delay(500);
      // 灯珠显示绿色
      leds[0] = CRGB::Green;
      FastLED.show();
      delay(500);
      // 灯珠显示蓝色
      leds[0] = CRGB::Blue;
      FastLED.show();
      delay(500);
    }
    4. 编译并上传程序,则其运行效果如图4所示。
    3.jpg
    图3 完成编译与上传
    4.jpg
    图4运行效果(红绿蓝3色循环点亮)
    若使用图5所示的WS2812彩色灯带或灯环,则可以制作出更加丰富的显示效果。
    5.jpg   
    图5 WS2812灯带与灯环
    通过程序,可以控制灯环中的指定位置的若干灯以不同的色彩点亮,实现图6所示效果的程序为:
    #include"FastLED.h"
    #defineNUM_LEDS 12             // LED灯珠数量
    #define LED_DTA4                // Arduino输出控制信号引脚
    #defineLED_TYPE WS2812          // LED灯带型号
    #defineCOLOR_ORDER GRB         // RGB灯珠中红色、绿色、蓝色LED的排列顺序
    CRGBleds[NUM_LEDS];
    uint8_tmax_bright = 128;
    void setup() {
        delay(500);
        pinMode(LED_BUILTIN, OUTPUT);
        LEDS.addLeds<LED_TYPE, LED_DT,COLOR_ORDER>(leds, NUM_LEDS);  // 初始化光带
        FastLED.setBrightness(max_bright);                              // 设置光带亮度
    }
    void loop() {
         fill_solid(leds,3,CRGB(255,0,0));
         FastLED.show();
         fill_solid(leds+3,6,CRGB(0,255,0));
         FastLED.show();
         fill_solid(leds+9,3,CRGB(0,0,255));
         FastLED.show();
         delay(25);
    }
    6.jpg
    图6  颜色设置效果 (3红6绿3蓝效果)
    实现图7所示彩虹渐变效果的程序为:
    #include"FastLED.h"
    #defineNUM_LEDS 12
    #defineDATA_PIN A4
    CRGBleds[NUM_LEDS];
    uint8_tbeginHue = 0;
    uint8_tdeltaHue = 20;
    void setup() {
        delay(200);
        pinMode(LED_BUILTIN, OUTPUT);
        LEDS.addLeds<LED_TYPE, LED_DT,COLOR_ORDER>(leds, NUM_LEDS);  // 初始化光带
        FastLED.setBrightness(max_bright);                              // 设置光带亮度
    }
    void loop() {
         fill_rainbow(leds, NUM_LEDS, beginHue,deltaHue);
         FastLED.show();
         delay(25);
         digitalWrite(LED_BUILTIN, HIGH);
         delay(500);
         digitalWrite(LED_BUILTIN, LOW);
         delay(500);
    }
    7.jpg
    图7彩虹渐变效果

    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-11-19 12:42 , Processed in 0.123209 second(s), 16 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.