#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#include <Wire.h>
#define pump A0
LiquidCrystal_I2C lcd(0x27, 16, 4);
DHT dht(8, DHT22);
byte termometru[] = //icon for termometer
{
B00100,
B01010,
B01010,
B01010,
B01110,
B11111,
B11111,
B01110
};
byte picatura[] = //icon for water droplet
{
B00100,
B00100,
B01010,
B01010,
B10001,
B10001,
B10001,
B01110,
};
void setup() {
Serial.begin(9600);
pinMode(pump, OUTPUT);
digitalWrite(pump, LOW);
dht.begin();
lcd.begin(16, 2);
lcd.createChar(0, picatura);
lcd.setCursor(0,0);
lcd.write(0);
lcd.print(" ");
lcd.print("% RH: -PUMP-");
lcd.createChar(1, termometru);
lcd.setCursor(0,1);
lcd.write(1);
lcd.print(" ");
lcd.print((char)223);
lcd.print("C: OFF");
}
float temp, humidity, soil;
void loop() {
checkSensor();
humidity = dht.readHumidity(true);
temp = dht.readTemperature();
lcd.setCursor(2, 0);
lcd.print(humidity, 0);
lcd.setCursor(2, 1);
lcd.print(temp, 1);
// ปั้มน้ำ
if(humidity < 55) {
digitalWrite(pump, HIGH);
lcd.setCursor(11, 1);
lcd.print("ON ");
}
else if(humidity >= 70) {
digitalWrite(pump, LOW);
lcd.setCursor(11, 1);
lcd.print("OFF");
}
}
void checkSensor() {
if ( isnan(humidity) || isnan(temp) ) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Failed to read from");
lcd.setCursor(2, 1);
lcd.print("DHT Sensor!");
return;
}
}