打印
[开源硬件]

【MiCO分享贴】开发板光敏控灯

[复制链接]
828|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
micolover|  楼主 | 2015-8-24 09:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    话说收到 [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);
}  
     编译下载后 就能实现上述预期功能


视频链接:
h t t p : / / v . y o u k u . c o  m / v _show/id_XMTMxMzc0MzY5Mg==.html

原作者:3466756555
感谢!

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:上海庆科信息技术有限公司(MXCHIP)全球首家物联网操作系统MiCO提供商

54

主题

71

帖子

2

粉丝