本次我们打算分析一下如何点亮一颗RGB灯
这个例程,等分析完之后,再去分析一下蓝牙或者wifi,做一个diy。打开之后
这是工程代码,这次案列的目的就是要点亮开发板上面的RGB灯。
我以前一直以为中间的这个芯片是ESP32C3,最近才发现他是串口转USB芯片呜呜呜。最上面的模组里面才包含一个esp32-c3芯片。
通过官方手册了解到,这个RGB灯对应的是第8个I/O口做控制。
接下来需要好好的了解一下ws2812的工作原理
下面这个是ws2812的官方地址:
[https://d2j2m4p6r3pg95.cloudfront.net/module_files/led-cube/assets/datasheets/WS2812B.pdf]
然后兄弟萌可以看看下面这个贴主的资料很好
[https://blog.csdn.net/zhuoqingjoking97298/article/details/120871808]
知道了rgb灯0,1的变化需要用高低电平的变化的时间段来表示
同时也知道了点亮一个灯的话需要需要发送24个bit,然后reset 50ms以上,不停的如此。
接下来就是开始阅读代码,在阅读代码之前,需要使用到乐鑫官方下载资料看看rmt这一块这里需要自己去看看
跳到RMT_DEFAULT_CONFIG_TX中
可以容易的了解是config的配置。
rmt_mode : 选择rmt作为发送还是接受
channel: 选择通道,esp32c3有2个接收,二个发送。为0,1,2,3
**gpio_num:选择做rmt输出的引脚口
clk_div: 设置分频计数器的系数
*mem_block_num:*设置rmt使用块的个数,rmt一共有4个,后面就对应在这个块里面的数据做编码发送
*flags:*设置信号是否反转和选择rmt时钟源
这里面我们用到的是发送,所以只需了解rmt_tx_config_t是什么就可以了
***carrier_freq_hz:***发送载波的频率
***carrier_level:***施加载波时RMT输出的电平
idle_level 当rmt空闲时,输出的电平
***carrier_duty_percent:***空闲时低平占比率