发 帖  
[GoKit作品]

【教程分享】Arduino uno R3接入机智云,快速实现物联网开发

2018-9-26 16:53:04  7473 Arduino
接下来修改按键,按键要把管脚修改过去,按键的管脚分别是A4 A5 对应18  19,修改过后:
  • #define   KEY1              18
  • #define   KEY2              19
  • bool led = 0;//LED状态,控制的时候进行取反
  • bool gdq = 0;//继电器状态控制的时候进行取反

[color=rgb(0, 0, 0) !important]复制代码


同时修改长短按键。
  • void KEY_Handle(void)
  • {
  •   /*  Press for over than 3 second is Long Press  */
  •   switch (gokit_keydown())
  •   {
  •       case KEY1_SHORT_PRESS:
  •       if(led)
  •       {
  •         led=0;
  •         mySerial.println(F("KEY1_SHORT_PRESS LED OFF"));
  •       }
  •         else
  •         {
  •           led=1;
  •           mySerial.println(F("KEY1_SHORT_PRESS LED ON"));
  •         }
  •       break;
  •     case KEY1_LONG_PRESS:
  •       mySerial.println(F("KEY1_LONG_PRESS Soft AP mode"));
  •       myGizwits.setBindMode(WIFI_SOFTAP_MODE);
  •       //Soft AP mode
  •       break;
  •     case KEY2_SHORT_PRESS:
  •       if(gdq)
  •       {
  •         gdq=0;
  •         mySerial.println(F("KEY2_SHORT_PRESS LED OFF"));
  •       }
  •         else
  •         {
  •           gdq=1;
  •           mySerial.println(F("KEY2_SHORT_PRESS LED ON"));
  •         }
  •       break;
  •     case KEY2_LONG_PRESS:
  •       mySerial.println(F("KEY2_LONG_PRESS ,AirLink mode"));
  •       myGizwits.setBindMode(WIFI_AIRLINK_MODE);
  •       //AirLink mode
  •       break;
  •     default:
  •       break;
  •   }
  • }

[color=rgb(0, 0, 0) !important]复制代码


到此按键就修改完了,接下来修改用户处理函数,没安装notepad++的最好安装一个,用记事本也行,个人习惯用notepad++。修改其他代码需要用到。利用
notepad++打开
gizwits_protocol.h文件,修改数据上报时间为1秒或者2秒,此处我修改为2秒#define REPORT_TIME_MAX 2000 //2S,打开gizwits_product.c文件,里面绝大部分程序思维按照类上一篇帖子的思维进行修改。
将以下内容补充完整。在gizwits_product.c里面

  • case EVENT_switch_led:
  •         currentDataPoint.valueswitch_led = dataPointPtr->valueswitch_led;
  •         attrFlags.flagswitch_led = 1;
  •                 if(0x01 == currentDataPoint.valueswitch_led)
  •                 {
  •                         led=1;//打开大功率LED
  •                 }
  •                 else
  •                 {
  •                         led=0;//关闭大功率LED
  •                 }
  •         break;
  •       case EVENT_switch_relay:
  •         currentDataPoint.valueswitch_relay = dataPointPtr->valueswitch_relay;
  •         attrFlags.flagswitch_relay = 1;
  •                 if(0x01 == currentDataPoint.valueswitch_led)
  •                 {
  •                         gdq=1;//打开继电器
  •                 }
  •                 else
  •                 {
  •                         gdq=0;//关闭继电器
  •                 }
  •         break;
  •       case EVENT_color_controls:
  •         currentDataPoint.valuecolor_controls = dataPointPtr->valuecolor_controls;
  •         attrFlags.flagcolor_controls = 1;
  •                 mode_Cloud_data[0]=currentDataPoint.valuecolor_controls;
  •         break;
  •       case EVENT_LED_R:
  •         currentDataPoint.valueLED_R = dataPointPtr->valueLED_R;
  •         attrFlags.flagLED_R = 1;
  •                 mode_Cloud_data[1]=currentDataPoint.valueLED_R;//红色值
  •                 if(mode_Cloud_data[1]!=1)mode_Cloud_data[0]=1;//自定义
  •         break;
  •       case EVENT_LED_G:
  •         currentDataPoint.valueLED_G = dataPointPtr->valueLED_G;
  •         attrFlags.flagLED_G = 1;
  •                 mode_Cloud_data[2]=currentDataPoint.valueLED_G;//绿色值
  •                 if(mode_Cloud_data[2]!=1)mode_Cloud_data[0]=1;//自定义
  •         break;
  •       case EVENT_LED_B:
  •         currentDataPoint.valueLED_B = dataPointPtr->valueLED_B;
  •         attrFlags.flagLED_B = 1;
  •                 mode_Cloud_data[3]=currentDataPoint.valueLED_B;//蓝色值
  •                 if(mode_Cloud_data[0]!=1)mode_Cloud_data[0]=1;//自定义
  •         break;

