Advertisement
RuiViana

Untitled

May 20th, 2015
451
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.22 KB | None | 0 0
  1. // Liga led com tempos variados
  2. // para uso educativo
  3. // Rui 20/05/2015
  4.  
  5. int Botao = 2; // Botão tem que ser no pino 2
  6. int Led0 = 4; // Leds
  7. int Led1 = 5;
  8. int Led2 = 6;
  9. int Led3 = 7;
  10. int Led4 = 8;
  11. int Led5 = 9;
  12. int Led6 = 10;
  13. int Led7 = 11;
  14. int Led8 = 12;
  15. int Led9 = 13;
  16. long Tempo[10]; // tempo de acendimento do LED
  17. int BotaoSeq = 0; // Sequencia de acendimento do LED
  18.  
  19. // ------------------------------- Seup ---------------------------
  20. void setup()
  21. {
  22. pinMode(Botao,INPUT); // botao entrada
  23. digitalWrite(Botao,HIGH); // Pull-up
  24. pinMode(Led0,OUTPUT); // Led0 Saida
  25. pinMode(Led1,OUTPUT); // Led1 Saida
  26. pinMode(Led2,OUTPUT); // Led2 Saida
  27. pinMode(Led3,OUTPUT); // Led3 Saida
  28. pinMode(Led4,OUTPUT); // Led4 Saida
  29. pinMode(Led5,OUTPUT); // Led5 Saida
  30. pinMode(Led6,OUTPUT); // Led6 Saida
  31. pinMode(Led7,OUTPUT); // Led7 Saida
  32. pinMode(Led8,OUTPUT); // Led8 Saida
  33. pinMode(Led9,OUTPUT); // Led9 Saida
  34.  
  35. attachInterrupt(0, LigaLed, FALLING); // Enable interrupt 0 no pino D2
  36. }
  37. // ---------------------------------- LigaLed -------------------------------
  38. void LigaLed() // Rotina de tratamento do itrpt
  39. {
  40. if (BotaoSeq == 10) BotaoSeq = 0; // Se contagem = 10 zera contagem
  41. Tempo[BotaoSeq] = 1; // Tempo = 1 no Led indicado pelo botão
  42. for (unsigned j = 0; j < 10; j++) // Faça 10 vezes
  43. {
  44. if (Tempo[j] > 0 ) // Se tempo maior que zero
  45. {
  46. Tempo[j] = Tempo[j] + 10000; // Some mais 10000 (ajustar este tempo para 1seg)
  47. }
  48. }
  49. BotaoSeq++; // Incrementa contagem de LED
  50. }
  51. // --------------------------- loop --------------------------
  52. void loop()
  53. {
  54. for(;;) // Faça sempre
  55. {
  56. for (unsigned k = 0; k < 10; k++) // Faça 10 vezes
  57. {
  58. Tempo[k]--; // Decrementa tempo de cada LED
  59. if (Tempo[k]< 0) Tempo[k] = 0; // Se ficar negativo, zera
  60. }
  61.  
  62. if (Tempo[0] >0) digitalWrite(Led0,HIGH); // Se tiver tempo acende LED
  63. else digitalWrite(Led0,LOW); // Se não apague
  64. if (Tempo[1] >0) digitalWrite(Led1,HIGH);
  65. else digitalWrite(Led1,LOW);
  66. if (Tempo[2] >0) digitalWrite(Led2,HIGH);
  67. else digitalWrite(Led2,LOW);
  68. if (Tempo[3] >0) digitalWrite(Led3,HIGH);
  69. else digitalWrite(Led3,LOW);
  70. if (Tempo[4] >0) digitalWrite(Led4,HIGH);
  71. else digitalWrite(Led4,LOW);
  72. if (Tempo[5] >0) digitalWrite(Led5,HIGH);
  73. else digitalWrite(Led5,LOW);
  74. if (Tempo[6] >0) digitalWrite(Led6,HIGH);
  75. else digitalWrite(Led6,LOW);
  76. if (Tempo[7] >0) digitalWrite(Led7,HIGH);
  77. else digitalWrite(Led7,LOW);
  78. if (Tempo[8] >0) digitalWrite(Led8,HIGH);
  79. else digitalWrite(Led8,LOW);
  80. if (Tempo[9] >0) digitalWrite(Led9,HIGH);
  81. else digitalWrite(Led9,LOW);
  82. }
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement