
话说收到 [MicroKit-3288] 后就一直出差,看到大家都有作品出来 赶紧折腾下别落了大队伍 微信控制RGB的还是有些复杂 暂时没弄通, 索性先来个 根据光线强度 控制RGB灯的小实验吧 实验目的: 1、采集光线强度传感器数据 2、根据光线强度 改变 RGB灯的亮度 3、通过KEY1、KEY2来调整 RGB的色调 4、OLED屏的信息显示 以上都是最基本的功能,但拿到庆科的SDK源码后 发现程序封装的层较多 阅读起来还是有些繁琐,但熟悉了后,移植起来会很方便 实验步骤: 1、下载官方SDK_MiCOKit_V2.2.0.6_Beta 2、选择 MiCokit_Enjoy-Micokit-3288 工程 3、在MicoEntrace.c 增加如下函数 #ifdef USE_MiCOKit_EXT if(MicoShouldEnterTestMode()==true){ mico_log( "Enter test mode by user button" ); micokit_ext_mfg_test(context); // MicoKit-EXT board mfg test } #endif micokit_ext_mfg_Mytest(context); //20150819 ++ //新增加的函数 4、Micoket_ext_mfg.c函数增加 micokit_ext_mfg_Mytest(context); 实体 void micokit_ext_mfg_Mytest(mico_Context_t *inContext) { OSStatus err = kUnknownErr; char str[64] = {'\0'}; int rgb_led_hue = 0; int light_ret = 0; uint16_t light_sensor_data = 0; UNUSED_PARAMETER(inContext); mico_rtos_init_semaphore(&mfg_test_state_change_sem, 1); err = MICOAddNotification( mico_notify_WIFI_SCAN_COMPLETED, (void *)mico_notify_WifiScanCompleteHandler ); require_noerr( err, exit ); //获取当前light sensor value //根据 LightValue 值改变 RGB灯亮度 //按key1、key2键 分别切换 RGB灯的颜色 user_key1_init(); user_key2_init(); while(1) { //while(kNoErr != mico_rtos_get_semaphore(&mfg_test_state_change_sem, 0)) { light_ret = light_sensor_read(&light_sensor_data); } //若key2按下 则将颜色 rgb_led_hue+10 if( MicoGpioInputGet((mico_gpio_t)USER_KEY2)==false) { rgb_led_hue+=10; } if(rgb_led_hue >360) { rgb_led_hue=0; } //若key1按下 则将颜色 rgb_led_hue-10 if( MicoGpioInputGet((mico_gpio_t)USER_KEY1)==false) { if(rgb_led_hue>10) { rgb_led_hue-=10; } else { rgb_led_hue =360; } } if(light_ret==0) //光线传感器数据 读取成功 { light_ret =(light_sensor_data-1300)/5; hsb2rgb_led_open(rgb_led_hue, 80, light_ret); } memset(str, '\0', sizeof(str)); sprintf(str,"My_test: #43"); OLED_ShowString(OLED_DISPLAY_COLUMN_START, OLED_DISPLAY_ROW_1, (uint8_t*)str); 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); memset(str, 0x00, sizeof(str)); sprintf(str,"Bright: %d ",light_ret); OLED_ShowString(OLED_DISPLAY_COLUMN_START, OLED_DISPLAY_ROW_3, (uint8_t*)str); memset(str, 0x00, sizeof(str)); sprintf(str,"RgbHue: %d ",rgb_led_hue); OLED_ShowString(OLED_DISPLAY_COLUMN_START, OLED_DISPLAY_ROW_4, (uint8_t*)str); mico_thread_msleep(50); } exit: mico_thread_sleep(MICO_NEVER_TIMEOUT); } 编译下载后 就能实现上述预期功能 视频链接: https://v.youku.com/v_show/id_XMTMxMzc0MzY5Mg==.html 原作者:3466756555 感谢! |
不错。 |