聚豐項目 > 基于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)下載