esp8266+tft屏幕+thd11+led灯 谢谢啦 我是零基础刚开始学
#define BLINKER_WIFI //定义wifi模块
#define DHTPIN 12 //定义DHT11模块连接管脚io2
#define TFT_CS D1
#define TFT_RST D2
#define TFT_DC D3
#define TFT_SCLK 13
#define TFT_MOSI 11
#define DHTTYPE DHT11 // 使用温度湿度模块的类型为DHT11
#include <Blinker.h> //包含Blinker头文件
#include <DHT.h> //包含DHT头文件
#include <Adafruit_GFX.h> // Core graphics library
#include <Adafruit_ST7735.h> // Hardware-specific library
#include <SPI.h>
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);
char auth[] = "df068e9c181a"; //设备key
char ssid[] = "b20e"; //wifi 名称
char pswd[] = "334452100"; //wifi 密码
BlinkerNumber HUMI("humi"); //定义湿度数据键名
BlinkerNumber TEMP("temp"); //定义温度数据键名
BlinkerButton Button1("deng");
void button1_callback(const String & state) {
BLINKER_LOG("get button state: ", state);
digitalWrite(3, !digitalRead(3));
Blinker.vibrate();
} // 按下按键即会执行该函数
DHT dht(DHTPIN, DHTTYPE); //生成DHT对象,参数是引脚和DHT的类型
float humi_read = 0, temp_read = 0; //定义浮点型全局变量 储存传感器读取的温湿度数据
void heartbeat()
{
HUMI.print(humi_read); //给blinkerapp回传湿度数据
TEMP.print(temp_read); //给blinkerapp回传温度数据
}
void dataStorage() //云存储温湿度数据函数
{
Blinker.dataStorage("temp", temp_read); //存储温度
Blinker.dataStorage("humi", humi_read); //存储湿度
}
void rotateText() {
for (uint8_t i=0; i<4; i++) {
tft.fillScreen(ST7735_BLACK);
tft.setCursor(0, 30);
tft.setTextColor(ST7735_RED);
tft.setTextSize(2);
tft.println("temp");
tft.setTextColor(ST7735_YELLOW);
tft.setTextSize(4.2);
tft.println((float)dht.readTemperature());
tft.setTextColor(ST7735_GREEN);
tft.setTextSize(2);
tft.println("humi");
tft.setTextColor(ST7735_YELLOW);
tft.setTextSize(4.2);
tft.print((float)dht.readHumidity());
tft.setRotation(+3);
delay(3000);
}
}
void setup()
{
Button1.attach(button1_callback);
Serial.begin(115200);//初始化端口
BLINKER_DEBUG.stream(Serial);
BLINKER_DEBUG.debugAll();
#if defined(BLINKER_PRINT)
BLINKER_DEBUG.stream(BLINKER_PRINT);
#endif
pinMode(3, OUTPUT);
digitalWrite(3, HIGH);
Blinker.begin(auth, ssid, pswd); // 初始化blinker
Blinker.attachHeartbeat(heartbeat); //将传感器获取的数据传给blinker app上
Blinker.attachDataStorage(dataStorage);//数据存储?
dht.begin(); //初始化DHT传感器
tft.initR(INITR_144GREENTAB);
tft.setTextWrap(false);
tft.fillScreen(ST7735_BLACK);
}
void loop() //把主代码放在这里,重复运行:
{
Blinker.run(); //运行Blinker
float h = dht.readHumidity();//读取DHT11传感器的湿度 并赋值给h
float t = dht.readTemperature();//读取传感器的温度 并赋值给t
if (isnan(h) || isnan(t))//判断是否成功读取到温湿度数据
{
BLINKER_LOG("Failed to read from DHT sensor!");//读取温湿度失败!
}
else//成功读取到数据
{
BLINKER_LOG("Humidity: ", h, " %");
BLINKER_LOG("Temperature: ", t, " *C");
humi_read = h;//将读取到的湿度赋值给全局变量humi_read
temp_read = t;//将读取到的温度赋值给全局变量temp_read
}
Blinker.delay(2000);
rotateText();
}
|