Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Preciso ligar um led quando botão high,
- se esta low desliga,
- se apertar outra vez, liga o outro led,
- se soltar desliga, e segue nesse loop
- */
- #define botao 2 // Botao
- #define LedA 12 // Leda par uma vez
- #define LedB 13 // Led final
- byte Flag = 0; // Flag de controle
- byte debouc = 5; // Valor de delay para debouncing
- //------------------------------
- void setup()
- {
- pinMode(botao, INPUT_PULLUP); // Define port de botao como entrada
- pinMode(LedB, OUTPUT); // Define port LedA como saida
- pinMode(LedB, OUTPUT); // Define port LedB como saida
- }
- //------------------------------
- void loop()
- {
- if (Flag == 0) // Fase 0 acender LedA
- {
- if (digitalRead(botao) == HIGH) // Se o botao esta liberado
- {
- digitalWrite(LedA, HIGH); // LedA acesso
- Flag = 1; // Informa LedA acesso
- }
- }
- if (Flag == 1) // Fase 1 apagar LedA
- {
- while (digitalRead(botao) == LOW) // Enquanto o botao estiver apertado
- {
- delay(debouc);
- while (digitalRead(botao) == LOW) // Enquanto o botao continua apertado
- {
- delay(debouc);
- digitalWrite(LedA, LOW); // LedA apagado
- Flag = 2; // Informa LedA apagado
- }
- delay(debouc);
- }
- }
- if (Flag == 2) // Fase 2 acender LedB
- {
- {
- while (digitalRead(botao) == LOW) // Enquanto o botao estiver apertado
- {
- delay(debouc);
- while (digitalRead(botao) == LOW) // Enquanto o botao continua apertado
- {
- delay(debouc);
- digitalWrite(LedB, HIGH); // LedB aceso
- if (digitalRead(botao) == HIGH) // Se o botao foi liberado
- {
- Flag = 3; // Informa LedB acesso
- }
- }
- }
- }
- }
- if (Flag == 3) // Fase 3 apagar LedB
- {
- if (digitalRead(botao) == HIGH) // Se o botao estiver liberado
- {
- delay(debouc);
- if (digitalRead(botao) == HIGH) // Se o botao estiver liberado
- {
- digitalWrite(LedB, LOW); // Apaga LedB
- Flag = 0; // Informa LedB apagado
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement