#define botao 2 // Define pino para o botão
int contador = 2; // Variavel para controle de pino LED
unsigned long ledAceso[20]; // Matriz para controle do tempo aceso
unsigned long tempo = 5000; // Tempo aceso (Ajuste à sua necessidade)
//-------------------------------------------------------------
void setup() {
for (int i = 3; i < 20; i++) {
pinMode(i, OUTPUT); // Define pinos d2 2 a 19 como saida
digitalWrite(i, LOW); // Apaga cada pino
}
pinMode(botao, INPUT_PULLUP); // Define pino botão como entrada
}
//-------------------------------------------------------------
void loop() {
if (digitalRead(botao) == LOW) // Verifica se botão foi pressionado
{
delay(30); // Tempo para evitar repique de botão
if (digitalRead(botao) == LOW) { // Confirma se botão ainda pressionado
contador ++; // Incrementa contador de pino
if (contador > 19) // Se pino maior que 19
contador = 3; // Vai para o primeiro pino
ledAceso[contador] = millis(); // Salva valor de milis() p/ controle do tempo
while (digitalRead(botao) == LOW) {} // Trava até o botão ser liberado
digitalWrite(contador, HIGH); // Liga o LED do pino contador
}
}
for (int i = 3; i < 20; i++) { // Verifica se passou o tempom de todos pinos
if (millis() - ledAceso[i] > tempo) { // Se passou de algum pino
digitalWrite(i, LOW); // Desliga o LED
}
}
}