#include <LiquidCrystal_I2C.h>
#include <Servo.h>
#define LIGHT_SENSOR A0
#define HUM_SENSOR A1
#define BUZZER 3
#define SERVO_PIN 11
#define I2C_ADDR 0x27
#define I2C_COLS 16
#define I2C_ROWS 2
#define R 7
#define G 6
#define B 5
LiquidCrystal_I2C lcd(I2C_ADDR, I2C_COLS, I2C_ROWS);
Servo myServo;
void setup() {
myServo.attach(SERVO_PIN);
lcd.init();
lcd.backlight();
pinMode(R, OUTPUT);
pinMode(G, OUTPUT);
pinMode(B, OUTPUT);
}
void loop() {
int lightLevel = map(analogRead(LIGHT_SENSOR), 0, 1023, 100, 0); // 0 - 1023
int humLevel = map(analogRead(HUM_SENSOR), 0, 1023, 0, 100);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("light:" + String(lightLevel));
lcd.setCursor(9,0);
lcd.print("hum:" + String(humLevel));
lcd.setCursor(0,1);
if(humLevel < 30) {
digitalWrite(G, LOW);
digitalWrite(R, HIGH);
myServo.write(0);
lcd.print("Ground is dry");
tone(BUZZER, 500, 500);
}else {
digitalWrite(R, LOW);
digitalWrite(G, HIGH);
myServo.write(90);
lcd.write("Plants good");
}
delay(1000);
}