blinker的使用
温湿度数据的采集,远程开关遥控
#defineBLINKER_PRINT Serial
#defineBLINKER_WIFI
#defineBLINKER_ALIGENIE_SENSOR//顺序错了都不行
#include <Blinker.h>
#include <DHT.h>
#define LED1 D3//滑块亮度
#define LED2 D5//开关
#define DHTPIN D4//温湿度传感器串角
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);//识别温湿度的类型和脚位
char auth[] = "fffc80f0c814";//设备密钥,由平台赋予,与那块esp8266开发板没关系
char ssid[] = "CMCC-PbWq"; //wifi名称
char pswd[] = "9bf07201"; //wifi密码
int i=0,j=0,counter=0;
float humi_read = 0, temp_read = 0, sin_read = 0, bb = 0.0;
// 新建组件对象
BlinkerButton Button1("btn-zuz");//按钮标识
BlinkerNumber HUMI("humi");//湿度组件名
BlinkerNumber TEMP("temp");//温度组件名
BlinkerNumber SIN("sin");//自编函数组件名
BlinkerText Text1("inp-z6e"); //文本组件名
BlinkerSlider Slider1("SliderKey1");//用于控制滑块的语句
void setup()//设定函数
{ Serial.begin(115200);//串口频率设定
BLINKER_DEBUG.stream(Serial);//指定DEBUG信息输出的串口号
BLINKER_DEBUG.debugAll();//
pinMode(LED1, OUTPUT);//将脚位D3设置成输出
pinMode(LED2, OUTPUT);//将脚位D4设置成输出
pinMode(LED_BUILTIN, OUTPUT);//将自带的LED灯脚位设置成输出
digitalWrite(LED_BUILTIN, HIGH);//使自带的LED熄灭
dht.begin();//初始温湿度传感器
Blinker.begin(auth, ssid, pswd);// 初始化blinker
Blinker.attachHeartbeat(heartbeat);//在Blinker中注册一个心跳包,用于传输数据
Blinker.attachDataStorage(dataStorage);//在Blinker中注册数据储存包,将相应数据储存到相应的组件名下
Button1.attach(button1_callback);//注册按钮回调函数,当app中组件触发并发送到设备端时将触发该组件注册的回调函数
Slider1.attach(slider1_callback);//注册滑块回调函数
Blinker.attachData(dataRead);
}
void loop()
{ Blinker.run();//每次运行都会将设备收到的数据进行一次解析。在使用WiFi接入时,该语句也负责保持网络连接
//Blinker.run()函数中包含了heartbeat()和dataStorage(),且首先运行dataStorage()
//也包括button1_callback()
for(j=0;j<=i;j++){analogWrite(LED1,j);}//控制LED灯闪烁频率
//analogWrite(LED1,j);
float h = dht.readHumidity(),t = dht.readTemperature(),sine = sin(bb);
bb=bb+0.1;
if (isnan(h) || isnan(t)||isnan(sine))//isnan()函数,如果括号里面的值不是一个正常值则执行if语句
{ BLINKER_LOG("Failed to read from DHT sensor!");
}
else
{ BLINKER_LOG("Humidity: ", h, " %");//从串口输出
BLINKER_LOG("Temperature: ", t, " *C");
BLINKER_LOG("sin: ", sine, " -");
humi_read = h;//将得到传感器的数据传给组件名下的变量名
temp_read = t;
sin_read = sine;
}
Blinker.delay(2000);
}
void button1_callback(const String & state) {// 按下按键即会执行该函数
BLINKER_LOG("get button state: ", state);//在APP中的Monitor控件打印信息
digitalWrite(LED2, !digitalRead(LED2)); //改变灯的状态
Blinker.vibrate();//手机发生震动
}
void slider1_callback(int32_t value)//控制灯的明暗程度
{ BLINKER_LOG("get slider value: ", value);//在APP中的Monitor控件打印信息
i=value;
}
void heartbeat()//将设备端采集的温湿度数据,通过心跳包同步数据的方式显示到APP上
{ HUMI.print(humi_read);//将传感器采集的的数据传到APP的特定组件上
TEMP.print(temp_read);
SIN.print(sin_read);
}
void dataStorage()//定义不同组件下的上传数据的变量名
{ Blinker.dataStorage("temp", temp_read);
Blinker.dataStorage("humi", humi_read);
Blinker.dataStorage("sin", sin_read);
//Blinker.dataStorage("inp-z6e", inp-z6e_read);
}
void dataRead(const String & data)
{ BLINKER_LOG("Blinker readString: ", data);
j=atoi("data");
Blinker.vibrate();
}
为开发板 Generic ESP8266 Module 编译时出错 esp8266nodemcu
页:
[1]