聚豐項目 > 基于RTT與AB32VG1的智能彩燈與OLED屏顯示
基于RT-Thread實時操作系統(tǒng),以多線程的方式輪詢調(diào)度RGB彩燈閃爍與OLED屏幕顯示,同時使用FinSH組件通過串口與RTT系統(tǒng)進行交互。
 煙火里的塵埃7

 煙火里的塵埃7
團隊成員
萬兆華 學生
硬件主要采用:
AB32VG1開發(fā)板
SSD1306單色OLED屏幕
USB轉(zhuǎn)TTL模塊

如上圖所示,將OLED的SDA與SCL引腳分別連接至AB32VG1開發(fā)板的PE2與PE3引腳,USB轉(zhuǎn)TTL模塊的TX連接板子的RX1,RX連接板子的TX1。
使用env工具配置本次開發(fā)所需要的組件和軟件包,在RT-Thread Studio軟件中查看配置如下:

使用ssd1306軟件包用模擬IIC協(xié)議驅(qū)動OLED屏幕,同時創(chuàng)建屏幕顯示線程,入口函數(shù)功能主要為顯示“RT-Thread”字樣,tick配置為30。
RGB驅(qū)動主要操作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交互,交互界面圖如下:

可以查看當前的內(nèi)核線程與用戶線程、CPU占用率、線程狀態(tài)等信息。
項目代碼開源地址(gitee):https://gitee.com/Isaac_wan/rtt.git
最后演示效果如視頻所示,RGB以7種不同的顏色輪詢顯示(算上黑色就是8種/doge),屏幕上顯示“RT-Thread”。
(5.02 MB)下載