OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4882|回复: 0

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

[复制链接]

58

主题

96

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
431
金钱
431
注册时间
2015-7-24
在线时间
23 小时
发表于 2015-8-24 09:34:22 | 显示全部楼层 |阅读模式
    话说收到 [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
感谢!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 21:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表