RuiViana

RA_Timer

Aug 31st, 2016
133
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <TimerOne.h> // Bibioteca TimerOne
  2. #define Lamp1 4 // Port para a lamp1
  3. #define Lamp2 5 // Port para a lamp2
  4. unsigned long Tempo = 0; // Variavel para contagem do tempo em segundos
  5. unsigned long HorarioI = 1150; // Horario inicial em decimal
  6. unsigned long Horario1 = 1730; // Horario em decimal para ligar lamp1
  7. unsigned long Horario2 = 1840; // Horario em decimal para desligar lamp1
  8. unsigned long Horario3 = 720; // Horario em decimal para ligar lamp2
  9. unsigned long Horario4 = 1400; // Horario em decimal para iniciar lamp2
  10. //-----------------------------------
  11. void setup()
  12. {
  13. Timer1.initialize(1000000); // inicialisa timer1, para um periodo de 1 segundo
  14. Timer1.attachInterrupt( ContaTempo); // Ativa ContaTempo() como contador de interrupt de overflow de Timer1
  15.  
  16. // Calculo para transformaçao do valor decimal em valor hora
  17. unsigned int HorarioI_temp = HorarioI / 100;
  18. HorarioI = (HorarioI_temp * 60) + (HorarioI - (HorarioI_temp * 100));
  19.  
  20. unsigned int Horario1_temp = Horario1 / 100;
  21. Horario1 = (Horario1_temp * 60) + (Horario1 - (Horario1_temp * 100));
  22.  
  23. unsigned int Horario2_temp = Horario2 / 100;
  24. Horario2 = (Horario2_temp * 60) + (Horario2 - (Horario2_temp * 100));
  25.  
  26. unsigned int Horario3_temp = Horario3 / 100;
  27. Horario3 = (Horario3_temp * 60) + (Horario3 - (Horario3_temp * 100));
  28.  
  29. unsigned int Horario4_temp = Horario4 / 100;
  30. Horario4 = (Horario4_temp * 60) + (Horario4 - (Horario4_temp * 100));
  31.  
  32. Tempo = HorarioI;
  33. }
  34. //-----------------------------------
  35. void loop()
  36. {
  37. if (Tempo >= 86399) Tempo = 0; // Zera a cada 24 horas
  38. if ((Tempo/60) >= Horario1) // Se pode ligar lamp1
  39. {
  40. if ((Tempo/60) <= Horario2) // Se ainda nao e hora de desligar
  41. {
  42. digitalWrite(Lamp1, HIGH); // Acende lamp1
  43. }
  44. else // Ou se ja e hora de desligar
  45. {
  46. digitalWrite(Lamp1, LOW); // Apaga lamp1
  47. }
  48. }
  49. if ((Tempo/60) >= Horario3) // Se pode ligar lamp2
  50. {
  51. if ((Tempo/60) <= Horario4) // Se ainda nao e hora de desligar
  52. {
  53. digitalWrite(Lamp2, HIGH); // Acende lamp2
  54. }
  55. else // Ou se ja e hora de desligar
  56. {
  57. digitalWrite(Lamp2, LOW); // Apaga lamp2
  58. }
  59. }
  60. }
  61. //-----------------------------------
  62. void ContaTempo() // Interrupt de Timer1
  63. {
  64. Tempo++; // Incrementa Tempo1 em segundos
  65. } // Fim de ContaTempo
RAW Paste Data