[color=rgb(0, 0, 0) !important]复制代码


在文件开头全局一个int mode_Cloud_data[4]={0};//云端数据缓存  0模式 1R 2G 3B


接下来回到Ardunio软件,增加RGB驱动函数。
定义管脚
  • int redPin = 9 ;
  • int greenPin = 10;
  • int bluePin = 11;
  • 初始化
  •   pinMode(redPin ,OUTPUT);
  •   pinMode(greenPin ,OUTPUT);
  •   pinMode(bluePin ,OUTPUT);
  • RGB控制函数
  • //rgb控制
  • void RGB_light_set_color(int red,int green,int blue)
  • {
  •     analogWrite(redPin,red);
  •     analogWrite(greenPin,green);
  •     analogWrite(bluePin,blue);
  • }

[color=rgb(0, 0, 0) !important]复制代码


接下来我们需要新增用户处理的函数
  • //用户处理函数
  • void setsystem()
  • {
  •   if(led) digitalWrite(LED_SW,LOW);
  •     else digitalWrite(LED_SW,HIGH);
  •   if(gdq) digitalWrite(GDQ_SW,LOW);
  •     else digitalWrite(GDQ_SW,HIGH);
  •   switch(mode_Cloud_data[0])
  •   {
  •     case 0 :
  •       RGB_light_set_color(0,0,0);//关闭灯
  •       currentDataPoint.valuecolor_controls = 0;
  •       currentDataPoint.valueLED_R = 0;
  •       currentDataPoint.valueLED_G = 0;
  •       currentDataPoint.valueLED_B = 0;
  •       break;
  •     case 1 :
  •       RGB_light_set_color(mode_Cloud_data[1],mode_Cloud_data[2],mode_Cloud_data[3]);//自定义
  •       currentDataPoint.valuecolor_controls = 1;
  •       currentDataPoint.valueLED_R = mode_Cloud_data[1];
  •       currentDataPoint.valueLED_G = mode_Cloud_data[2];
  •       currentDataPoint.valueLED_B = mode_Cloud_data[3];
  •       break;
  •     case 2 :
  •       RGB_light_set_color(255,0,0);//红色
  •       currentDataPoint.valuecolor_controls = 2;
  •       currentDataPoint.valueLED_R = 255;
  •       currentDataPoint.valueLED_G = 0;
  •       currentDataPoint.valueLED_B = 0;
  •       break;
  •     case 3 :
  •       RGB_light_set_color(0,255,0);//绿色
  •       currentDataPoint.valuecolor_controls = 3;
  •       currentDataPoint.valueLED_R = 0;
  •       currentDataPoint.valueLED_G = 255;
  •       currentDataPoint.valueLED_B = 0;
  •       break;
  •     case 4 :
  •       RGB_light_set_color(0,0,255);//蓝色
  •       currentDataPoint.valuecolor_controls = 4;
  •       currentDataPoint.valueLED_R = 0;
  •       currentDataPoint.valueLED_G = 0;
  •       currentDataPoint.valueLED_B = 255;
  •       break;
  •     case 5 :
  •       RGB_light_set_color(255,255,0);//黄色
  •       currentDataPoint.valuecolor_controls = 5;
  •       currentDataPoint.valueLED_R = 255;
  •       currentDataPoint.valueLED_G = 255;
  •       currentDataPoint.valueLED_B = 0;
  •       break;
  •     case 6 :
  •       RGB_light_set_color(255,0,255);//紫色
  •       currentDataPoint.valuecolor_controls = 6;
  •       currentDataPoint.valueLED_R = 255;
  •       currentDataPoint.valueLED_G = 0;
  •       currentDataPoint.valueLED_B = 255;
  •       break;
  •     case 7 :
  •       RGB_light_set_color(255,52,179);//粉色(估计不是粉色)
  •       currentDataPoint.valuecolor_controls = 7;
  •       currentDataPoint.valueLED_R = 255;
  •       currentDataPoint.valueLED_G = 52;
  •       currentDataPoint.valueLED_B = 179;
  •       break;
  •     case 8 :
  •       RGB_light_set_color(255,255,255);//白色
  •       currentDataPoint.valuecolor_controls = 8;
  •       currentDataPoint.valueLED_R = 255;
  •       currentDataPoint.valueLED_G = 255;
  •       currentDataPoint.valueLED_B = 255;
  •       break;
  •     default:
  •       break;
  •   }
  • }

