sexta-feira, julho 03, 2015

USANDO O DISPLAY LCD COMO RELÓGIO

Neste sketch se apresenta o display LCD 16x2 e a utilização de sua biblioteca. A codificação foi baseada em uma rotina disponibilizada no link abaixo para apresentar data e hora a partir de uma entrada inicial de dados pela porta serial. O programa também apresenta mensagens iniciais antes de apresentar a data e hora.
A variável unsigned long valorAtual utilizada na rotina é do tipo long e não negativa e a função Serial.parseInt() converte num número inteiro a representação ASCII dos bytes enviados.
(Rotina obtida em: robotics-school.blogspot.com.br/2014/03/projeto-relogio-com-o-arduino.html)



/*
**********************************************
PROJETO ROBÓTICA NA ESCOLA 2015
       USANDO O LCD COM RELÓGIO       
         EE DR PEDRO VELHO – RN/BR       
**********************************************
*/
#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 valorAtual;
void setup()
{
Serial.begin(9600); 
lcd.begin(16, 2);    
valorAtual=0; 
minuto=0; 
hora=0; 
dia=0; 
mes=0; 
ano=0; 
//Mensagem de abertura
  lcd.clear();          //limpa o display do LCD.    
  lcd.print("OI!!! ");  //imprime a string no display do LCD.
  delay(2000);                
  lcd.setCursor(0,1);   //posiciona cursor na coluna 0 linha 1 do LCD
  lcd.print("TUDO BEM???"); //imprime a string no display do LCD.
  delay(2000);   
  lcd.clear();
  lcd.print("BEM VINDO");
  lcd.setCursor(0,1);
  lcd.print("AO PROJETO!");
  delay(2000);
  lcd.clear();
  lcd.print("ROBOTICA NA ESCOLA DR PEDRO VELHO 2015");
  delay(1000);
  //Rolando o display para a esquerda 12 vezes
  for (int i = 0; i < 22; i++)
  {
    lcd.scrollDisplayLeft();
    delay(600);
  }
  delay(1000);
//Iniciando a rotina para o relógio
 lcd.clear();
lcd.setCursor(0,0); 
lcd.print(" DATA E HORA  "); 
lcd.setCursor(0,1); 
lcd.print("COM O 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()- valorAtual<0) 
{   
valorAtual = millis(); 
else 
{   
segundo=int((millis()-valorAtual)/1000); 
if(segundo>59) 
{   
segundo=0;   
minuto++;   
valorAtual=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++;         
}       
}     
}   
}
//Mensagem de abertura
  lcd.clear();          //limpa o display do LCD.    
  lcd.print("Oi!!! ");  //imprime a string no display do LCD.
  delay(2000);                
  lcd.clear();
  lcd.print("Bem vindo");
  lcd.setCursor(0,1);
  lcd.print("a este projeto!");
  delay(4000);
  lcd.clear();
  lcd.print("ROBOTICA NA ESCOLA DR PEDRO VELHO 2015");
  delay(1000);
  //Rolando o display para a esquerda 22 vezes
  for (int i = 0; i < 22; i++)
  {
    lcd.scrollDisplayLeft();
    delay(600);
  }
  delay(1000);
//Apresentando no serial
Serial.print(dia); 
Serial.print("/"); 
Serial.print(mes); 
Serial.print("/"); 
Serial.print(ano); 
Serial.println();    
//Apresentando no display
lcd.clear();
lcd.setCursor(0,0); 
lcd.print("Data "); 
lcd.print(dia); 
lcd.print("/"); 
lcd.print(mes); 
lcd.print("/"); 
lcd.print(ano); 
//Apresentando no serial
Serial.print(hora); 
Serial.print(":"); 
Serial.print(minuto); 
Serial.print(":"); 
Serial.print(segundo); 
Serial.print("\n"); 
Serial.println();    
//Apresentando no display
lcd.setCursor(0,1); 
lcd.print("Hora "); 
lcd.print(hora); 
lcd.print(":"); 
lcd.print(minuto); 
lcd.print(":"); 
lcd.print(segundo);
delay(2000);
}

//FIM DO SKETCH

Nenhum comentário:

Postar um comentário