聚丰项目 > 基于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)下载