中级会员
- 积分
- 431
- 金钱
- 431
- 注册时间
- 2015-7-24
- 在线时间
- 23 小时
|
话说收到 [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);
}
编译下载后 就能实现上述预期功能
视频链接:
http://v.youku.com/v_show/id_XMTMxMzc0MzY5Mg==.html
原作者:3466756555
感谢!
|
|