|
话说收到 [MicroKit-3288] 后就一直出差,看到大家都有作品出来 赶紧折腾下别落了大队伍0 j4 s' \1 m2 N( i, w | 微信控制RGB的还是有些复杂 暂时没弄通, 索性先来个 根据光线强度 控制RGB灯的小实验吧! ~7 u( ]0 b, d/ v; g1 B 实验目的: 1、采集光线强度传感器数据 2、根据光线强度 改变 RGB灯的亮度 3、通过KEY1、KEY2来调整 RGB的色调& h0 X" {2 [: k) ~ 4、OLED屏的信息显示; ~' Z& {6 z4 ^/ f# c' Y5 V9 J 以上都是最基本的功能,但拿到庆科的SDK源码后 发现程序封装的层较多 阅读起来还是有些繁琐,但熟悉了后,移植起来会很方便+ l3 q0 `6 v3 G . t2 x1 o" j4 U& v 实验步骤: 1、下载官方SDK_MiCOKit_V2.2.0.6_Beta 2、选择 MiCokit_Enjoy-Micokit-3288 工程 3、在MicoEntrace.c 增加如下函数 #ifdef USE_MiCOKit_EXT! r; f/ K9 D1 K# n! u ~ if(MicoShouldEnterTestMode()==true){ mico_log( "Enter test mode by user button" ); micokit_ext_mfg_test(context); // MicoKit-EXT board mfg test2 ~0 C# U( O5 d$ k" y7 T8 H }! k" }5 [4 k% n1 B1 m9 H #endif micokit_ext_mfg_Mytest(context); //20150819 ++ //新增加的函数; e9 P# a; A4 o 4、Micoket_ext_mfg.c函数增加 micokit_ext_mfg_Mytest(context); 实体# a) e5 |8 b+ ^+ N+ s6 l T& }5 O 7 e, s: A* [2 t! j void micokit_ext_mfg_Mytest(mico_Context_t *inContext) { OSStatus err = kUnknownErr; char str[64] = {'\0'};: G0 t8 m9 K# @9 W ! o8 c5 @0 ]9 D% B. q1 E; L3 Y int rgb_led_hue = 0;- D. R, K% s2 @7 t4 _1 D , ~6 \& G0 E) _( L. h0 E int light_ret = 0;6 s4 t: L" t. g0 U uint16_t light_sensor_data = 0;& o7 o4 M+ j% h' I+ O% b( R: D / C! D# R _1 g/ H' p( L7 h0 o8 c UNUSED_PARAMETER(inContext);0 N5 R, e$ ]3 D3 O2 ?" n mico_rtos_init_semaphore(&mfg_test_state_change_sem, 1); err = MICOAddNotification( mico_notify_WIFI_SCAN_COMPLETED, (void *)mico_notify_WifiScanCompleteHandler );3 o% |- Q/ E# I! `8 B. z require_noerr( err, exit );6 y* c( z. B* F 8 o/ P1 p- R' F- l& B; ] //获取当前light sensor value( u% F! T; \8 m4 Y //根据 LightValue 值改变 RGB灯亮度 //按key1、key2键 分别切换 RGB灯的颜色2 H8 N2 M9 V' T; P2 e# O+ z3 u6 u user_key1_init();9 e3 f7 d0 J+ B5 {4 T user_key2_init(); while(1); Y0 H" G) S4 L* G. T8 v { //while(kNoErr != mico_rtos_get_semaphore(&mfg_test_state_change_sem, 0))* B: ~6 U, @/ i' f% N {+ K; @! n6 R% { light_ret = light_sensor_read(&light_sensor_data); 6 q) n4 o& F) n } //若key2按下 则将颜色 rgb_led_hue+10+ V8 W) n5 d# k6 {/ J/ ?( G if( MicoGpioInputGet((mico_gpio_t)USER_KEY2)==false) { rgb_led_hue+=10; }3 a: C5 C2 c5 X7 g if(rgb_led_hue >360) { rgb_led_hue=0; }" Z$ R& Q& @/ l //若key1按下 则将颜色 rgb_led_hue-109 r0 b, y k) \. \+ q8 M" R9 s$ J if( MicoGpioInputGet((mico_gpio_t)USER_KEY1)==false)3 }* t8 x" l, ? { 5 G$ L4 B, }+ H- S: m5 t) k if(rgb_led_hue>10) { rgb_led_hue-=10; } else6 }) C. K; I1 E) {$ M4 {, s/ v { rgb_led_hue =360; }" P# v2 R+ l/ Y- U }+ k+ f) ~9 B( U( s X8 U 5 M3 G) X. @; I7 U/ | f if(light_ret==0) //光线传感器数据 读取成功 $ p- c1 C! A& \1 L% ` f9 \ { 0 @3 r( w# f' ?" ]" T) v9 p light_ret =(light_sensor_data-1300)/5;; Z7 L7 {8 h) L2 A- O3 T0 f+ X* H" S hsb2rgb_led_open(rgb_led_hue, 80, light_ret); }0 L$ B2 F W# S3 q1 m- r memset(str, '\0', sizeof(str));5 }# \! ~$ ^& x- z: x sprintf(str,"My_test: #43"); 7 u: k4 D3 e: d' C F( Y+ [ OLED_ShowString(OLED_DISPLAY_COLUMN_START, OLED_DISPLAY_ROW_1, (uint8_t*)str);! J5 e$ ]$ F9 M. _. r( ^ memset(str, 0x00, sizeof(str)); sprintf(str,"Light: %d",light_sensor_data); OLED_ShowString(OLED_DISPLAY_COLUMN_START, OLED_DISPLAY_ROW_2, (uint8_t*)str);* B1 A; i$ A8 }9 a: p0 U' X memset(str, 0x00, sizeof(str));; g8 [4 ?. z! P9 t sprintf(str,"Bright: %d ",light_ret); 4 K2 {. D9 m3 Z7 P- ? OLED_ShowString(OLED_DISPLAY_COLUMN_START, OLED_DISPLAY_ROW_3, (uint8_t*)str); , M# I, C# {& _! w& k+ @$ |- M memset(str, 0x00, sizeof(str));, l) J# f/ y/ c( }8 q: X) c sprintf(str,"RgbHue: %d ",rgb_led_hue); 8 |. K, s% ]* T; }) w5 D: A: \ OLED_ShowString(OLED_DISPLAY_COLUMN_START, OLED_DISPLAY_ROW_4, (uint8_t*)str); ( N$ t3 B! ^4 m$ v mico_thread_msleep(50); }# s# @/ v) k) Y) l9 E; F4 q# [0 Q exit:; h# A% m2 @4 @' l9 p mico_thread_sleep(MICO_NEVER_TIMEOUT); } 7 ~8 a/ h& \* X6 T 编译下载后 就能实现上述预期功能 & x6 V/ v6 q" }. W 视频链接:; b* r/ R% U3 N( O https://v.youku.com/v_show/id_XMTMxMzc0MzY5Mg==.html8 |/ c1 \/ ^" s$ V 原作者:3466756555 感谢! |
| 不错。 |
微信公众号
手机版