/******************************************
| ESP32 IR RELAY CHALLENGE: |
| UNLEASH THE POWER OF REMOTE CONTROL |
| SUBMITTED BY: MAGAT, ANGELO G. |
| SUBMITTED TO: PROF. MICHAEL T. SAMONTE |
|*****************************************/
#include <IRremote.h>
#include <LiquidCrystal_I2C.h>
IRrecv IR(35);
#define GBUTTON_1 26
#define GBUTTON_2 25
#define GBUTTON_3 33
#define GBUTTON_4 32
int GRELAY1 = 19;
int GRELAY2 = 18;
int GRELAY3 = 5;
int GRELAY4 = 17;
int GRELAY1_STATE = 0;
int GRELAY2_STATE = 0;
int GRELAY3_STATE = 0;
int GRELAY4_STATE = 0;
LiquidCrystal_I2C lcd(0x27, 20, 4);
void setup()
{
IR.enableIRIn();
Serial.begin(115200);
pinMode(GBUTTON_1, INPUT_PULLUP);
pinMode(GBUTTON_2, INPUT_PULLUP);
pinMode(GBUTTON_3, INPUT_PULLUP);
pinMode(GBUTTON_4, INPUT_PULLUP);
pinMode(GRELAY1, OUTPUT);
pinMode(GRELAY2, OUTPUT);
pinMode(GRELAY3, OUTPUT);
pinMode(GRELAY4, OUTPUT);
digitalWrite(GRELAY1, HIGH);
digitalWrite(GRELAY2, HIGH);
digitalWrite(GRELAY3, HIGH);
digitalWrite(GRELAY4, HIGH);
lcd.init();
lcd.backlight();
}
void loop()
{
lcd.clear();
listen_push_buttons();
lcd.setCursor(0, 0);
lcd.print("| Created By: |");
lcd.setCursor(0, 1);
lcd.print("| -Angelo G. Magat-|");
lcd.setCursor(0, 2);
lcd.print("STATE:");
if (IR.decode()) {
Serial.println(IR.decodedIRData.decodedRawData, HEX);
// Use the correct IR codes from your remote control
if (IR.decodedIRData.decodedRawData == 0xCF30FF00) {
if(digitalRead(GRELAY1)== HIGH){
digitalWrite(GRELAY1, LOW);
lcd.setCursor(0, 3);
lcd.print("FIRST BULB IS OFF");
}
else if (digitalRead(GRELAY1)== LOW){
digitalWrite(GRELAY1, HIGH);
lcd.setCursor(0, 3);
lcd.print("FIRST BULB IS ON");
}
}
if (IR.decodedIRData.decodedRawData == 0xE718FF00) {
if(digitalRead(GRELAY2)== HIGH){
digitalWrite(GRELAY2, LOW);
lcd.setCursor(0, 3);
lcd.print("SECOND BULB IS OFF");
}
else if (digitalRead(GRELAY2)== LOW){
digitalWrite(GRELAY2, HIGH);
lcd.setCursor(0, 0);
lcd.setCursor(0, 3);
lcd.print("SECOND BULB IS ON");
}
}
if (IR.decodedIRData.decodedRawData == 0x857AFF00) {
if(digitalRead(GRELAY3)== HIGH){
digitalWrite(GRELAY3, LOW);
lcd.setCursor(0, 3);
lcd.print("THIRD BULB IS OFF");
}
else if (digitalRead(GRELAY3)== LOW){
digitalWrite(GRELAY3, HIGH);
lcd.setCursor(0, 3);
lcd.print("THIRD BULB IS ON");
}
}
if (IR.decodedIRData.decodedRawData == 0xEF10FF00) {
if(digitalRead(GRELAY4)== HIGH){
digitalWrite(GRELAY4, LOW);
lcd.setCursor(0, 3);
lcd.print("FOURTH BULB IS OFF");
}
else if (digitalRead(GRELAY4)== LOW){
digitalWrite(GRELAY4, HIGH);
lcd.setCursor(0, 3);
lcd.print("FOURTH BULB IS ON");
}
}
if (IR.decodedIRData.decodedRawData == 0xFF52AD) {
digitalWrite(GRELAY1, LOW);
digitalWrite(GRELAY2, LOW);
digitalWrite(GRELAY3, LOW);
digitalWrite(GRELAY4, LOW);
lcd.setCursor(0, 3);
lcd.print("ALL THE BULBS ARE OFF");
}
if (IR.decodedIRData.decodedRawData == 0xFF52AD) {
digitalWrite(GRELAY1, HIGH);
digitalWrite(GRELAY2, HIGH);
digitalWrite(GRELAY3, HIGH);
digitalWrite(GRELAY4, HIGH);
lcd.setCursor(0, 3);
lcd.print("ALL THE BULBS ARE ON");
}
IR.resume();
}
delay(2000);
}
void listen_push_buttons()
{
if(digitalRead(GBUTTON_1) == HIGH){
delay(200);
control_relay(1);
digitalWrite(GBUTTON_1, GRELAY1_STATE); //update button state
}
else if (digitalRead(GBUTTON_2) == HIGH){
delay(200);
control_relay(2);
digitalWrite(GBUTTON_2, GRELAY2_STATE); //update button state
}
else if (digitalRead(GBUTTON_3) == HIGH){
delay(200);
control_relay(3);
digitalWrite(GBUTTON_3, GRELAY3_STATE); //update button state
}
else if (digitalRead(GBUTTON_4) == HIGH){
delay(200);
control_relay(4);
digitalWrite(GBUTTON_4, GRELAY4_STATE); //update button state
}
}
void control_relay(int relay){
//------------------------------------------------
if(relay == 1){
GRELAY1_STATE = !GRELAY1_STATE;
digitalWrite(GRELAY1, GRELAY1_STATE);
Serial.print("Relay1 State = ");
Serial.println(GRELAY1_STATE);
delay(50);
}
//------------------------------------------------
else if(relay == 2){
GRELAY2_STATE = !GRELAY2_STATE;
digitalWrite(GRELAY2, GRELAY2_STATE);
Serial.print("Relay2 State = ");
Serial.println(GRELAY2_STATE);
delay(50);
}
//------------------------------------------------
else if(relay == 3){
GRELAY3_STATE = !GRELAY3_STATE;
digitalWrite(GRELAY3, GRELAY3_STATE);
Serial.print("Relay3 State = ");
Serial.println(GRELAY3_STATE);
delay(50);
}
//------------------------------------------------
else if(relay == 4){
GRELAY4_STATE = !GRELAY4_STATE;
digitalWrite(GRELAY4, GRELAY4_STATE);
Serial.print("Relay4 State = ");
Serial.println(GRELAY4_STATE);
delay(50);
}
//------------------------------------------------
}