本帖最后由 GalaIO 于 2015-9-27 13:46 编辑
. I3 f# w: h& [* K
C, X7 u9 g+ D2 b; Z. e 上次的帖子简单介绍了MICOKIT的调试环境和使用KEIL的基本开发流程以及简单开发框架,下载我们对MICO的编程框架有一定认识,值得一提是,在MICO发布的sdk中,有一个demo的文件夹,里面有好多的现成例子,可以知道我们使用MICO的外设资源。位置如下。
& D; c( {1 a" y; G) t
3 j# M3 i5 K: f6 d3 _
下图是MICO给出的RGB_LED的原理图和简单时序:
% g% A' |' G0 n
如下是一个简单的使用rgb_led的例子。
7 }' A7 l1 A+ f
: g$ y+ ` x0 A- _
#include "MICO.h"
#include "micokit_ext.h"
$ w& b" A# m% g2 ^ Z5 _
#define ext_rgb_led_log(M, ...) custom_log("EXT", M, ##__VA_ARGS__)
8 ~8 U9 y+ A+ ]/ @, ]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);
}
}
, ]. d! X: _7 @' d! C+ G7 \
/ J0 L ^7 A, i- K5 [5 a8 P9 B Y2 V; a' G3 K1 a5 w
led初始化:
/ ], {( ]" z' e5 _# n9 Z8 S
led的RGB颜色配置:
" g p% U, {7 U1 I
如上的函数,传入RGB颜色模型的三个值,对于RGB模型来说,RGB模型是由真实的人眼颜色匹配实验得出的模型,RGB分别表示那三个固定波长的光的份量。RGB是基于色光混合的原理设计的,是一种以硬件为导向的色彩模型,它描述了显示器的
电子枪打在Red红、Green绿、Blue蓝三色发光极上的显色方式。当红绿蓝三色光的亮度均为最大值(255)的时候,屏幕上重现的颜色就是最亮的白色,都为0的时候,结果就是黑色。
# s9 k/ f: l, u9 U! P" L6 c' F如果想要得出刚才提到的“海棠红”,我们就要把红光调到最亮,把绿光的亮度调到1/5左右,再把蓝光的亮度调到1/3左右,如下图:
7 \" ?2 n' Y6 Q- C
/ v0 ^0 U+ y2 d! `) }这是我在互联网上找到的颜色,都比较常用,一共有200多种颜色。
0 W, Z; m1 c6 k% @( d
, D. e' Y+ R' t4 X: \$ T" @; |* S
6 E& J( Y- a, Y) s9 A" s: f
然后把他们生成代码了。
1 a- Z" P' R* H' J0 J; d
. w C% }( j: Q# k# ]9 d
* R5 a2 h" g3 H7 F! k& i0 S( A. `+ w3 Y
' ?, J2 P! I# s7 D# j
: Y3 k' j) _0 R' w4 D) B现在我们就可以用他们来生成各种颜色了。
5 X: m: C1 y: w9 q1 ?9 ], c' U
. u" z9 _0 x! y) `* K
2 g. V: u4 L! {) M- V, ?6 ?1 x( N
最后,通过修改RGB的某一分量,然后通过渐变方式就获得呼吸灯了哦~~相当绚丽~~
/ V! A: V+ t- g* A6 d
( @3 W$ b* `$ ]1 s% b7 d$ @
- Y- v4 p; O2 M+ F% }1 ]8 Z' u" [* W A" \3 [