本帖最后由 GalaIO 于 2015-9-27 13:46 编辑
. B' o. b& E q$ l6 n) o0 p
; }: C* l' Q' ?$ ~- S- M 上次的帖子简单介绍了MICOKIT的调试环境和使用KEIL的基本开发流程以及简单开发框架,下载我们对MICO的编程框架有一定认识,值得一提是,在MICO发布的sdk中,有一个demo的文件夹,里面有好多的现成例子,可以知道我们使用MICO的外设资源。位置如下。
( V, z# n6 z4 @1 ~6 y/ c$ {
7 s1 M6 G+ q, `. l下图是MICO给出的RGB_LED的原理图和简单时序:
% r) e/ o# P2 ~$ {8 O0 z3 K$ U
如下是一个简单的使用rgb_led的例子。
; n5 c; z4 I% J9 ~- u" D9 d* V
% q8 p+ b7 f. @) r! \
#include "MICO.h"
#include "micokit_ext.h"
+ x, E. P& s; ^' l; `! A$ r S
#define ext_rgb_led_log(M, ...) custom_log("EXT", M, ##__VA_ARGS__)
6 k+ z+ d# [% r) a! p* ^int applica
tion_start( void )
{
ext_rgb_led_log("rgb led conrtol demo(RGB_MODE)");
/*init RGB LED(P9813)*/
rgb_led_init();
while(1)
{
/*open red led,#FF0000*/
rgb_led_open(255, 0, 0);
mico_thread_sleep(1);
/*open green led #00FF00*/
rgb_led_open(0, 255, 0);
mico_thread_sleep(1);
/*open blue led,#0000FF*/
rgb_led_open(0, 0, 255);
mico_thread_sleep(1);
}
}
- K. b1 ?# p9 G; _9 a
" M5 J* W& p# e2 d
2 W' D& t* C. Cled初始化:
' x0 p0 b( l, s8 o3 p" h) F( Gled的RGB颜色配置:
9 ?0 }3 d! O; c1 p
如上的函数,传入RGB颜色模型的三个值,对于RGB模型来说,RGB模型是由真实的人眼颜色匹配实验得出的模型,RGB分别表示那三个固定波长的光的份量。RGB是基于色光混合的原理设计的,是一种以硬件为导向的色彩模型,它描述了显示器的
电子枪打在Red红、Green绿、Blue蓝三色发光极上的显色方式。当红绿蓝三色光的亮度均为最大值(255)的时候,屏幕上重现的颜色就是最亮的白色,都为0的时候,结果就是黑色。
& G/ @" m, o0 W! `5 ?& A如果想要得出刚才提到的“海棠红”,我们就要把红光调到最亮,把绿光的亮度调到1/5左右,再把蓝光的亮度调到1/3左右,如下图:
' E- T3 ? s! t2 F' K- m
/ r6 Z6 V1 B) P7 Z* T4 g7 r
这是我在互联网上找到的颜色,都比较常用,一共有200多种颜色。
* s+ m I: F4 a/ P! ]
5 e9 J1 e" b. s7 _7 _
1 L. v5 r0 E: O3 y( u" u然后把他们生成代码了。
! y) Y1 o( p$ ]7 [; F* g; G9 D" [) l
5 ^- R# w: u1 u8 F6 Y- M' {
$ E7 T5 A/ f) c* K9 Q3 g7 T% f& i0 C# h! y. T! a
8 K, S, N+ G2 E; k" d
+ b' _- e1 V* z- ?& n# }5 r
现在我们就可以用他们来生成各种颜色了。
! Y1 C- \ T9 w9 C6 h3 K
* N3 L1 |2 N% f: p" J
p( V7 I, v! E0 P
最后,通过修改RGB的某一分量,然后通过渐变方式就获得呼吸灯了哦~~相当绚丽~~
5 `8 o. R4 h9 c0 }$ |0 ]% i5 r" a O
7 L9 [0 O$ F5 x/ R" M7 E: |+ _. f' s( L0 ~! V