Advertisement
Guest User

relogio

a guest
May 30th, 2016
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <LiquidCrystal.h>
  2.  
  3. LiquidCrystal lcd(6, 7, 4, 5, 2, 3); //Configura os pinos do Arduino para se comunicar com o LCD
  4.  
  5. int temp;           //Inicia uma variável inteira(temp), para escrever no LCD a contagem do tempo
  6. int seg = 0;        //variavel do segundo
  7. int m = 0;          //variavel do minito do relógio
  8. int h = 0;          //variavel da hora do relógio
  9. int ma = 0;         //variavel do minuto do alarme
  10. int ha = 0;         //variavel da hora do alarme
  11. int dia = 0;        //variavel do dia
  12. int ativa = 0;      //variavel para ativar e desativar o alarme
  13. int botao = 0;      //variavel do menu de ajuste
  14. int led = 0;        //variavel do led
  15. byte LED;                       // Variavel para LED
  16.  
  17. void AcendeLED()                // Funcao para piscar LED no Pino 8
  18. {
  19.    if (m < 1)                   // So pisca se for menor que 1 minuto em cada hora
  20.    {
  21.     if (seg <10)                // So pisca durante 10 segundos
  22.     {
  23.       LED = !LED;               // Se tiver 1 fica zero e vice versa
  24.       digitalWrite(8,LED);     // Liga ou desliga o LED
  25.     }
  26.   }
  27. }
  28.  
  29. void tempo()
  30. {
  31.   if ((h > 17) || (h < 6))      // Se for entre 18 e 5 horas
  32.   {
  33.     AcendeLED();                // Pisca o LED
  34.   }
  35.  
  36.   if (seg < 60) //incrementa na variável seg um valor por segundo
  37.                
  38.   {
  39.     seg++;
  40.     delay(1000);  //espera um segundo
  41.   }
  42.   else if (seg == 60) //incrementa na variável m a cada minuto
  43.   {
  44.     seg = 0;
  45.     m++;
  46.     if (m == 60) //incrementa na variável h a cada hora
  47.     {
  48.       seg = 0;
  49.       m = 0;
  50.       h++;
  51.       if (h == 24) //incrementa na variável dia a cada 24 horas
  52.       {
  53.         seg = 0;
  54.         m = 0;
  55.         h = 0;
  56.         dia++;
  57.         if (dia == 7) // zera todas as variaveis
  58.         {
  59.           seg = 0;
  60.           m = 0;
  61.           h = 0;
  62.           dia = 0;
  63.         }
  64.       }
  65.     }
  66.   }
  67. }
  68.  
  69. void acendeLED() // o rui ainda não me falou o que faz.
  70. {
  71.  
  72. }
  73.  
  74. void setup()
  75. {
  76.   pinMode(13, OUTPUT);
  77.   pinMode(12, INPUT);
  78.   pinMode(11, INPUT);
  79.   pinMode(10, INPUT);
  80.   pinMode(9, INPUT);
  81.   pinMode(8, OUTPUT);
  82.  
  83.   lcd.begin(16, 2);           //Inicia o LCD com dimensões 16x2(Colunas x Linhas)
  84.  
  85. }
  86.  
  87. void loop()
  88. {
  89.   tempo();
  90.   if (h < 10)                //if da hora do relógio menor que 9
  91.   {
  92.     lcd.setCursor(0, 0);     //posiciona o cursor
  93.     lcd.print("0");          //escreve o zero antes da variavel no LCD (só funciona se for menor q 9)
  94.     lcd.setCursor(1, 0);     //posiciona o cursor
  95.     lcd.print(h);            //escreve a variavel no LCD
  96.   }
  97.   else                       //else da hora do relógio maior que 10
  98.   {
  99.     lcd.setCursor(0, 0);     //posiciona o cursor
  100.     lcd.print(h);            //escreve a variavel no LCD
  101.   }
  102.   if (m < 10)                //if do minuto do relógio menor que 9
  103.   {
  104.     lcd.setCursor(2, 0);     //posiciona o cursor
  105.     lcd.print(":0");         //escreve dois pontos e o zero antes da variavel no LCD (só funciona se for menor q 9)    
  106.     lcd.setCursor(4, 0);     //posiciona o cursor
  107.     lcd.print(m);            //escreve a variavel no LCD
  108.   }
  109.   else                       //else do minuto do relógio maior que 10
  110.   {
  111.     lcd.setCursor(2, 0);     //posiciona o cursor
  112.     lcd.print(":");          //escreve o : antes da variavel no LCD (só funciona se for menor q 9)
  113.     lcd.setCursor(3, 0);     //posiciona o cursor
  114.     lcd.print(m);            //escreve a variavel no LCD
  115.   }
  116.   if (seg < 10)              //if da segundo do relógio menor que 9
  117.   {
  118.     lcd.setCursor(5, 0);     //posiciona o cursor
  119.     lcd.print(":0");         //escreve dois pontos e o zero antes da variavel no LCD (só funciona se for menor q 9)
  120.     lcd.setCursor(7, 0);     //posiciona o cursor
  121.     lcd.print(seg);          //escreve a variavel no LCD
  122.   }
  123.   else                       //else do segundo do relógio maior que 10
  124.   {
  125.     lcd.setCursor(5, 0);     //posiciona o cursor
  126.     lcd.print(":");          //escreve o : antes da variavel no LCD (só funciona se for menor q 9)
  127.     lcd.setCursor(6, 0);     //posiciona o cursor
  128.     lcd.print(seg);          //escreve a variavel no LCD
  129.   }
  130.  
  131.   switch (dia)               //switch para selecionar o dia da semana
  132.   {
  133.     case 0:
  134.       lcd.setCursor(9, 0);   //posiciona o cursor
  135.       lcd.print("D");        //escreve o dia no LCD
  136.       break;
  137.     case 1:
  138.       lcd.setCursor(9, 0);   //posiciona o cursor
  139.       lcd.print("S");        //escreve o dia no LCD
  140.       break;
  141.     case 2:
  142.       lcd.setCursor(9, 0);   //posiciona o cursor
  143.       lcd.print("T");        //escreve o dia no LCD
  144.       break;
  145.     case 3:
  146.       lcd.setCursor(9, 0);   //posiciona o cursor
  147.       lcd.print("Q");        //escreve o dia no LCD
  148.       break;
  149.     case 4:
  150.       lcd.setCursor(9, 0);   //posiciona o cursor
  151.       lcd.print("Q");        //escreve o dia no LCD
  152.       break;
  153.     case 5:
  154.       lcd.setCursor(9, 0);   //posiciona o cursor
  155.       lcd.print("S");        //escreve o dia no LCD
  156.       break;
  157.     default:
  158.       lcd.setCursor(9, 0);   //posiciona o cursor
  159.       lcd.print("S");        //escreve o dia no LCD
  160.       break;
  161.   }
  162.   if (ha < 10)
  163.   {
  164.     lcd.setCursor(0, 1);    //posiciona o cursor
  165.     lcd.print("0");         //escreve o zero antes da variavel no LCD (só funciona se for menor q 9)
  166.     lcd.setCursor(1, 1);    //posiciona o cursor
  167.     lcd.print(ha);          //escreve a variavel no LCD
  168.   }
  169.   else                      //else da hora do alarme maior que 10
  170.   {
  171.     lcd.setCursor(0, 1);    //posiciona o cursor
  172.     lcd.print(ha);          //escreve a variavel no LCD
  173.   }
  174.   if (ma < 10)
  175.   {
  176.     lcd.setCursor(2, 1);    //posiciona o cursor
  177.     lcd.print(":0");        //escreve dois pontos e o zero antes da variavel no LCD (só funciona se for menor q 9)
  178.     lcd.setCursor(4, 1);    //posiciona o cursor
  179.     lcd.print(ma);          //escreve a variavel no LCD
  180.   }
  181.   else
  182.   {
  183.     lcd.setCursor(2, 1);    //posiciona o cursor
  184.     lcd.print(":");         //escreve dois pontos antes da variavel no LCD (só funciona se for menor q 9)
  185.     lcd.setCursor(3, 1);    //posiciona o cursor
  186.     lcd.print(ma);          //escreve a variavel no LCD
  187.   }
  188.  
  189.   lcd.setCursor(11, 0);    //posiciona o cursor
  190.   lcd.print("Menu");       //escreve uma mensagem antes da variavel
  191.   lcd.setCursor(15, 0);    //posiciona o cursor
  192.   lcd.print(botao);        //escreve a variavel no LCD
  193.   lcd.setCursor(6, 1);     //posiciona o cursor
  194.   lcd.print("Alarme");     //escreve uma mensagem antes da variavel
  195.  
  196.   if (digitalRead(9) == LOW)//if para editar o próximo item
  197.   {
  198.     botao++;
  199.   }
  200.  
  201.   switch (botao)
  202.   {
  203.     case 0:
  204.       if (digitalRead(10) == LOW) //Se precionar o botão + acrecenta uma hora
  205.       {
  206.         if (h == 23)              //até 23 e ele volta para o 0
  207.         {
  208.           h = 0;
  209.         }
  210.         else
  211.         {
  212.           h++;
  213.         }
  214.       }
  215.       if (digitalRead(11) == LOW)  //Se precionar o botão - subitrai uma hora
  216.       {
  217.         if (h == 0)              //até 0 e ele vota para o 23
  218.         {
  219.           h = 23;
  220.         }
  221.         else
  222.         {
  223.           h--;
  224.         }
  225.       }
  226.       break;
  227.     case 1:
  228.       if (digitalRead(10) == LOW)  //Se precionar o botão + acrecenta um minuto
  229.       {
  230.         if (m == 59)               //até 59 depois ele volta para 0
  231.         {
  232.           m = 0;
  233.         }
  234.         else
  235.         {
  236.           m++;
  237.         }
  238.       }
  239.       if (digitalRead(11) == LOW)  //Se precionar o botão - subitrai um minuto
  240.       {
  241.         if (m == 0)                //até 0 depois ele volta para 59
  242.         {
  243.           m = 59;
  244.         }
  245.         else
  246.         {
  247.           m--;
  248.         }
  249.       }
  250.       break;
  251.     case 2:
  252.       if (digitalRead(10) == LOW)  //Se precionar o botão + adiciona um dia
  253.       {
  254.         if (dia == 7)              //até 7 que seria domingo (D) depois volta para 0, segunda (S)
  255.         {
  256.           dia = 0;
  257.         }
  258.         else
  259.         {
  260.           dia++;
  261.         }
  262.       }
  263.       if (digitalRead(11) == LOW) //se precionar o botão - subtrai um dia
  264.       {
  265.         if (dia == 0)              //até 0 que seria segunda (S) depois volta para 7, domingo (D)
  266.         {
  267.           dia = 7;
  268.         }
  269.         else
  270.         {
  271.           dia--;
  272.         }
  273.       }
  274.       break;
  275.     case 3:
  276.       if (digitalRead(10) == LOW) //Se precionar o botão + acrecenta uma hora no alarme
  277.       {
  278.         if (ha == 23)
  279.         {
  280.           ha = 0;
  281.         }
  282.         else
  283.         {
  284.           ha++;
  285.         }
  286.       }
  287.       if (digitalRead(11) == LOW) //Se precionar o botão - subitrai uma hora no alarme
  288.       {
  289.         if (ha == 0)
  290.         {
  291.           ha = 23;
  292.         }
  293.         else
  294.         {
  295.           ha--;
  296.         }
  297.       }
  298.       break;
  299.     case 4:
  300.       if (digitalRead(10) == LOW) //Se precionar o botão + acrecenta um minuto no alarme
  301.       {
  302.         if (ma == 59)
  303.         {
  304.           ma = 0;
  305.         }
  306.         else
  307.         {
  308.           ma++;
  309.         }
  310.       }
  311.       if (digitalRead(11) == LOW) //Se precionar o botão - subitrai um minuto no alarme
  312.       {
  313.         if (ma == 0)
  314.         {
  315.           ma = 59;
  316.         }
  317.         else
  318.         {
  319.           ma--;
  320.         }
  321.       }
  322.       break;
  323.     default:
  324.       botao = 0;
  325.       break;
  326.   }
  327.  
  328.   if (ativa == 1)                //verifica se o alarme esta ativo
  329.   {
  330.     lcd.setCursor(13, 1);
  331.     lcd.print("on ");            // se estiver ativo escreve on
  332.   }
  333.   else
  334.   {
  335.     lcd.setCursor(13, 1);
  336.     lcd.print("off");            // se não escreve off
  337.   }
  338.  
  339.   if (digitalRead(12) == LOW)    //botão para ativar ou desativar o alarme
  340.   {
  341.     if (ativa == 0)
  342.     {
  343.       ativa++;
  344.       lcd.setCursor(13, 1);
  345.       lcd.print("on ");          //escreve mais uma vez no LCD on
  346.     }
  347.     else
  348.     {
  349.       ativa--;
  350.       lcd.setCursor(13, 1);
  351.       lcd.print("off");         //escreve mais uma vez no LCD off
  352.     }
  353.   }
  354.  
  355.   if (h == ha && m == ma)       // se a hora e o minuto do alarme forem iguais aciona o rele
  356.   {
  357.     if (ativa == 1)             // somente se o alarme estiver na posição de on
  358.     {
  359.       digitalWrite(13, HIGH);
  360.     }
  361.     else                        // se não ele confirma o desligamento do rele
  362.     {
  363.       digitalWrite(13, LOW);
  364.     }
  365.  
  366.   }
  367.   else                          // confirma mais uma vez o desligamento do rele
  368.   {
  369.     digitalWrite(13, LOW);
  370.   }
  371. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement