0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【DFRobot Beetle ESP32-C3开发板试用体验】Arduino编程控制WS2812B炫彩LED

开发板试用精选 来源:开发板试用 作者:电子发烧友论坛 2022-11-28 13:56 次阅读

本文来源电子发烧友社区,作者:HonestQiao, 帖子地址:https://bbs.elecfans.com/jishu_2287670_1_1.html


演示视频(开发板体验视频,详见作者原文链接内容)

我最近分享的一篇文章中Debian-StarFive下的SPI驱动WS2812B炫彩灯珠中,在Linux下,通过SPI来驱动WS2812B炫彩LED灯珠,感兴趣的同学可以前往了解,其中讲了给WS2812B发送数据的具体情况。
而在DFRobot Beetle ESP32-C3的Arduino编程中,得益于Arduino IDE强大的扩展功能,我们可以用第三方的扩展库,来很方便的控制WS2812B。
在这个分享中,使用的是Adafruit_NeoPixel,关于其详细资料,可以查看官方页面:Adafruit NeoPixel Library

WS2812B炫彩LED可以很灵活的组成各种实际所需要的形状,如条带状、环形、点阵,单颗也可以使用。
我这次所使用的,是一块8*8点阵的WS2812B炫彩LED点阵板:
pYYBAGKvOzCAYjsoAAGHZHxuhJ8484.jpg


背面结构如下:
poYBAGKvOzGAYobAAAC2W2vty5c595.jpg


WS2812B炫彩LED很神奇,不管是1颗LED的控制,还是上千颗LED的控制,都只需要1根数据线即可,也就是上面板子背面的DIN。
多块这样的单体,还能够连接起来,前者的DOUT,连接到后者的DIN。实际上,相邻的两颗之间,也是这么连接的。


这款8*8的点阵板,每一颗灯珠都是可以单独控制的,所以有先后顺序,按照下面的顺序进行控制。
poYBAGKvOzKAAfekAAHLPWhiNSQ025.jpg


通过1根线,发送控制数据给WS2812B,需要较高的数据发送速度,所以通常使用SPI接口发送。
查看DFRobot Beetle ESP32-C3的官方资料,了解引脚的具体定义情况:
pYYBAGJnriyAXpBwAATcwBU8gTc781.png


通过上图,可以了解到,D6可复用为SPI的MOSI,用于发送数据,因此,可以将该引脚与WS2812B点阵板的DIN连接。

另外,WS2812B的工作电压为5V,而每个红色、绿色和蓝色LED需要大约20mA,或者在全亮度下每个LED总共60mA,如果8*8共64颗灯珠都点到最亮,那将需要60*64=3840A的电流,这样严重超过DFRobot Beetle ESP32-C3的输出电流,产生不可预料的结果。因为 DFRobot Beetle ESP32-C3 的最大输出电流为500 mA。
所以,使用WS2812B的时候,如果是单颗的,使用开发板自身供电,没有问题。如果使用多颗,则一定要使用专门的外接电源
在我的这个实例中,我使用了一个USB2TTL的电源引脚,来为WS2812B点阵供电。

最终,具体的连线如下:
poYBAGKvRIyAZz87AAsCWRH7pi8878.png


做好以上连线后,就可以使用Arduino IDE进行编程了。
在具体编程之前,需要现在Arduino IDE中安装Adafruit NeoPixel。
在Arduino IDE的库管理界面中,搜索Adafruit NeoPixel并安装如图所示的扩展库即可:
pYYBAGKvRWqAeJaIAAJnc69wlCE453.png


在了解了 Adafruit NeoPixel 的具体使用后,编写如下的程序:
代码文件:(源码下载文件,见作者原文)

代码展示:

poYBAGKvRhGASobyAAjBWCX7tmw928.png


编写好代码,按照以下参数设置,编译下载,就能看到效果:
poYBAGKvR36AFAhwAAHRfMDAJeg016.png


