打印
[应用相关]

RGB LED--AT_SURF案例No.2

[复制链接]
1489|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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. 硬件资源使用


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


软件设计
1) 使用普通GPIO 配置RGB LED 流程
配置GPIO 为推挽输出
配置GPIO 输出高低以控制RGB LED
2) 代码介绍
main 函数代码描述
int main(void)
{
        /* 初始化系统时钟 */
        system_clock_config();
        /* 初始化中断优先级分组 */
        nvic_priority_group_config(NVIC_PRIORITY_GROUP_4);
        /* 初始化延时函数 */
        delay_init();
        /* 初始化LCD */
        lcd_init(LCD_DISPLAY_VERTICAL);
        /* 显示信息 */
        lcd_string_show(10, 20, 200, 24, 24, (uint8_t *)"RGB LED Test");
        /* 初始化RGB LED */
        rgb_led_init();
        /* LED 关闭 */
        rgb_led_off();
        rgb_led_set(RGB_LED_GBLUE);
        delay_ms(500);
        rgb_led_set(RGB_LED_PURPLE);
        delay_ms(500);
        rgb_led_set(RGB_LED_WHITE);
        delay_ms(500);
        rgb_led_set(RGB_LED_YELLOE);
        delay_ms(500);
        while(1)
        {
                rgb_led_toggle(RGB_LED_RED);
                delay_ms(500);
        }
}

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

void rgb_led_set(uint16_t color)函数代码描述
/**
* @brief set rgb led color,and turn on.
* @param color: rgb led corlor
* this parameter can be one of the following values:
* - RGB_LED_RED
* - RGB_LED_GREEN
* - RGB_LED_BLUE
* - RGB_LED_YELLOE
* - RGB_LED_GBLUE
* - RGB_LED_PURPLE
* - RGB_LED_WHITE
* @retval flag_status (SET or RESET)
*/
void rgb_led_set(uint16_t color)

void rgb_led_off(void)函数代码描述
/**
* @brief turn off reg led.
* @param none
* @retval none
*/
void rgb_led_off(void)

void rgb_led_toggle(uint16_t color)函数代码描述
/**
* @brief reg led toggle.
* @param none
* @retval none
*/
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 | 只看该作者
这个是哪个的屏幕呢?

使用特权

评论回复
5
kkzz| | 2022-5-28 14:54 | 只看该作者
AT_SURF是什么芯片?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

33

主题

69

帖子

3

粉丝