#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include "DHTesp.h"
int led1 = 19;
int sw1 = 34;
int sw2 = 35;
int sw3 = 32;
int val_1 = 0;
const int DHT_PIN = 15;
DHTesp dhtSensor;
#define PIN_TRIG 18
#define PIN_ECHO 5
#define LCD_ADDR 0x27
LiquidCrystal_I2C lcd(LCD_ADDR, 16, 2);
void setup() {
Serial.begin(115200);
Serial.println("Hello, esp32");
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
pinMode(led1, OUTPUT);
pinMode(sw1, INPUT);
pinMode(sw2, INPUT);
pinMode(sw3, INPUT);
pinMode(PIN_TRIG, OUTPUT);
pinMode(PIN_ECHO, INPUT);
lcd.init();
lcd.backlight();
lcd.clear();
lcd.setCursor(5,0);
lcd.print("HELLO");
}
void loop() {
// ตรวจสอบการกดของสวิตช์
if (digitalRead(sw1) == LOW) {
val_1 = 1;
} else if (digitalRead(sw2) == LOW) {
val_1 = 2;
} else if (digitalRead(sw3) == LOW) {
val_1 = 3;
}
// ทำงานตามค่าของ val_1
switch (val_1) {
case 1:
digitalWrite(led1, HIGH);
delay(500);
digitalWrite(led1, LOW);
delay(500);
lcd.setCursor(11, 0);
lcd.print("RED ");
break;
case 2:
digitalWrite(led1, HIGH);
delay(200);
digitalWrite(led1, LOW);
delay(200);
lcd.setCursor(10, 0);
lcd.print("YELLOW");
break;
case 3:
digitalWrite(led1, HIGH);
delay(100);
digitalWrite(led1, LOW);
delay(100);
lcd.setCursor(11, 0);
lcd.print("GREEN ");
break;
}
// วัดระยะทางโดยใช้ Ultrasonic Sensor
digitalWrite(PIN_TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(PIN_TRIG, LOW);
// อ่านผลลัพธ์ระยะทาง
int duration = pulseIn(PIN_ECHO, HIGH);
lcd.setCursor(11,1);
lcd.print(duration/58);
lcd.print("cm");
// อ่านค่าอุณหภูมิและความชื้นจาก DHT22
TempAndHumidity data = dhtSensor.getTempAndHumidity();
// แสดงค่าอุณหภูมิและความชื้นบน Serial Monitor
Serial.println("Temp: " + String(data.temperature, 2) + "°C");
Serial.println("Humidity: " + String(data.humidity, 1) + "%");
// แสดงค่าอุณหภูมิและความชื้นบนจอ LCD
lcd.setCursor(0, 0); // เริ่มต้นแสดงผลที่บรรทัดแรก
lcd.print("Temp:");
lcd.print(data.temperature, 1);
lcd.print("C");
lcd.setCursor(0, 1); // บรรทัดที่สอง
lcd.print("Hum:");
lcd.print(data.humidity, 1);
lcd.print("% ");
delay(2000); // หน่วงเวลาเล็กน้อยก่อนรอบถัดไป
}