/**
ESP32 + DHT22 Example for Wokwi
https://wokwi.com/arduino/projects/322410731508073042
*/
#include "DHTesp.h"
int redPin = 12; // R 紅色LED控制腳 連接到ESP32的 GPIO15
int greenPin = 13; // G 綠色LED控制腳 連接到ESP32的 GPIO17
int bluePin = 14; // B 藍色LED控制腳 連接到ESP32的 GPIO16
const int DHT_PIN = 15;
int lcdColumns = 16;
int lcdRows = 2;
LiquidCrystal_I2C lcd(0x27, lcdColumns, lcdRows);
DHTesp dhtSensor;
void setup() {
Serial.begin(115200);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
// initialize LCD
lcd.init();
// turn on LCD backlight
lcd.backlight();
pinMode(redPin, OUTPUT); //設置redPin對應的管腳GPIO15為輸出
pinMode(greenPin, OUTPUT); //設置greenPin對應的管腳GPIO17為輸出
pinMode(bluePin, OUTPUT); //設置bluePin對應的管腳GPIO16為輸出
}
void color (unsigned int red, unsigned int green, unsigned int blue)
{
analogWrite(redPin, red);
analogWrite(greenPin,green);
analogWrite(bluePin, blue);
}
void loop() {
TempAndHumidity data = dhtSensor.getTempAndHumidity();
Serial.println("溫度: " + String(data.temperature, 2) + "度");
Serial.println("濕度: " + String(data.humidity, 1) + "%");
Serial.println("---");
if(data.temperature<0){color(0, 0, 255);/*藍色亮*/}
else if(data.temperature>50){color(255,0, 0);/*红色亮*/}
else if(data.temperature>30){color(255,255, 0);/*黃色亮*/}
else{color(0,255, 0);/*綠色亮*/}
// set cursor to first column, first row
lcd.setCursor(0, 0);
// print message
lcd.print("Temp: " + String(data.temperature, 2) + "C");
lcd.setCursor(0, 1);
// print message
lcd.print("Humidity: " + String(data.humidity, 1) + "%");
delay(500);
// clears the display to print new message
lcd.clear();
// set cursor to first column, second row
}
/*color(255, 0, 0); // 红色亮
delay(1000); //延時一秒
color(0,255, 0); //綠色亮
delay(1000); //延時一秒
color(0, 0, 255); //藍色亮
delay(1000); //延時一秒
color(0, 0, 255);/*藍色亮*/