#define redLed 5
#define greenLed 6
#define buzzer A1
#define button 2
#define rainSensor 0
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
unsigned int rain;
bool enable;
void setup()
{
lcd.init();
lcd.backlight();
bootingScreen();
pinMode(redLed,OUTPUT);
pinMode(greenLed, OUTPUT);
pinMode(buzzer,OUTPUT);
pinMode(button, INPUT_PULLUP);
enable=HIGH;
delay(2000);
}
void loop()
{
rain= map(analogRead(rainSensor),0,1024,0,100);
if(rain>50 & enable)
{
warning();
}
else
{
digitalWrite(greenLed,HIGH);
digitalWrite(redLed,LOW);
digitalWrite(buzzer,LOW);
homeScreen();
}
if(digitalRead(button)==LOW)
{
enable=!enable;
delay(1000);
}
}
void bootingScreen()
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" RAIN DETECTOR ");
lcd.setCursor(0,1);
lcd.print("WARMING UP.....");
delay(1000);
}
void homeScreen()
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" RAIN ALERT ");
lcd.setCursor(0,1);
lcd.print("RAIN LEVEL:");
lcd.setCursor(12,1);
lcd.print(rain);
lcd.setCursor(15,1);
lcd.print("%");
delay(500);
}
void warning()
{
digitalWrite(greenLed,LOW);
digitalWrite(redLed,HIGH);
digitalWrite(buzzer,HIGH);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" !!WARNING!! ");
lcd.setCursor(0,1);
lcd.print(" RAIN DETECTED ");
delay(1000);
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
bz1:1
bz1:2
lcd1:GND
lcd1:VCC
lcd1:SDA
lcd1:SCL
pot1:GND
pot1:SIG
pot1:VCC
led1:A
led1:C
led2:A
led2:C
r1:1
r1:2
r2:1
r2:2
btn1:1.l
btn1:2.l
btn1:1.r
btn1:2.r