#include “Wire.h”
#include “TFT_eSPI.h” // TFT LCD library
#include “DHT20.h” // DHT20 library
DHT20 DHT;
uint8_t count = 0;
TFT_eSPI tft; // 初始化 TFT LCD
TFT_eSprite spr = TFT_eSprite(&tft); // 初始化緩衝區
// 土壤濕度傳感器定義
int motorPin = 0; // Grove 埠 - 引腳 0
int sensorPin = A2; // 定義變量以儲存土壤濕度傳感器引腳
int sensorValue = 0; // 定義變量以儲存土壤濕度傳感器值
void setup() {
Serial.begin(9600); // 開始串行通信
Wire.begin();
pinMode(WIO_LIGHT, INPUT); // 設置光傳感器引腳為輸入
pinMode(WIO_BUZZER, OUTPUT); // 設置蜂鳴器引腳為輸出
pinMode(motorPin, OUTPUT); // 設置馬達引腳為輸出
DHT.begin(); // 開始 DHT 傳感器
tft.begin(); // 開始 TFT LCD
tft.setRotation(3); // 設置 TFT LCD 旋轉方向
spr.createSprite(TFT_HEIGHT, TFT_WIDTH); // 創建緩衝區
Serial.begin(115200);
Serial.println(FILE);
Serial.print("DHT20 library version: ");
Serial.println(DHT20_LIB_VERSION);
Serial.println();
delay(1000);
}
void loop() {
analogWrite(motorPin, 0); // 默認關閉馬達
int light = analogRead(WIO_LIGHT); // 分配變量以儲存光傳感器值
// DHT20 讀數
if (millis() - DHT.lastRead() >= 1000) {
uint32_t start = micros();
int status = DHT.read();
uint32_t stop = micros();
float humidity = DHT.getHumidity();
float temperature = DHT.getTemperature();
sensorValue = analogRead(sensorPin); // 儲存傳感器值
sensorValue = map(sensorValue, 1023, 400, 0, 100); // 映射傳感器值
// 在序列埠監控中顯示溫度、土壤濕度和空氣中的濕度
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.print(" °C, Soil Moisture: ");
Serial.print(sensorValue);
Serial.print(" %, Humidity: ");
Serial.print(humidity);
Serial.println(" %RH");
spr.fillSprite(TFT_WHITE); // 用白色填充背景
spr.fillRect(0,0,320,50,TFT_DARKGREEN); // 用深綠色填充矩形
spr.setTextColor(TFT_WHITE); // 設置文字顏色
spr.setTextSize(3); // 設置文字大小
spr.drawString("Smart Garden",50,15); // 繪製文本字串
spr.drawFastVLine(150,50,190,TFT_DARKGREEN); // 繪製垂直線
spr.drawFastHLine(0,140,320,TFT_DARKGREEN); // 繪製水平線
// 顯示溫度
spr.setTextColor(TFT_BLACK);
spr.setTextSize(2);
spr.drawString("Temperature",10,65);
spr.setTextSize(3);
spr.drawNumber(temperature,50,95); // 顯示溫度值
spr.drawString("C",90,95);
// 顯示濕度
spr.setTextSize(2);
spr.drawString("Humidity",25,160);
spr.setTextSize(3);
spr.drawNumber(humidity,30,190); // 顯示濕度值
spr.drawString("%RH",70,190);
// 顯示土壤濕度狀態
spr.setTextSize(2);
spr.drawString("Soil Moisture",160,65);
spr.setTextSize(3);
spr.drawNumber(sensorValue,200,95); // 以百分比顯示傳感器值
spr.drawString("%",240,95);
// 顯示光照狀態
spr.setTextSize(2);
spr.drawString("Light",200,160);
spr.setTextSize(3);
light = map(light, 0, 1023, 0, 100); // 映射傳感器值
spr.drawNumber(light,205,190); // 以百分比顯示傳感器值
spr.drawString("%",245,190);
// 低土壤濕度條件
if (sensorValue < 50) {
spr.fillSprite(TFT_RED);
spr.drawString("Time to water!", 35, 100);
analogWrite(motorPin, 150); // 修改如果馬達運行速度太快
analogWrite(WIO_BUZZER, 225); // 蜂鳴器響起
delay(1000);
analogWrite(WIO_BUZZER, 0); // 靜音蜂鳴器
delay(1000);
} else {
analogWrite(motorPin, 0);
}
spr.pushSprite(0, 0); // 推送到 LCD
delay(50);
}
}
I have installed the library that I can install and the programs can run normally, but why does the screen still not light up?