[color=rgb(0, 0, 0) !important]复制代码


将setsystem();函数放在loop里面,同时吧DHT11
也放进去
  •   setsystem();
  •   read_dht11();
  •   currentDataPoint.valuetemperature = temp;
  •   currentDataPoint.valuehumidity = humi;

[color=rgb(0, 0, 0) !important]复制代码

[color=rgb(0, 0, 0) !important]



0
2018-9-26 16:53:04   评论 分享淘帖 举报

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

193个成员聚集在这个小组

加入小组

精选推荐

最新话题

热门话题

创建小组步骤

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

电子发烧友网

电子发烧友开云(中国)官方

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

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

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

技术社区

张飞电子技术社区

KaihongOS技术社区

FPGA开发者技术社区

RISC-V MCU技术社区

HarmonyOS技术社区

-

OpenHarmony开源社区

OpenHarmony开源社区

-

嵌入式开云(中国)官方

ARM技术开云(中国)官方

STM32/STM8技术开云(中国)官方

嵌入式技术开云(中国)官方

单片机/MCU开云(中国)官方

RISC-V技术开云(中国)官方

瑞芯微Rockchip开发者社区

FPGA|CPLD|ASIC开云(中国)官方

DSP开云(中国)官方

-

电路图及DIY

电路设计开云(中国)官方

DIY及创意

电子元器件开云(中国)官方

专家问答

-

电源技术开云(中国)官方

电源技术开云(中国)官方

无线充电技术

-

综合技术与应用

机器人开云(中国)官方

USB开云(中国)官方

电机控制

模拟技术

音视频技术

综合技术交流

上位机软件(C/Python/Java等)

-

无线通信开云(中国)官方

WIFI技术

蓝牙技术

天线|RF射频|微波|雷达技术

-

EDA设计开云(中国)官方

PCB设计开云(中国)官方

DigiPCBA开云(中国)官方

Protel|AD|DXP开云(中国)官方

PADS技术开云(中国)官方

Allegro开云(中国)官方

multisim开云(中国)官方

proteus开云(中国)官方|仿真开云(中国)官方

KiCad EDA 中文开云(中国)官方

DFM|可制造性设计开云(中国)官方

-

测试测量开云(中国)官方

LabVIEW开云(中国)官方

Matlab开云(中国)官方

测试测量技术

传感技术

-

招聘/交友/外包/交易/杂谈

项目外包

供需及二手交易

工程师杂谈|交友

招聘|求职|工程师职场

-

官方社区

发烧友官方/活动

华秋商城

华秋电路