/*
Versao 0.1
Criado por:Fabio Tec
*/
#define S1 0 // PB0
#define S2 1 // PB1
#define S3 2 // PB2
#define S4 3 // PB3
#define BUTTON 4 // PB4
int estado = 0; // controla qual LED está ativo
void setup() {
pinMode(S1, OUTPUT);
pinMode(S2, OUTPUT);
pinMode(S3, OUTPUT);
pinMode(S4, OUTPUT);
pinMode(BUTTON, INPUT_PULLUP);
ContRele(); // atualiza LEDs no início
}
void loop() {
Button(); // verifica botão e atualiza estado
ContRele(); // atualiza LEDs conforme estado
}
// Função para controlar os LEDs
void ContRele() {
digitalWrite(S1, LOW);
digitalWrite(S2, LOW);
digitalWrite(S3, LOW);
digitalWrite(S4, LOW);
if (estado == 1) digitalWrite(S1, HIGH);
else if (estado == 2) digitalWrite(S2, HIGH);
else if (estado == 3) digitalWrite(S3, HIGH);
else if (estado == 4) digitalWrite(S4, HIGH);
}
// Função para tratar o botão com debounce
void Button() {
static bool lastButtonState = HIGH;
bool buttonState = digitalRead(BUTTON);
if (lastButtonState == HIGH && buttonState == LOW) {
estado = (estado + 1) % 5; // alterna entre 0,1,2,3
delay(200); // debounce simples
}
lastButtonState = buttonState;
}