#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht (DHTPIN, DHTTYPE);
#define RELAY1 18
#define RELAY2 5
#define BUTTON1_PIN 26
#define BUTTON2_PIN 27
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C LCD = LiquidCrystal_I2C(0x27, 16, 2);
int state1 = 0, state2 =0;
int button_state1;
int button_state2;
int last_button_state1;
int last_button_state2;
int relay_state1 = LOW; // the current state of relay
void setup() {
Serial.begin(115200);
dht.begin();
LCD.init();
LCD.backlight();
pinMode (RELAY1,OUTPUT);
pinMode (RELAY2,OUTPUT);
pinMode(BUTTON1_PIN, INPUT_PULLUP);
pinMode(BUTTON2_PIN, INPUT_PULLUP);
button_state1 = digitalRead(BUTTON1_PIN);
button_state2 = digitalRead(BUTTON2_PIN);
}
void btn() {
last_button_state1 = button_state1; // save the last state
button_state1 = digitalRead(BUTTON1_PIN); // read new state
if (last_button_state1 == HIGH && button_state1 == LOW) {
Serial.println("The button is pressed");
// toggle state of relay
relay_state1 = !relay_state1;
// control relay arccoding to the toggled state
digitalWrite(RELAY1, relay_state1);
}
}
void relay_state()
{
if(state1 ==1 )
{
digitalWrite(RELAY1, HIGH);
LCD.setCursor(8, 0);
LCD.println("DC1 ON");
}
else
{
digitalWrite(RELAY1, LOW);
LCD.setCursor(8, 0);
LCD.println("DC1 OFF");
}
if(state2 ==1 )
{
digitalWrite(RELAY1, HIGH);
LCD.setCursor(0, 1);
LCD.println("DC2 ON");
}
else
{
digitalWrite(RELAY1, LOW);
LCD.setCursor(0, 1);
LCD.println("DC2 OFF");
}
}
void cbdht()
{
float t = dht.readTemperature();
float h = dht.readHumidity();
if(t < 32)
{
state1 = 1;
}
else{
state1 =2;
}
}
void loop() {
cbdht();
relay_state();
btn();
delay(200);
}