[应用相关] RGB LED--AT_SURF案例No.2

[复制链接]
 楼主| vt2017 发表于 2022-5-18 19:43 | 显示全部楼层 |阅读模式
RGB LED--AT_SURF案例No.2
简介
RGB LED 灯是以红绿蓝三色混光而成。以三原色共同交集成像,此外,也有蓝光LED 配合黄色荧光 粉,以及紫外LED 配合RGB 荧光粉。某些LED 背光板出现的颜色特别清楚而鲜艳,甚至有高画质电视的程度,这种情形,正是RGB 的特色,标榜红就是红、 绿就是绿、蓝就是蓝的特性,在光的混色上,具备更多元的特性。

RGB 是从颜色发光的原理来设计定的,通俗点说它的颜色混合方式就好像有红、绿、蓝三盏灯,当它们的光相互叠合的时候,色彩相混,而亮度却等于两者亮度之总和,越混合亮度越高,即加法混合。
红、绿、蓝三盏灯的叠加情况,中心三色最亮的叠加区为白色,加法混合的特点:越叠加越明亮。红、绿、蓝三个颜色通道每种色各分为256 阶亮度,在0 时“灯”最弱——是关掉的,而在255 时“灯”最亮。当三色灰度数值相同时,产生不同灰度值的灰色调,即三色灰度都为0 时,是最暗的黑色调;三色灰度都为255 时,是最亮的白色调。

RGB 颜色称为加成色,因为您通过将 R、G 和 B 添加在一起(即所有光线反射回眼睛)可产生白色。加成色用于照明光、电视和计算机显示器。例如,显示器通过红色、绿色和蓝色荧光粉发射光线产生颜色。绝大多数可视光谱都可表示为红、绿、蓝 (RGB) 三色光在不同比例和强度上的混合。这些颜色若发生重叠,则产生青、洋红和黄。

RGB LED 控制主要有两种方法:
方式一:普通GPIO 配置RGB LED 流程(常规模式)
PB10 控制RED 开闭,PD13 控制GREEN 开闭,PB5 控制BLUE 开闭。也可以通过两两组合,或三三组合,以达到控制不同颜色的目的。
该方式仅使用GPIO,不占用其他外设,控制简单,但不能进行亮度调节。
方式二:TMR 配置RGB LED 流程(呼吸灯模式)
TMR2 通道3 控制RED 开闭和亮度,TMR4 通道2 控制GREEN 开闭和亮度,TMR3 通道2 控制BLUE 开闭和亮度。不同通道组合以显示不同颜色,TMR 通道的占空比以控制RGB LED 亮度。
该方式需要使用GPIO 和TMR,可进行颜色和亮度调节。
本例程主要实现了第一种控制方式。

资源准备
硬件环境:
对应产品型号的AT-SURF-F437 Board
软件环境:
AT32F435_437_Firmware_Library_V2.x.x\project\at_start_f437\ examples\rgb_led

硬件设计
本案例使用的硬件资源有LCD 显示屏、RGB-LED 对应的引脚如下:
表2. 硬件资源使用
962006284d9eaae042.png

对应的电路原理如下:
图6. RGB-LED 电路原理图
103536284da0abee0d.png

软件设计
1) 使用普通GPIO 配置RGB LED 流程
配置GPIO 为推挽输出
配置GPIO 输出高低以控制RGB LED
2) 代码介绍
main 函数代码描述
  1. int main(void)
  2. {
  3.         /* 初始化系统时钟 */
  4.         system_clock_config();
  5.         /* 初始化中断优先级分组 */
  6.         nvic_priority_group_config(NVIC_PRIORITY_GROUP_4);
  7.         /* 初始化延时函数 */
  8.         delay_init();
  9.         /* 初始化LCD */
  10.         lcd_init(LCD_DISPLAY_VERTICAL);
  11.         /* 显示信息 */
  12.         lcd_string_show(10, 20, 200, 24, 24, (uint8_t *)"RGB LED Test");
  13.         /* 初始化RGB LED */
  14.         rgb_led_init();
  15.         /* LED 关闭 */
  16.         rgb_led_off();
  17.         rgb_led_set(RGB_LED_GBLUE);
  18.         delay_ms(500);
  19.         rgb_led_set(RGB_LED_PURPLE);
  20.         delay_ms(500);
  21.         rgb_led_set(RGB_LED_WHITE);
  22.         delay_ms(500);
  23.         rgb_led_set(RGB_LED_YELLOE);
  24.         delay_ms(500);
  25.         while(1)
  26.         {
  27.                 rgb_led_toggle(RGB_LED_RED);
  28.                 delay_ms(500);
  29.         }
  30. }

void rgb_led_init(void)函数代码描述
  1. /**
  2. * [url=home.php?mod=space&uid=247401]@brief[/url] initialize rgb led
  3. * @param none
  4. * @retval none
  5. */
  6. void rgb_led_init(void)

void rgb_led_set(uint16_t color)函数代码描述
  1. /**
  2. * @brief set rgb led color,and turn on.
  3. * @param color: rgb led corlor
  4. * this parameter can be one of the following values:
  5. * - RGB_LED_RED
  6. * - RGB_LED_GREEN
  7. * - RGB_LED_BLUE
  8. * - RGB_LED_YELLOE
  9. * - RGB_LED_GBLUE
  10. * - RGB_LED_PURPLE
  11. * - RGB_LED_WHITE
  12. * @retval flag_status (SET or RESET)
  13. */
  14. void rgb_led_set(uint16_t color)

void rgb_led_off(void)函数代码描述
  1. /**
  2. * @brief turn off reg led.
  3. * @param none
  4. * @retval none
  5. */
  6. void rgb_led_off(void)

void rgb_led_toggle(uint16_t color)函数代码描述
  1. /**
  2. * @brief reg led toggle.
  3. * @param none
  4. * @retval none
  5. */
  6. void rgb_led_toggle(uint16_t color)

下载验证
上电后可以观察到RGB LED 以常规模式进行不同颜色切换。


海滨消消 发表于 2022-5-19 16:47 来自手机 | 显示全部楼层
这种灯和普通的led灯相比有何优势
 楼主| vt2017 发表于 2022-5-23 19:35 | 显示全部楼层
海滨消消 发表于 2022-5-19 16:47
这种灯和普通的led灯相比有何优势

可调色
modesty3jonah 发表于 2022-5-28 14:24 | 显示全部楼层
这个是哪个的屏幕呢?
kkzz 发表于 2022-5-28 14:54 | 显示全部楼层
AT_SURF是什么芯片?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

33

主题

69

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部

33

主题

69

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部