#include <DHT.h> //เรียกใช้ข้อมูล
#include <LiquidCrystal_I2C.h>
#include <Servo.h>
#define DHTPIN 2 //กำหนดขา
#define DHTTYPE DHT22
#define Buz 13
#define LED 12
#define I2C_ADDR 0x27
#define LCD_COLUMNS 20
#define LCD_LINES 4
Servo servo;
LiquidCrystal_I2C lcd(0x27, 20, 4);
DHT dht(DHTPIN, DHTTYPE);
float h; //กำหนดตัวแปร
float t;
void setup()
{
dht.begin();
Serial.begin(9600);
Serial.println("เริ่มตรวจจับความชื้น และ อุณหภูมิ");
pinMode(Buz, OUTPUT);
lcd.init();
lcd.backlight(); //เปิดให้จอสว่าง
servo.attach(11); //ตั้งขาServo
servo.write(0); //เซ็ตServoที่0องศา
}
void loop()
{
h = dht.readHumidity(); //เก็บค่า%ความชื้น
t = dht.readTemperature(); //เก็บค่าอุณหภูมิ
Serial.print("ความชื้น : "); //แสดงค่าความชื้นหน่วย%
Serial.print(h);
Serial.print(" % ");
Serial.print("อุณหภูมิ : "); //แสดงค่าอุณหภูมิหน่วยํ ํc
Serial.print(t);
Serial.print(" ํC");
Serial.println(" ");
lcd.setCursor(3,0); //แสดงค่าขึ้นบนจอLCD
lcd.print("HHU =");
lcd.setCursor(9,0);
lcd.println(h);
lcd.setCursor(15,0);
lcd.print("%");
lcd.setCursor(3,1);
lcd.print("Temp =");
lcd.setCursor(10,1);
lcd.println(t);
lcd.setCursor(16,1);
lcd.print("*c");
if (h <= 25) { //ถ้าความชื้นน้อยกว่้าหรือเท่ากับ 25 %
digitalWrite(LED, HIGH); //ให้ไฟ LEDสว่าง
digitalWrite(Buz, HIGH); //ให้ Buzzerส่งเสียง
servo.write(90); //ให้ servo หมุนไปที่90องศา
tone(Buz, 555, 100); //ความถี่เสียง 555 hz ใน 0.1 วินาที
lcd.setCursor(5,3);
lcd.print("**DRY**"); //แสดงบนจอLCDว่าแห้งแล้ว
}
else {
digitalWrite(LED, LOW);
digitalWrite(Buz, LOW);
servo.write(0);
lcd.setCursor(5,3);
lcd.print(" ");
}
delay(2000);
}