Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Liga led com tempos variados V02
- // para uso educativo
- // Rui 20/05/2015
- int Botao = 2; // Botão tem que ser no pino 2
- int Led[] = {4, 5, 6, 7, 8, 9, 10, 11, 12, 13}; // Leds
- long Tempo[10]; // tempo de acendimento do LED
- int BotaoSeq = 0; // Sequencia de acendimento do LED
- // ------------------------------- Seup ---------------------------
- void setup()
- {
- pinMode(Botao,INPUT); // botao entrada
- digitalWrite(Botao,HIGH); // Pull-up
- for(int i=0; i<10; i++)
- {
- pinMode(Led[i], OUTPUT);
- }
- attachInterrupt(0, LigaLed, FALLING); // Enable interrupt 0 no pino D2
- }
- // ---------------------------------- LigaLed -------------------------------
- void LigaLed() // Rotina de tratamento do itrpt
- {
- if (BotaoSeq == 10) BotaoSeq = 0; // Se contagem = 10 zera contagem
- Tempo[BotaoSeq] = 1; // Tempo = 1 no Led indicado pelo botão
- for (unsigned j = 0; j < 10; j++) // Faça 10 vezes
- {
- if (Tempo[j] > 0 ) // Se tempo maior que zero
- {
- Tempo[j] = Tempo[j] + 10000; // Some mais 10000 (ajustar este tempo para 1seg)
- }
- }
- BotaoSeq++; // Incrementa contagem de LED
- }
- // --------------------------- loop --------------------------
- void loop()
- {
- for(;;) // Faça sempre
- {
- for (unsigned k = 0; k < 10; k++) // Faça 10 vezes
- {
- Tempo[k]--; // Decrementa tempo de cada LED
- if (Tempo[k]< 0) Tempo[k] = 0; // Se ficar negativo, zera
- }
- for (unsigned L = 0; L < 10; L++) // Faça 10 vezes
- {
- if (Tempo[L] >0) digitalWrite(Led[L],HIGH); // Se tiver tempo acende LED
- else digitalWrite(Led[L],LOW); // Se não apague
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement