sexta-feira, 14 de março de 2014

Projeto: Relógio com o Arduino

Projeto Relógio


Na aula de hoje, nós da equipe Robotics School recriamos um relógio digital utilizando o Arduino. Para isso, usamos os seguintes materiais:

- Arduino Uno;
- LCD;
- Jumpers;
- Potenciômetro;
- Protoboard.

Montagem:

Fonte: Laboratório de Garagem

Programação:

#include <LiquidCrystal.h> //Inclui a biblioteca do LCD

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

int segundo,minuto, hora, dia, mes,ano;
unsigned long UtlTime;

void setup()
{  

UtlTime=0;  
minuto=0;  
hora=0;  
dia=0;  
mes=0;  
ano=0;  
Serial.begin(9600);  
lcd.begin(16, 2);     

lcd.setCursor(0,0);  
lcd.print(" Data e hora ");  
lcd.setCursor(0,1);  
lcd.print(" com Arduino");  
delay (2000);

//Configura o minuto  
lcd.clear();  
lcd.setCursor(0,0);  
lcd.print("Minuto: ");  
Serial.print("\nEntre Minuto:"); 
while(minuto==0)   {    
if (Serial.available() > 0)    
{      
minuto= Serial.parseInt();    
}  
}  
lcd.print(minuto);  
delay(1000);

//Configura a hora  
lcd.clear();  
lcd.setCursor(0,0);  
lcd.print("Hora: ");  
Serial.print("\nEntre Hora:");
while(hora==0)  
{    
if (Serial.available() > 0)    
{      
hora= Serial.parseInt();    
}  
}  
lcd.print(hora);  
delay(1000);   

//Configura o Dia  
lcd.clear();  
lcd.setCursor(0,0);  
lcd.print("Dia: ");  
Serial.print("\nEntre Dia:");  
while(dia==0)  
{    
if (Serial.available() > 0)    
{      
dia= Serial.parseInt();    
}  
}  
lcd.print(dia);  
delay(1000);   

//Configura o mês  
lcd.clear();  
lcd.setCursor(0,0);  
lcd.print("Mes: ");  
Serial.print("\nEntre Mes:"); 
while(mes==0)  
{    
if (Serial.available() > 0)    
{      
mes= Serial.parseInt();    
}  
}  
lcd.print(mes);  
delay(1000);   

//Configura o Ano  
lcd.clear();  
lcd.setCursor(0,0);  
lcd.print("Ano: ");  
Serial.print("\nEntre ano:");  
while(ano==0)  
{    
if (Serial.available() > 0)    
{      
ano= Serial.parseInt();    
}  
}  
lcd.print(ano);  
delay(1000);  

lcd.clear();

}

void loop()
{  

if(millis()-UtlTime<0)  
{    
UtlTime=millis();  
}  
else  
{    
segundo=int((millis()-UtlTime)/1000);  
}  
if(segundo>59)  
{    
segundo=0;    
minuto++;    
UtlTime=millis();    
if(minuto>59)    
{      
hora++;      
minuto=0;      
if(hora>23)      
{        
dia++;        
hora=0;        
if(mes==1||mes==3||mes==5||mes==7||mes==8||mes==10||mes==12)        
{          
if(dia>31)          
{            
dia=1;            
mes++;            
if(mes>12)            
{              
ano++;              
mes=1;            
}          
}        
}        
else if(mes==2)        
{          
if(ano%400==0)          
{            
if(dia>29)            
{              
dia=1;              
mes++;            
}          
}          
else if((ano%4==0)&&(ano%100!=0))          
{            
if(dia>29)            
{              
dia=1;              
mes++;            
}          
}          
else          
{            
if(dia>28)            
{              
dia=1;              
mes++;            
}          
}        
}        
else        
{          
if(dia>30)          
{            
dia=1;            
mes++;          
}        
}      
}    
}  
}   
Serial.print(dia);  
Serial.print("/");  
Serial.print(mes);  
Serial.print("/");  
Serial.print(ano);  
Serial.println();     

lcd.setCursor(0,0);  
lcd.print("Data ");  
lcd.print(dia);  
lcd.print("/");  
lcd.print(mes);  
lcd.print("/");  
lcd.print(ano);  

Serial.print(hora);  
Serial.print(":");  
Serial.print(minuto);  
Serial.print(":");  
Serial.print(segundo);  
Serial.print("\n");  
Serial.println();     

lcd.setCursor(0,1);  
lcd.print("Hora ");  
lcd.print(hora);  
lcd.print(":");  
lcd.print(minuto);  
lcd.print(":");  
lcd.print(segundo);

}


Depois de ter feito a programação e compilado para o Arduino, clique em Serial Monitor no lado superior direito da imagem:



Na Serial Monitor configure o minuto, hora, dia, mês e o ano, respectivamente.



Seu relógio está pronto!

Relógio em funcionamento


8 comentários:

  1. OLÁ, copiei e colei no arduino e está dando esse erro na compilação


    "c:/program files/arduino/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../../avr/lib/avr6/crtm2560.o: In function `__vector_default':
    (.vectors+0xcc): relocation truncated to fit: R_AVR_13_PCREL against symbol `__vector_51' defined in .text.__vector_51 section in core.a(HardwareSerial.cpp.o)"

    ResponderExcluir
    Respostas
    1. Olá!
      Para que você consiga utilizar corretamente esta programação é necessário adaptar ao seu projeto, por exemplo: portas e bibliotecas.
      Abraço e boa sorte!!

      Excluir
    2. Eu tive o exato problema que você, com mesma mensagem de erro. Você descobriu qual o problema?
      A única diferença para meu código é que uso o LCD em um shield de LCD e os pinos são outros, para isso preciso mudar a linha para LiquidCrystal lcd(8,9,4,5,6,7); pois no shield estes são os pinos equivalentes.

      Excluir
  2. Adorei o projeto de vcs....que não tem a utilização do RTC,que eu fiquei tão curioso que copiei o código e mandei para arduino porem percebi que o segundos quando devia ir de 59 para 00 fica com 9 ainda na direita e a contagem na esquerda so depois do 10 e que fica beleza......da uma olhada no código e corrija esse probleminha para ficar melhor ainda um abraço.....

    ResponderExcluir
    Respostas
    1. Muito obrigado! Pode deixar que iremos corrigir o erro. Novamente, agradecendo por nos informar! Abraço :)

      Excluir
    2. Olá, achei muito bom o projeto do relógio sem a necessidade de outros CI's. Também percebi o errinho no marcador de segundos, e resolvi aplicando um clear antes de "printar" as informações no LCD e um delay de 1000 ms depois.

      Excluir
  3. Ola de novo....deixei funcionando um pouco porem da uma olhada quando ele muda de hora ....verifiquem o código que tem algo errado.....deixem ele rodar uma hora para verem um abraço...

    ResponderExcluir
  4. Arduino: 1.8.1 (Windows 10), Placa:"Arduino/Genuino Uno"

    A placa em COM1 não está disponível

    Este relatório teria mais informação com a
    opção «Mostrar mensagens detalhadas durante a
    compilação» seleccionada nas Preferências.

    aparece este erro alguem consegue ajudar ?

    ResponderExcluir

Copyright © 2014 | Design e Código: Sanyt Design | Tema: Viagem - Blogger | Uso pessoal • voltar ao topo