聚丰项目 > 基于RTT与AB32VG1的智能彩灯与OLED屏显示
基于RT-Thread实时操作系统,以多线程的方式轮询调度RGB彩灯闪烁与OLED屏幕显示,同时使用FinSH组件通过串口与RTT系统进行交互。
烟火里的尘埃7
分享烟火里的尘埃7
团队成员
万兆华 学生
硬件主要采用:
AB32VG1开发板
SSD1306单色OLED屏幕
USB转TTL模块
如上图所示,将OLED的SDA与SCL引脚分别连接至AB32VG1开发板的PE2与PE3引脚,USB转TTL模块的TX连接板子的RX1,RX连接板子的TX1。
使用env工具配置本次开发所需要的组件和软件包,在RT-Thread Studio软件中查看配置如下:
使用ssd1306软件包用模拟IIC协议驱动OLED屏幕,同时创建屏幕显示线程,入口函数功能主要为显示“RT-Thread”字样,tick配置为30。
RGB驱动主要操作GPIO,主要代码如下:
#define LED_R_PIN rt_pin_get("PE.1") #define LED_G_PIN rt_pin_get("PE.4") #define LED_B_PIN rt_pin_get("PA.1") //定义颜色枚举 typedef enum { white = 0, //白色 black = 1, //黑色 red = 2, //红 green = 3, //绿 blue = 4, //蓝色 yellow= 5, //黄色 violet= 6, //紫色 cyan = 7, //青色 }led_t; void led_init(void) { rt_pin_mode(LED_R_PIN, PIN_MODE_OUTPUT); rt_pin_mode(LED_G_PIN, PIN_MODE_OUTPUT); rt_pin_mode(LED_B_PIN, PIN_MODE_OUTPUT); } /** * @brief RGB led color control * @param color * @return */ void led_color(led_t color) { switch(color) { case white: rt_pin_write(LED_R_PIN, PIN_LOW); rt_pin_write(LED_G_PIN, PIN_LOW); rt_pin_write(LED_B_PIN, PIN_LOW); break; case black: rt_pin_write(LED_R_PIN, PIN_HIGH); rt_pin_write(LED_G_PIN, PIN_HIGH); rt_pin_write(LED_B_PIN, PIN_HIGH); break; case red: rt_pin_write(LED_R_PIN, PIN_LOW); rt_pin_write(LED_G_PIN, PIN_HIGH); rt_pin_write(LED_B_PIN, PIN_HIGH); break; case green: rt_pin_write(LED_R_PIN, PIN_HIGH); rt_pin_write(LED_G_PIN, PIN_LOW); rt_pin_write(LED_B_PIN, PIN_HIGH); break; case blue: rt_pin_write(LED_R_PIN, PIN_HIGH); rt_pin_write(LED_G_PIN, PIN_HIGH); rt_pin_write(LED_B_PIN, PIN_LOW); break; case yellow: rt_pin_write(LED_R_PIN, PIN_LOW); rt_pin_write(LED_G_PIN, PIN_LOW); rt_pin_write(LED_B_PIN, PIN_HIGH); break; case violet: rt_pin_write(LED_R_PIN, PIN_LOW); rt_pin_write(LED_G_PIN, PIN_HIGH); rt_pin_write(LED_B_PIN, PIN_LOW); break; case cyan: rt_pin_write(LED_R_PIN, PIN_HIGH); rt_pin_write(LED_G_PIN, PIN_LOW); rt_pin_write(LED_B_PIN, PIN_LOW); break; default: break; } }
通常串口可以直接与OS交互,交互界面图如下:
可以查看当前的内核线程与用户线程、CPU占用率、线程状态等信息。
项目代码开源地址(gitee):https://gitee.com/Isaac_wan/rtt.git
最后演示效果如视频所示,RGB以7种不同的颜色轮询显示(算上黑色就是8种/doge),屏幕上显示“RT-Thread”。
(5.02 MB)下载