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
 



OLÁ, copiei e colei no arduino e está dando esse erro na compilação
ResponderExcluir"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)"
Olá!
ExcluirPara que você consiga utilizar corretamente esta programação é necessário adaptar ao seu projeto, por exemplo: portas e bibliotecas.
Abraço e boa sorte!!
Eu tive o exato problema que você, com mesma mensagem de erro. Você descobriu qual o problema?
ExcluirA ú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.
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.....
ResponderExcluirMuito obrigado! Pode deixar que iremos corrigir o erro. Novamente, agradecendo por nos informar! Abraço :)
ExcluirOlá, 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.
ExcluirOla 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...
ResponderExcluirArduino: 1.8.1 (Windows 10), Placa:"Arduino/Genuino Uno"
ResponderExcluirA 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 ?