使用Arduino和点灯科技APP显示温湿度数据,密钥为注册点灯科技账号后生成。
Blinker APP数据控件设置,修改对应的组件键名和显示文本,组件键名要和程序中设置的一致,否则无法正常接收数据。本程序中设置的为温度num,湿度num2.
实际效果:
#define BLINKER_WIFI
#include <Blinker.h>
char auth[] = "3a3ede408ab1";
char ssid[] = "zps";
char pswd[] = "152356zps";
//BlinkerNumber HUMI("humi"); //对应blinkerapp上的数据名
//BlinkerNumber TEMP("temp"); //在blinkerapp下有温度数据名为
// Download Adafruit DHT-sensor-library library here:
// https://github.com/adafruit/DHT-sensor-library
#include <DHT.h>
#define DHTPIN 2
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
DHT dht(DHTPIN, DHTTYPE);
uint32_t read_time = 0;
float humi_read, temp_read;
BlinkerNumber Number1("num");
BlinkerNumber Number2("num2");
void dataStorage(){
Blinker.dataStorage("num", temp_read);
Blinker.dataStorage("num2", humi_read);
}
/*void dataStorage2(){
Blinker.dataStorage2("num2", humi_read);
}*/
/*void heartbeat()
{
//HUMI.print(humi_read); //给blinkerapp湿度数据
//TEMP.print(temp_read); //给blinkerapp温度数据
Number1.print(temp_read);
Number2.print(humi_read);
}*/
void setup()
{
Serial.begin(115200);
BLINKER_DEBUG.stream(Serial);
//pinMode(LED_BUILTIN, OUTPUT);
//digitalWrite(LED_BUILTIN, LOW);
Blinker.begin(auth, ssid, pswd);
//Blinker.attachHeartbeat(heartbeat);//将传感器回调函数加载,回传数据
Blinker.attachDataStorage(dataStorage);
//Blinker.attachDataStorage(dataStorage2);
dht.begin();
}
void loop()
{
Blinker.run();
if (read_time == 0 || (millis() - read_time) >= 2000)
/*这是一个条件语句,它的作用是判断是否满足两个条件中的任意一个:
1.read_time等于0。
2.自上次读取以来经过的时间大于等于2000毫秒。
如果满足其中一个条件,就会执行条件语句块内的代码。在给定的代码中,
这段条件语句用于检查是否需要读取DHT11传感器的数据。
当read_time为0或者距离上次读取的时间超过2秒时,就会执行读取数据的操作。
millis()是一个Arduino函数,用于获取自上电以来的毫秒数。它返回一个无符号长整型数,
代表了从上电开始到当前时刻的毫秒数。在给定代码中,
(millis() - read_time) >= 2000这个条件判断语句的作用是检查自上次读取数据以来是否已经过了2秒钟。
如果是,则会执行读取DHT11传感器数据的操作。*/
{
read_time = millis();
float h = dht.readHumidity();//读取DHT11传感器的湿度 并赋值给h
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
BLINKER_LOG("Failed to read from DHT sensor!");
return;
}
else
{
BLINKER_LOG("Humidity: ", h, " %");
BLINKER_LOG("Temperature: ", t, " *C");
humi_read = h;//将读取到的湿度赋值给全局变量humi_read
temp_read = t;//将读取到的温度赋值给全局变量temp_read
}
}
//Number1.print(temp_read);
Number1.print(temp_read);
Number2.print(humi_read);
Blinker.delay(1000);
}