blinker的使用-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1880|回复: 2

[分享] blinker的使用

[复制链接]
发表于 2021-2-25 09:02 | 显示全部楼层 |阅读模式

温湿度数据的采集,远程开关遥控


  1. #define  BLINKER_PRINT Serial
  2. #define  BLINKER_WIFI
  3. #define  BLINKER_ALIGENIE_SENSOR//顺序错了都不行
  4. #include <Blinker.h>
  5. #include <DHT.h>

  6. #define LED1 D3//滑块亮度
  7. #define LED2 D5//开关
  8. #define DHTPIN D4//温湿度传感器串角
  9. #define DHTTYPE DHT11
  10. DHT dht(DHTPIN, DHTTYPE);//识别温湿度的类型和脚位

  11. char auth[] = "fffc80f0c814";//设备密钥,由平台赋予,与那块esp8266开发板没关系
  12. char ssid[] = "CMCC-PbWq";   //wifi名称
  13. char pswd[] = "9bf07201";    //wifi密码
  14. int i=0,j=0,counter=0;
  15. float humi_read = 0, temp_read = 0, sin_read = 0, bb = 0.0;

  16. // 新建组件对象
  17. BlinkerButton Button1("btn-zuz");//按钮标识
  18. BlinkerNumber HUMI("humi");//湿度组件名
  19. BlinkerNumber TEMP("temp");//温度组件名
  20. BlinkerNumber SIN("sin");//自编函数组件名
  21. BlinkerText   Text1("inp-z6e"); //文本组件名
  22. BlinkerSlider Slider1("SliderKey1");//用于控制滑块的语句

  23. void setup()//设定函数
  24. {   Serial.begin(115200);//串口频率设定
  25.     BLINKER_DEBUG.stream(Serial);//指定DEBUG信息输出的串口号
  26.     BLINKER_DEBUG.debugAll();//
  27.     pinMode(LED1, OUTPUT);//将脚位D3设置成输出
  28.     pinMode(LED2, OUTPUT);//将脚位D4设置成输出
  29.     pinMode(LED_BUILTIN, OUTPUT);//将自带的LED灯脚位设置成输出
  30.     digitalWrite(LED_BUILTIN, HIGH);//使自带的LED熄灭
  31.     dht.begin();//初始温湿度传感器

  32.     Blinker.begin(auth, ssid, pswd);// 初始化blinker   
  33.     Blinker.attachHeartbeat(heartbeat);//在Blinker中注册一个心跳包,用于传输数据
  34.     Blinker.attachDataStorage(dataStorage);//在Blinker中注册数据储存包,将相应数据储存到相应的组件名下   
  35.     Button1.attach(button1_callback);//注册按钮回调函数,当app中组件触发并发送到设备端时将触发该组件注册的回调函数
  36.     Slider1.attach(slider1_callback);//注册滑块回调函数
  37.     Blinker.attachData(dataRead);   
  38. }

  39. void loop()
  40. {   Blinker.run();//每次运行都会将设备收到的数据进行一次解析。在使用WiFi接入时,该语句也负责保持网络连接
  41.                    //Blinker.run()函数中包含了heartbeat()和dataStorage(),且首先运行dataStorage()
  42.                    //也包括button1_callback()
  43.     for(j=0;j<=i;j++){analogWrite(LED1,j);}//控制LED灯闪烁频率
  44.     //analogWrite(LED1,j);
  45.     float h = dht.readHumidity(),t = dht.readTemperature(),sine = sin(bb);
  46.     bb=bb+0.1;
  47.      
  48.     if (isnan(h) || isnan(t)||isnan(sine))//isnan()函数,如果括号里面的值不是一个正常值则执行if语句
  49.     {   BLINKER_LOG("Failed to read from DHT sensor!");
  50.     }
  51.     else
  52.     {   BLINKER_LOG("Humidity: ", h, " %");//从串口输出
  53.         BLINKER_LOG("Temperature: ", t, " *C");
  54.         BLINKER_LOG("sin: ", sine, " -");
  55.         humi_read = h;//将得到传感器的数据传给组件名下的变量名
  56.         temp_read = t;
  57.         sin_read = sine;        
  58.     }
  59.     Blinker.delay(2000);
  60. }

  61. void button1_callback(const String & state) {// 按下按键即会执行该函数
  62.     BLINKER_LOG("get button state: ", state);//在APP中的Monitor控件打印信息
  63.     digitalWrite(LED2, !digitalRead(LED2)); //改变灯的状态
  64.     Blinker.vibrate();//手机发生震动
  65. }

  66. void slider1_callback(int32_t value)//控制灯的明暗程度
  67. {   BLINKER_LOG("get slider value: ", value);//在APP中的Monitor控件打印信息
  68.     i=value;
  69. }

  70. void heartbeat()//将设备端采集的温湿度数据,通过心跳包同步数据的方式显示到APP上
  71. {   HUMI.print(humi_read);//将传感器采集的的数据传到APP的特定组件上
  72.     TEMP.print(temp_read);
  73.     SIN.print(sin_read);
  74. }

  75. void dataStorage()//定义不同组件下的上传数据的变量名
  76. {   Blinker.dataStorage("temp", temp_read);
  77.     Blinker.dataStorage("humi", humi_read);
  78.     Blinker.dataStorage("sin", sin_read);
  79.     //Blinker.dataStorage("inp-z6e", inp-z6e_read);
  80. }

  81. void dataRead(const String & data)
  82. {   BLINKER_LOG("Blinker readString: ", data);
  83.     j=atoi("data");
  84.     Blinker.vibrate();
  85. }
复制代码


发表于 2021-2-26 15:55 | 显示全部楼层
为开发板 Generic ESP8266 Module 编译时出错
 楼主| 发表于 2021-2-27 01:05 来自手机 | 显示全部楼层
esp8266nodemcu
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 13:39 , Processed in 0.070905 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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