#include <IRremote.h>
const uint16_t rec_pin = 27;
int button_pin[3] = {14,12,13};
int button_state[3] = {1,1,1};
int relay_pin[3] = {4,2,15};
int relay_state[3] ={};
bool buttonPress(int button_pin);
void checkButtons();
void updateRelay();
IRrecv receiver(rec_pin);
decode_results results;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
receiver.enableIRIn();
Serial.println("Hello, ESP32!");
for (int i=0; i<3; i++){
pinMode(button_pin[i], INPUT_PULLUP);
pinMode(relay_pin[i], OUTPUT);
}
}
void loop() {
}
bool buttonPress(int btn){
int val = digitalRead(button_pin[btn]);
if (val== LOW and button_state[btn] == 1){
button_state[btn] = 0;
Serial.print(btn);
Serial.println(" button pressed");
return true;
}if(val == HIGH){
button_state[btn] = 1;
}
return false;
}
void checkButtons(){
for (int i=0; i<3; i++){
if(buttonPress(i)){
relay_state[i] = !(relay_state[i]);
}
}
return;
}
void updateRelay(){
for (int i=0; i<3; i++){
digitalWrite(relay_pin[i],relay_state[i]);
}
return;
}