发 帖  

【MiCOKit试用体验】APP端之电机添加

2015-9-23 13:58:46  3281 电机

复制04devicename-dinaji-120.png,smallicon-8kaiguan.png,smallicon-9kaiguan.png这几个文件到image目录下;接着在script标签添加以下代码:

  1. $("#motorbtn").click(function() {
  2.         var topic = device_id + '/in';
  3.         var command;
  4.         var mtbtn = $("#motorbtn");
  5.         if (mtbtn.attr("src") == "../image/smallicon-9kaiguan.png") {
  6.                 mtbtn.attr("src", "../image/smallicon-8kaiguan.png");
  7.                 command = '{"MOTOR_KEY":0}';
  8.         } else {
  9.                 mtbtn.attr("src", "../image/smallicon-9kaiguan.png");
  10.                 command = '{"MOTOR_KEY":4800}';
  11.         }
  12.         publishcmd(topic, command);
  13. });
复制代码

代码稍微解释一下:mtbtn.attr就是获取mtbtn的src属性或者设置src属性,publishcmd就是通过topic和command变量,发布标题和信息,然后设备可以通过订阅标题,获取到云端信息,之后就可以提交云端了,添加三个模块,云编译,这样APP端就定制完成。
接下来就开始介绍固件端的修改,一些必备的步骤就不介绍了,庆科人员在wiki上写的很清楚了。
代码也是借一个人,再此表示感谢。
user_main.c的user_main函数改成如下

  1. OSStatus user_main( app_context_t * const app_context )
  2. {
  3.   user_log_trace();
  4.   OSStatus err = kUnknownErr;
  5.   fogcloud_msg_t *recv_msg = NULL;
  6.   json_object *recv_json_object = NULL;
  7.   
  8.   /* rgb led control variants, use h*** color.
  9.    * h -- hues
  10.    * s -- saturation
  11.    * b -- brightness
  12.    */
  13.   bool led_switch = false;
  14.   int led_hues = 0;
  15.   int led_saturation = 0;
  16.   int led_brightness = 0;
  17.   int motor_val = 0;
  18.    
  19.   require(app_context, exit);
  20.   
  21.   h***2rgb_led_init();  // rgb led init
  22.   
  23.   #if 0
  24.     //err = MicoPwmInitialize((mico_pwm_t)MICO_PWM_IR_SEND, 38000, 50);
  25.     err = MicoPwmInitialize(MICO_PWM_IR_SEND, 38000, 50);
  26.     ewh_log("MicoPwmInitialized err =%d..",err);
  27.     ewh_log("MicoPwmStart..");
  28. //  err =  MicoPwmStart((mico_pwm_t)MICO_PWM_IR_SEND);
  29.     err =  MicoPwmStart(MICO_PWM_IR_SEND);
  30.     ewh_log("MicoPwmStart  end err =%d..",err);
  31.     //dc_motor_init();
  32.   #else
  33.     dc_pwm_init();
  34.   #endif


  35.   while(1){
  36.     mico_thread_msleep(200);
  37.    
  38.     // check fogcloud connect status
  39.     if(!app_context->appStatus.fogcloudStatus.isCloudConnected){
  40.       continue;
  41.     }
  42.    
  43.     /* get a msg pointer, points to the memory of a msg:
  44.      * msg data format: recv_msg->data =
  45.      */
  46.     err = MiCOFogCloudMsgRecv(app_context, &recv_msg, 100);
  47.     if(kNoErr == err){
  48.       // debug log in MICO dubug uart
  49.       user_log("Cloud => Module: topic[%d]=[%.*s]tdata[%d]=[%.*s]",
  50.                recv_msg->topic_len, recv_msg->topic_len, recv_msg->data,
  51.                recv_msg->data_len, recv_msg->data_len, recv_msg->data + recv_msg->topic_len);
  52.       
  53.       // parse json data from the msg, get led control value
  54.       recv_json_object = json_tokener_parse((const char*)(recv_msg->data + recv_msg->topic_len));
  55.       if (NULL != recv_json_object){
  56.         json_object_object_foreach(recv_json_object, key, val) {
  57.           if(!strcmp(key, "rgbled_switch")){
  58.             led_switch = json_object_get_boolean(val);
  59.           }
  60.           else if(!strcmp(key, "rgbled_hues")){
  61.             led_hues = json_object_get_int(val);
  62.           }
  63.           else if(!strcmp(key, "rgbled_saturation")){
  64.             led_saturation = json_object_get_int(val);
  65.           }
  66.           else if(!strcmp(key, "rgbled_brightness")){
  67.             led_brightness = json_object_get_int(val);
  68.           }
  69.            else if(!strcmp(key, "MOTOR_KEY"))
  70.              motor_val = json_object_get_int(val);
  71.         }
  72.         
  73.         // control led
  74.         if(led_switch){
  75.           h***2rgb_led_open(led_hues, led_saturation, led_brightness);  // open rgb led
  76.           OLED_ShowString(OLED_DISPLAY_COLUMN_START, OLED_DISPLAY_ROW_3, "LED on          ");  // show cmd on LCD
  77.          
  78.         }else{
  79.           h***2rgb_led_close();  // close led
  80.           OLED_ShowString(OLED_DISPLAY_COLUMN_START, OLED_DISPLAY_ROW_3, "LED off         ");  // show cmd on LCD
  81.          
  82.         }
  83.         
  84.          
  85.         dc_pwm_set(motor_val);
  86.         // free memory of json object
  87.         json_object_put(recv_json_object);
  88.         recv_json_object = NULL;
  89.       }
  90.       
  91.       // NOTE: must free msg memory after been used.
  92.       if(NULL != recv_msg){
  93.         free(recv_msg);
  94.         recv_msg = NULL;
  95.       }
  96.     }
  97.     else{
  98.       // update info on LCD
  99.       OLED_ShowString(OLED_DISPLAY_COLUMN_START, OLED_DISPLAY_ROW_2, "Demo RGB LED    ");  // clean line2
  100.       OLED_ShowString(OLED_DISPLAY_COLUMN_START, OLED_DISPLAY_ROW_3, "LED control     ");  // show led cmd
  101.       OLED_ShowString(OLED_DISPLAY_COLUMN_START, OLED_DISPLAY_ROW_4, "                ");  // clean line4
  102.     }
  103.   }


  104. exit:
  105.   user_log("ERROR: user_main exit with err=%d", err);
  106.   return err;
  107. }
复制代码




       dc_motor.c,dc_motor.h就以附件形式给吧,代码比较长;之后编译下载,复位就可以控制电机了。[qq]1417075248[/qq]
1

dc_motor.zip

2.14 KB , 下载次数: 7

2015-9-23 13:58:46   评论 分享淘帖 举报

只有小组成员才能发言,加入小组>>

99个成员聚集在这个小组

加入小组

精选推荐

最新话题

    热门话题

      创建小组步骤

      快速回复 返回顶部 返回列表
      关注微信公众号

      电子发烧友网

      电子发烧友论坛

      社区合作
      刘勇
      联系电话:15994832713
      邮箱地址:liuyong@huaqiu.com
      社区管理
      elecfans短短
      微信:elecfans_666
      邮箱:users@huaqiu.com
      关闭

      站长推荐 上一条 /6 下一条

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