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

王大富 发表于 2021-2-25 09:02

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();
}

gxlin 发表于 2021-2-26 15:55

为开发板 Generic ESP8266 Module 编译时出错

王大富 发表于 2021-2-27 01:05

esp8266nodemcu
页: [1]
查看完整版本: blinker的使用