在上述代码中,包含了如下三个部分的内容:
  • 串口调试信息输出:使用较为简单,不详细说明,可以自己查看Arduino资料了解
  • 控制板载LED:端口为D10,根据idx奇偶点亮或者熄灭
  • Adafruit NeoPixel 控制WS2812B

Adafruit NeoPixel 部分的重点如下:
1. 初始化控制实例:


  1. Adafruit_NeoPixel pixels(NUMPIXELS, PIN_NEOPIXEL, NEO_GRB + NEO_KHZ800)
复制代码

传入的参数为LED灯珠数,控制引脚,以及信息传输的频率(不用修改)。
8*8的点阵,灯珠数为64各。
根据前面了解DFRobot Beetle ESP32-C3的资料和连线,控制引脚为D6

2. 开始控制:


  1. pixels.begin();
复制代码



3. 设置亮度:


  1. pixels.setBrightness(20);
复制代码

最大值为255,也就是0xff,表示最亮。

4. 设置全部灯珠的颜色:


  1. pixels.fill(0x000000);
复制代码

直接使用6位16进制数,每两位控制一个颜色,分别为RGB。
当使用0x000000时,表示没有颜色,也就是熄灭;
当使用0xFF0000是,表示红色R最亮。
此处的fill,表示控制所有的灯珠,而不是控制单个。

5. 清除当前灯珠颜色设置:


  1. pixels.clear();
复制代码



6. 设置单颗灯珠的颜色:


  1. pixels.setPixelColor(idx, pixels.Color(0, 0, 0));
复制代码

idx表示第几颗灯珠,从0开始;因为是8*8的点阵,所以最大值为63
而pixels.Color,分别则设置RGB三种颜色,最大为255,也就是0xff。

7. 让灯珠真正显示生效:


  1. pixels.show();
复制代码




代码的整体逻辑结构,也相对比较简单,就是每次循环,先熄灭上一颗灯珠,然后点亮当前指向的灯珠,颜色使用了一定的随机。
显示完成后,指向下一颗灯珠;如果达到了最大值,则从0重新开始。

下载完成后,打开串口,也可以看到输出的调试信息:
poYBAGKvS0OAZRMQAAxqP6I6UpM599.png


具体的呈现效果,如视频所示。

如果你还会一些数学函数的话,那么可以用数学函数,生成心形图案的坐标,对照到8*8点阵上,那么就能在情人节,给你最心爱的Ta,表达心意了。当然,如果不会没关系,可以提前用纸对着8*8点阵,描绘心形图案,记录下对应的LED灯珠的位置,在点亮对应的灯珠也是可以的。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Arduino
    +关注

    关注

    184

    文章

    6427

    浏览量

    184834
  • ESP32
    +关注

    关注

    13

    文章

    896

    浏览量

    15814
  • DFRobot
    +关注

    关注

    4

    文章

    1155

    浏览量

    9037
收藏 人收藏

    评论

    相关推荐

    ESP32-C3开发板设计指南

    首先是ESP32-C3只支持BLE,也就是数据是以packet出现的。不支持普通的蓝牙,也就是数据的处理的时候是可以字符串去操作的。
    的头像 发表于 01-26 11:10 1144次阅读
    <b class='flag-5'>ESP32-C3</b><b class='flag-5'>开发板</b>设计指南

    【LuckFox Pico Plus开发板免费试用】05_使用SPI驱动WS2812B

    使用SPI驱动WS2812B 前面把开发环境全部搭好,工具也都准备好了,这次就来做点小demo,正好手上有一个WS2812B的小灯条,上面有16颗灯珠,就想到用Luckfox Pico来控制
    发表于 10-29 19:15

    快来!炫酷好玩的像素时钟&amp;音乐频谱,合宙ESP32-C3开发板创意DIY分享

    ,还要特别 分享 @ 亚里士不可得 大佬 的开源佳作—— 使用合宙ESP32-C3开发板自制 像素时钟音乐频谱。 在变幻的时间和跳跃的频谱中,开启属于你的秋日浪漫…… 像素时钟音乐频谱 开源 分享 本项目以合宙ESP32-C3
    的头像 发表于 10-20 14:55 823次阅读
    快来!炫酷好玩的像素时钟&amp;音乐频谱,合宙<b class='flag-5'>ESP32-C3</b><b class='flag-5'>开发板</b>创意DIY分享

    Banana Pi 开源硬件基于ESP32-S3开发的物联网开发板系列

    BPI-Centi-S3 是一个板载1.9英寸彩屏的小尺寸ESP32-S3开发板,适合用于彩色显示,交互控制,无线通信,传感器数据采集等物联网综合应用项目的
    发表于 09-27 17:10

    WS2812B灯多了怎么保证时序的正确?

    WS2812B灯多了,怎么保证时序的正确。
    发表于 09-20 08:14

    使用M032系列微控制器将WS2812B通过SPI0或USPI0的MOSI驱动到光RGB-LED

    应用:此样本代码是执行控制 SPI M032 传输协议,通过 USB HID 接口从PC 侧到驱动 WS2812B LED 条。 BSP 版本: M031 BSP CMSIS V3.03.000
    发表于 08-29 07:56

    ESP32-C3编程方式

    小结 本文通过环境搭建、外设编程、WiFi程序的演示,大致的描述了ESP32-C3编程方式。总的说起来,采用ESP-IDF的集成开发环境
    发表于 08-16 06:57

    【FireBeetle 2 ESP32-S3开发板体验】在Arduino中充分利用FireBeetle 2 ESP32-S3的16MB Flash做SPIFFS

    DFRobot提供的这款 FireBeetle 2 ESP32-S3 开发板,从官方WiKi上,可以了解到详细的硬件信息: 处理器:Xtensa® 双核32位LX7微处理器 主频:240 MHz
    发表于 08-02 09:55

    【FireBeetle 2 ESP32-S3开发板体验】001:开箱+搭建Arduino开发环境

    、FireBeetle 2 Board ESP32 S3引脚示意该开发板相关资料在官方页面都有提供,内容非常详细,对开发者非常友好。开发板
    发表于 07-29 22:22

    【FireBeetle 2 ESP32-S3开发板体验】测评1_搭建开发环境

    第1章 开发板开箱以及开发环境搭建 感谢电子发烧友社区提供的测评机会,参加DFRobot 的FireBeetle 2 ESP32-S3开发板
    发表于 07-29 21:40

    【FireBeetle 2 ESP32-S3开发板体验】时间显示 基于ssd1306 I2C 调用开源库 事半功倍

    时间显示 基于ssd1306 I2C 调用开源库 事半功倍 简介 FireBeetle 2 ESP32-S3可以使用Arduino IDE、ESP-IDF、MicroPython进行
    发表于 07-29 10:04

    什么是WS2812BWS2812B灯带是怎么连接的呢?

    WS2812B是一款全彩LED控制IC,单总线控制,何为单总线我的理解就是数据线在一根线上传输的控制方式就是单总线。
    的头像 发表于 07-08 14:53 6747次阅读
    什么是<b class='flag-5'>WS2812B</b>?<b class='flag-5'>WS2812B</b>灯带是怎么连接的呢?

    ESP32-C3旋钮开发板演示

    ESP32
    YS YYDS
    发布于 :2023年07月07日 19:40:50

    ESP32-C2开发板 8684 智能开关例程

    ESP32-C3开发板开发演示
    的头像 发表于 06-29 14:13 492次阅读
    <b class='flag-5'>ESP32</b>-C2<b class='flag-5'>开发板</b>  8684   智能开关例程

    ESP8266如何运行64个ws2812B LED

    这是一个由运行 LUA 的 ESP8266 驱动的 RGB 字时钟。ESP8266 运行 64 个 ws2812B LED。 现实生活中的颜色看起来更清晰。 它的特点 - 如果它无法连
    发表于 05-24 06:36