#include "DHTesp.h"
#include <Wire.h> // I2C程式庫
#include <LiquidCrystal_I2C.h>
#define I2C_ADDR 0x27
#define LCD_COLUMNS 20
#define LCD_LINES 4
#define I2C_SDA 33
#define I2C_SCL 32
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
int i = 0;
int k = 0;
const int DHT_PIN = 15;
DHTesp dht;
const int hledR = 14;
const int hledY = 12;
const int hledG = 13;
const int tledR = 25;
const int tledY = 26;
const int tledG = 27;
String t , h ,h1 , t1;
void setup() {
Serial.begin(115200);
dht.setup(DHT_PIN, DHTesp::DHT22);
lcd.init();
lcd.backlight();
lcd.setCursor(3, 0);
lcd.print("Hello, world!");
lcd.setCursor(0, 1);
lcd.print("Wokwi Online IoT");
delay(2000);
lcd.clear();
pinMode(tledR, OUTPUT);
pinMode(tledY, OUTPUT);
pinMode(tledG, OUTPUT);
pinMode(hledR, OUTPUT);
pinMode(hledY, OUTPUT);
pinMode(hledG, OUTPUT);
}
void loop() {
TempAndHumidity data = dht.getTempAndHumidity();
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(String(data.temperature, 2));
lcd.print("'C");
lcd.setCursor(0, 1);
lcd.print("Humidity: ");
lcd.print(String(data.humidity, 1));
lcd.print("%");
t= String(data.temperature, 2);
h= String(data.humidity, 1);
Serial.println("Temp: " + String(data.temperature, 2) + "°C");
Serial.println("Humidity: " + String(data.humidity, 1) + "%");
Serial.println("---");
Serial.println(data.humidity);
if (data.humidity > 70 ) {
digitalWrite(hledR, HIGH);
digitalWrite(hledY, LOW);
digitalWrite(hledG, LOW);
} else if(data.humidity >= 40 && data.humidity <=70) {
digitalWrite(hledR, LOW);
digitalWrite(hledY, HIGH);
digitalWrite(hledG, LOW);
} else if (data.humidity < 40){
digitalWrite(hledR, LOW);
digitalWrite(hledY, LOW);
digitalWrite(hledG, HIGH);
}
if(data.temperature > 35 && data.temperature <=80) {
digitalWrite(tledR, HIGH);
digitalWrite(tledY, LOW);
digitalWrite(tledG, LOW);
} else if(data.temperature > 30 && data.temperature <=35) {
digitalWrite(tledR, LOW);
digitalWrite(tledY, HIGH);
digitalWrite(tledG, LOW);
} else if(data.temperature > 15 && data.temperature <=30) {
digitalWrite(tledR, LOW);
digitalWrite(tledY, LOW);
digitalWrite(tledG, HIGH);
} else if(data.temperature > 0 && data.temperature <=15){
digitalWrite(tledR, LOW);
digitalWrite(tledY, HIGH);
digitalWrite(tledG, LOW);
} else if(data.temperature <0){
digitalWrite(tledR, HIGH);
digitalWrite(tledY, LOW);
digitalWrite(tledG, LOW);
}
delay(1000);
}