聚丰项目 > 基于RTT与AB32VG1的智能彩灯与OLED屏显示

基于RTT与AB32VG1的智能彩灯与OLED屏显示

基于RT-Thread实时操作系统,以多线程的方式轮询调度RGB彩灯闪烁与OLED屏幕显示,同时使用FinSH组件通过串口与RTT系统进行交互。

烟火里的尘埃7 烟火里的尘埃7

分享
2 喜欢这个项目
团队介绍

烟火里的尘埃7 烟火里的尘埃7

团队成员

万兆华 学生

分享
项目简介
基于RT-Thread实时操作系统,以多线程的方式轮询调度RGB彩灯闪烁与OLED屏幕显示,同时使用FinSH组件通过串口与RTT系统进行交互。
硬件说明

硬件主要采用:

  1. AB32VG1开发板

  2. SSD1306单色OLED屏幕

  3. USB转TTL模块

IMG_20220115_232424.jpg

如上图所示,将OLED的SDA与SCL引脚分别连接至AB32VG1开发板的PE2与PE3引脚,USB转TTL模块的TX连接板子的RX1,RX连接板子的TX1。


软件说明

使用env工具配置本次开发所需要的组件和软件包,在RT-Thread Studio软件中查看配置如下:

image.png

使用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交互,交互界面图如下:

image.png

可以查看当前的内核线程与用户线程、CPU占用率、线程状态等信息。

项目代码开源地址(gitee):https://gitee.com/Isaac_wan/rtt.git

演示效果

最后演示效果如视频所示,RGB以7种不同的颜色轮询显示(算上黑色就是8种/doge),屏幕上显示“RT-Thread”。

附件

(5.02 MB)下载

评论区(0 )