//Definir os pinos do ESP32 que estão conectados ao 74HC595
#define DATA_PIN 23 // pino DATA (DS)
#define LATCH_PIN 22 // pino LATCH (ST_CP)
#define CLOCK_PIN 21 // pino CLOCK (SH_CP)
//Definir as saídas do 74HC595 conectadas aos relés
#define RELAY_PIN1 0 // pino Q0 do 74HC595
#define RELAY_PIN2 1 // pino Q1 do 74HC595
//Definir as entradas conectadas aos switches
#define SWITCH_PIN1 2 // pino do primeiro switch
#define SWITCH_PIN2 15 // pino do segundo switch
void setup() {
//Definir os pinos do ESP32 como saída
pinMode(DATA_PIN, OUTPUT);
pinMode(LATCH_PIN, OUTPUT);
pinMode(CLOCK_PIN, OUTPUT);
//Definir os pinos do ESP32 como entrada
pinMode(SWITCH_PIN1, INPUT_PULLUP);
pinMode(SWITCH_PIN2, INPUT_PULLUP);
}
void loop() {
//Ler o estado dos switches e armazenar em uma variável
int switchState1 = digitalRead(SWITCH_PIN1);
int switchState2 = digitalRead(SWITCH_PIN2);
//Criar uma variável de 8 bits com os estados dos switches
byte dataToSend = (switchState2 << 1) | switchState1;
//Enviar os dados para o 74HC595
digitalWrite(LATCH_PIN, LOW);
shiftOut(DATA_PIN, CLOCK_PIN, MSBFIRST, dataToSend);
digitalWrite(LATCH_PIN, HIGH);
//Ler o estado das saídas do 74HC595 e atualizar o estado dos relés
boolean relayState1 = bitRead(dataToSend, RELAY_PIN1);
boolean relayState2 = bitRead(dataToSend, RELAY_PIN2);
digitalWrite(RELAY_PIN1, relayState1);
digitalWrite(RELAY_PIN2, relayState2);
//Aguardar um pouco antes de repetir
delay(100);
}