Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <LiquidCrystal.h>
- LiquidCrystal lcd(6, 7, 4, 5, 2, 3); //Configura os pinos do Arduino para se comunicar com o LCD
- int temp; //Inicia uma variável inteira(temp), para escrever no LCD a contagem do tempo
- int seg = 0; //variavel do segundo
- int m = 0; //variavel do minito do relógio
- int h = 0; //variavel da hora do relógio
- int ma = 0; //variavel do minuto do alarme
- int ha = 0; //variavel da hora do alarme
- int dia = 0; //variavel do dia
- int ativa = 0; //variavel para ativar e desativar o alarme
- int botao = 0; //variavel do menu de ajuste
- int led = 0; //variavel do led
- byte LED; // Variavel para LED
- void AcendeLED() // Funcao para piscar LED no Pino 8
- {
- if (m < 1) // So pisca se for menor que 1 minuto em cada hora
- {
- if (seg <10) // So pisca durante 10 segundos
- {
- LED = !LED; // Se tiver 1 fica zero e vice versa
- digitalWrite(8,LED); // Liga ou desliga o LED
- }
- }
- }
- void tempo()
- {
- if ((h > 17) || (h < 6)) // Se for entre 18 e 5 horas
- {
- AcendeLED(); // Pisca o LED
- }
- if (seg < 60) //incrementa na variável seg um valor por segundo
- {
- seg++;
- delay(1000); //espera um segundo
- }
- else if (seg == 60) //incrementa na variável m a cada minuto
- {
- seg = 0;
- m++;
- if (m == 60) //incrementa na variável h a cada hora
- {
- seg = 0;
- m = 0;
- h++;
- if (h == 24) //incrementa na variável dia a cada 24 horas
- {
- seg = 0;
- m = 0;
- h = 0;
- dia++;
- if (dia == 7) // zera todas as variaveis
- {
- seg = 0;
- m = 0;
- h = 0;
- dia = 0;
- }
- }
- }
- }
- }
- void acendeLED() // o rui ainda não me falou o que faz.
- {
- }
- void setup()
- {
- pinMode(13, OUTPUT);
- pinMode(12, INPUT);
- pinMode(11, INPUT);
- pinMode(10, INPUT);
- pinMode(9, INPUT);
- pinMode(8, OUTPUT);
- lcd.begin(16, 2); //Inicia o LCD com dimensões 16x2(Colunas x Linhas)
- }
- void loop()
- {
- tempo();
- if (h < 10) //if da hora do relógio menor que 9
- {
- lcd.setCursor(0, 0); //posiciona o cursor
- lcd.print("0"); //escreve o zero antes da variavel no LCD (só funciona se for menor q 9)
- lcd.setCursor(1, 0); //posiciona o cursor
- lcd.print(h); //escreve a variavel no LCD
- }
- else //else da hora do relógio maior que 10
- {
- lcd.setCursor(0, 0); //posiciona o cursor
- lcd.print(h); //escreve a variavel no LCD
- }
- if (m < 10) //if do minuto do relógio menor que 9
- {
- lcd.setCursor(2, 0); //posiciona o cursor
- lcd.print(":0"); //escreve dois pontos e o zero antes da variavel no LCD (só funciona se for menor q 9)
- lcd.setCursor(4, 0); //posiciona o cursor
- lcd.print(m); //escreve a variavel no LCD
- }
- else //else do minuto do relógio maior que 10
- {
- lcd.setCursor(2, 0); //posiciona o cursor
- lcd.print(":"); //escreve o : antes da variavel no LCD (só funciona se for menor q 9)
- lcd.setCursor(3, 0); //posiciona o cursor
- lcd.print(m); //escreve a variavel no LCD
- }
- if (seg < 10) //if da segundo do relógio menor que 9
- {
- lcd.setCursor(5, 0); //posiciona o cursor
- lcd.print(":0"); //escreve dois pontos e o zero antes da variavel no LCD (só funciona se for menor q 9)
- lcd.setCursor(7, 0); //posiciona o cursor
- lcd.print(seg); //escreve a variavel no LCD
- }
- else //else do segundo do relógio maior que 10
- {
- lcd.setCursor(5, 0); //posiciona o cursor
- lcd.print(":"); //escreve o : antes da variavel no LCD (só funciona se for menor q 9)
- lcd.setCursor(6, 0); //posiciona o cursor
- lcd.print(seg); //escreve a variavel no LCD
- }
- switch (dia) //switch para selecionar o dia da semana
- {
- case 0:
- lcd.setCursor(9, 0); //posiciona o cursor
- lcd.print("D"); //escreve o dia no LCD
- break;
- case 1:
- lcd.setCursor(9, 0); //posiciona o cursor
- lcd.print("S"); //escreve o dia no LCD
- break;
- case 2:
- lcd.setCursor(9, 0); //posiciona o cursor
- lcd.print("T"); //escreve o dia no LCD
- break;
- case 3:
- lcd.setCursor(9, 0); //posiciona o cursor
- lcd.print("Q"); //escreve o dia no LCD
- break;
- case 4:
- lcd.setCursor(9, 0); //posiciona o cursor
- lcd.print("Q"); //escreve o dia no LCD
- break;
- case 5:
- lcd.setCursor(9, 0); //posiciona o cursor
- lcd.print("S"); //escreve o dia no LCD
- break;
- default:
- lcd.setCursor(9, 0); //posiciona o cursor
- lcd.print("S"); //escreve o dia no LCD
- break;
- }
- if (ha < 10)
- {
- lcd.setCursor(0, 1); //posiciona o cursor
- lcd.print("0"); //escreve o zero antes da variavel no LCD (só funciona se for menor q 9)
- lcd.setCursor(1, 1); //posiciona o cursor
- lcd.print(ha); //escreve a variavel no LCD
- }
- else //else da hora do alarme maior que 10
- {
- lcd.setCursor(0, 1); //posiciona o cursor
- lcd.print(ha); //escreve a variavel no LCD
- }
- if (ma < 10)
- {
- lcd.setCursor(2, 1); //posiciona o cursor
- lcd.print(":0"); //escreve dois pontos e o zero antes da variavel no LCD (só funciona se for menor q 9)
- lcd.setCursor(4, 1); //posiciona o cursor
- lcd.print(ma); //escreve a variavel no LCD
- }
- else
- {
- lcd.setCursor(2, 1); //posiciona o cursor
- lcd.print(":"); //escreve dois pontos antes da variavel no LCD (só funciona se for menor q 9)
- lcd.setCursor(3, 1); //posiciona o cursor
- lcd.print(ma); //escreve a variavel no LCD
- }
- lcd.setCursor(11, 0); //posiciona o cursor
- lcd.print("Menu"); //escreve uma mensagem antes da variavel
- lcd.setCursor(15, 0); //posiciona o cursor
- lcd.print(botao); //escreve a variavel no LCD
- lcd.setCursor(6, 1); //posiciona o cursor
- lcd.print("Alarme"); //escreve uma mensagem antes da variavel
- if (digitalRead(9) == LOW)//if para editar o próximo item
- {
- botao++;
- }
- switch (botao)
- {
- case 0:
- if (digitalRead(10) == LOW) //Se precionar o botão + acrecenta uma hora
- {
- if (h == 23) //até 23 e ele volta para o 0
- {
- h = 0;
- }
- else
- {
- h++;
- }
- }
- if (digitalRead(11) == LOW) //Se precionar o botão - subitrai uma hora
- {
- if (h == 0) //até 0 e ele vota para o 23
- {
- h = 23;
- }
- else
- {
- h--;
- }
- }
- break;
- case 1:
- if (digitalRead(10) == LOW) //Se precionar o botão + acrecenta um minuto
- {
- if (m == 59) //até 59 depois ele volta para 0
- {
- m = 0;
- }
- else
- {
- m++;
- }
- }
- if (digitalRead(11) == LOW) //Se precionar o botão - subitrai um minuto
- {
- if (m == 0) //até 0 depois ele volta para 59
- {
- m = 59;
- }
- else
- {
- m--;
- }
- }
- break;
- case 2:
- if (digitalRead(10) == LOW) //Se precionar o botão + adiciona um dia
- {
- if (dia == 7) //até 7 que seria domingo (D) depois volta para 0, segunda (S)
- {
- dia = 0;
- }
- else
- {
- dia++;
- }
- }
- if (digitalRead(11) == LOW) //se precionar o botão - subtrai um dia
- {
- if (dia == 0) //até 0 que seria segunda (S) depois volta para 7, domingo (D)
- {
- dia = 7;
- }
- else
- {
- dia--;
- }
- }
- break;
- case 3:
- if (digitalRead(10) == LOW) //Se precionar o botão + acrecenta uma hora no alarme
- {
- if (ha == 23)
- {
- ha = 0;
- }
- else
- {
- ha++;
- }
- }
- if (digitalRead(11) == LOW) //Se precionar o botão - subitrai uma hora no alarme
- {
- if (ha == 0)
- {
- ha = 23;
- }
- else
- {
- ha--;
- }
- }
- break;
- case 4:
- if (digitalRead(10) == LOW) //Se precionar o botão + acrecenta um minuto no alarme
- {
- if (ma == 59)
- {
- ma = 0;
- }
- else
- {
- ma++;
- }
- }
- if (digitalRead(11) == LOW) //Se precionar o botão - subitrai um minuto no alarme
- {
- if (ma == 0)
- {
- ma = 59;
- }
- else
- {
- ma--;
- }
- }
- break;
- default:
- botao = 0;
- break;
- }
- if (ativa == 1) //verifica se o alarme esta ativo
- {
- lcd.setCursor(13, 1);
- lcd.print("on "); // se estiver ativo escreve on
- }
- else
- {
- lcd.setCursor(13, 1);
- lcd.print("off"); // se não escreve off
- }
- if (digitalRead(12) == LOW) //botão para ativar ou desativar o alarme
- {
- if (ativa == 0)
- {
- ativa++;
- lcd.setCursor(13, 1);
- lcd.print("on "); //escreve mais uma vez no LCD on
- }
- else
- {
- ativa--;
- lcd.setCursor(13, 1);
- lcd.print("off"); //escreve mais uma vez no LCD off
- }
- }
- if (h == ha && m == ma) // se a hora e o minuto do alarme forem iguais aciona o rele
- {
- if (ativa == 1) // somente se o alarme estiver na posição de on
- {
- digitalWrite(13, HIGH);
- }
- else // se não ele confirma o desligamento do rele
- {
- digitalWrite(13, LOW);
- }
- }
- else // confirma mais uma vez o desligamento do rele
- {
- digitalWrite(13, LOW);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement