|
16| 1
|
[ESP8266/ESP32] Firebeetle 2 ESP32-C5 之 火车上的霓虹灯 |
|
本帖最后由 HonestQiao 于 2025-10-23 20:49 编辑 这几天出差,在火车上的时候,刷刷手机,看看Kindle,还是有些无趣。最后还是掏出了包里的Firebeetle 2 ESP32-C5,打开了而电脑,又找到了一个WS2812B灯环,做了一个火车上的霓虹灯。 ![]() ![]() 下面分享一下制作做的步骤。 一、硬件了解 ![]() 前边是 Firebeetle 2 ESP32-C5开发板 与扩展板,后边是WS2812B灯环。 Firebeetle 2 ESP32-C5就不多说了,单说下这个WS2812B灯环。 这个WS2812B灯环,是24颗灯珠的,每一颗都可以单独控制RGB三种颜色显示,共256*256*256种,约16万种颜色。 那么呢,这个灯环有24颗,(256*256*256)^24,一共有10^173种显示模式,能够让创客们体验到前所未有的显示快感! 另外,我又详细查了一下,已知宇宙中,恒星的数量,少于1*10^24颗。 所以呢,这个灯环所能带来的探索乐趣,是无穷无尽的,哪怕宇宙毁灭,也探索不到尽头。 为了方便控制这个灯环,我在灯环背面,粘接+焊接了一个ESP32-C3小板子。 这次Firebeetle 2 ESP32-C5通过ESP-Now,来与ESP32-C3通信,从而控制WS2812B灯环。 二、程序逻辑 我设计的逻辑处理流程如下: ![]() 两者通信使用的是ESP-Now,参考了Arduino中ESP32下的ESP-Now 广播的例子: ![]() 因为是在火车上,所以我没有做复杂的逻辑。 基本逻辑就是,Firebeetle 2 ESP32-C5上的按键按一下,ESP32-C3控制的WS2812B灯环的彩虹渐变色就变换一下,如果按键双击,那么就快速变化一下。 三、扩展库 这次使用的开发环境是Arduino IDE,具体环境可参考:ESP32C5内测版(ECO1,v0.1)常用开发环境和工具的特殊处理方法 DF创客社区 在 Firebeetle 2 ESP32-C5 上运行的是Master,因为要检测按键,所以我使用到了OneButton扩展库: ![]() 在ESP32-C3上运行的是Slave,因为要控制WS2812B灯环,所以我使用FastLED扩展库: ![]() 四、程序代码 Master代码如下: ![]() ![]() 其中除了ESP-Now原有的通信逻辑外,其他用到核心调用如下: 1. OneButton对象和注册按键调用 ![]() ![]() 2. 按键处理 ![]() ![]() 在按键处理中,使用了下面的调用来通过ESP-Now发送消息: broadcast_peer.send_message((uint8_t *)data, sizeof(data)) Slave的代码如下: ![]() ![]() 其中除了ESP-Now原有的通信逻辑外,其他用到核心调用如下: 1. 颜色定义 ![]() 2. LED对象初始化 ![]() 3. 收到消息后,提取数值,并控制WS2812B灯环显示: ![]() 4. 控制WS2812B灯环逐渐熄灭: ![]() 五、运行效果 代码编写好后,分别烧录到Firebeetle 2 ESP32-C5和ESP32-C3。 Firebeetle 2 ESP32-C5 配置如下: ![]() 烧录运行后,串口日志输出如下: ![]() ESP32-C3配置如下: ![]() 烧录运行后,串口日志输出如下: ![]() 两端都运行后,在Firebeetle 2 ESP32-C5按键(单击或者双击),在ESP32-C3上就会收到信息,并控制WS2812B灯环。 实际的运行效果如下: 1. 基本测试: 2. 与飞驰的列车光影同行 3. 霓虹灯效 在飞驰的列车上,点亮我的的霓虹灯,引来乘务人员友好问候,前后座乘客热心注视,还有车厢小朋友好奇的围观,这趟旅程,格外有意思了。 |
|
源代码: Magic_Master: Firebeetle 2 ESP32-C5 Magic_Slave: ESP32-C3 |
Firebeetle 2 ESP32-C5 之 火车上的霓虹灯_源代码.zip
4.46 KB, 阅读权限: 10, 下载次数: 0
编辑选择奖
沪公网安备31011502402448© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed