#define liga 27
#define desliga 14
#define K1 33
#define K2 25
#define K3 26
#define K4 32
bool ler_liga = 0;
bool ler_desliga = 0;
// Variáveis para controlar o tempo do processo de 'liga'
unsigned long tempo_acionado_k1_k2 = 0;
bool processo_em_andamento = false;
void setup() {
Serial.begin(115200);
pinMode(liga, INPUT);
pinMode(desliga, INPUT);
pinMode(K1, OUTPUT);
pinMode(K2, OUTPUT);
pinMode(K3, OUTPUT);
pinMode(K4, OUTPUT);
// Garante que os relés comecem desligados
digitalWrite(K1, LOW);
digitalWrite(K2, LOW);
digitalWrite(K3, LOW);
digitalWrite(K4, HIGH);
}
void loop() {
ler_liga = digitalRead(liga);
ler_desliga = digitalRead(desliga);
// --- Lógica de desligamento com prioridade ---
if (ler_desliga == 1) {
digitalWrite(K1, LOW);
digitalWrite(K2, LOW);
digitalWrite(K3, LOW);
digitalWrite(K4, HIGH);
Serial.println("Todos os reles desligados.");
processo_em_andamento = false; // Reinicia o processo
}
// --- Lógica de acionamento ---
if (ler_liga == 1 && !processo_em_andamento) {
digitalWrite(K1, HIGH);
digitalWrite(K2, HIGH);
digitalWrite(K4, LOW);
Serial.println("K1 e K2 acionados.");
tempo_acionado_k1_k2 = millis(); // Salva o tempo atual
processo_em_andamento = true;
}
// --- Lógica para o segundo passo do acionamento, que não bloqueia ---
if (processo_em_andamento && (millis() - tempo_acionado_k1_k2 >= 5000)) {
digitalWrite(K2, LOW);
digitalWrite(K3, HIGH);
Serial.println("K1 e K3 acionados.");
processo_em_andamento = false; // Finaliza o processo, pode ser reiniciado
}
}