Advertisement
RuiViana

Tempo_Com_TimerOne

Jan 18th, 2017
260
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.22 KB | None | 0 0
  1. #include <TimerOne.h>                                                       // Biblioteca do timer1
  2. #include <LiquidCrystal_I2C.h>                                              // Biblioteca  I2C LCD
  3. LiquidCrystal_I2C lcd(0x38,  2, 1, 0, 7, 6, 5, 4, 3, POSITIVE);             //   <--------- Meu LCD
  4.  
  5. #define Rele 5                            // Port 5 Rele
  6. unsigned int Tempo = 0;                   // Tempode controle
  7. byte ligado = 0;                          // Controle do estado do rele
  8. unsigned int Ligar = 180;                 // Tempo para ligar o rele
  9. unsigned int Desligar = 15;               // Tempo para desligar o rele
  10. //-----------------------------------
  11. void setup()
  12. {
  13.   lcd.begin(16, 2);                       // Inicialisando o LCD
  14.   pinMode(Rele, OUTPUT);                  // Define Rele como saída
  15.   lcd.setCursor(0, 0);                    // Posicione cursor do LCD na linha 0 posicao 0
  16.   lcd.print("LIGAR    DESLIG.");          // Escreva "LIGAR    DESLIG."
  17.   Timer1.initialize(1000000);             // inicialisa timer1, para um periodo de 1 segundo
  18.   Timer1.attachInterrupt( ContaTempo);    // Ativa ContaTempo() como contador de interrupt de overflow de Timer1
  19. }
  20. //-----------------------------------
  21. void loop()
  22. {
  23.   if (Tempo >= Ligar)                     // Se for maior ou igual ao tempo de ligar
  24.   {                                       // Faça
  25.     Tempo = 0;                            // Zera Tempo
  26.     ligado = 1;                           // Informa que ligou o rele
  27.     digitalWrite(Rele, HIGH);             // Liga Rele  (HIGH ou LOW?)
  28.   }                                       // Fim de se for maior ou igual ao tempo de ligar
  29.   lcd.setCursor(0, 1);                    // Posicione cursor do LCD na linha 1 posicao 0
  30.   if (ligado == 0)                        // Se rele estiver desligado
  31.   {                                       // Faça
  32.     lcd.print(Ligar - Tempo);             // Informe tempo que falta para ligar
  33.     lcd.print(" Seg               ");     // Escreva "Seg" e apague o resto
  34.   }                                       // Fim de se rele estiver desligado
  35.   if (ligado == 1)                        // Se o rele estiver ligado
  36.   {                                       // Faça
  37.     if (Tempo >= Desligar)                // Se for maior ou igual ao tempo de desligar
  38.     {                                     // Faça
  39.       Tempo = 0;                          // Zera Tempo
  40.       ligado = 0;                         // Informa que desligou o rele
  41.       digitalWrite(Rele, HIGH);           // Liga Rele  (LOW ou HIGH?)
  42.     }                                     // Fim de se for maior ou igual ao tempo de desligar
  43.     lcd.print("         ");               // Limpe o inicio da linha
  44.     lcd.print(Desligar - Tempo);          // Informe tempo que falta para desligar
  45.     lcd.print(" Seg ");                   // Escreva "Seg"
  46.   }                                       // Fim de se rele estiver ligado
  47. }                                         // Fim de loop
  48. //-----------------------------------
  49. void ContaTempo()                         // Interrupt de Timer1
  50. {
  51.   Tempo++;                                // Incrementa Tempo1
  52. }                                         // Fim de ContaTempo
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement