Relogio data termometro e lumimetro

E ai galera. Estou com um projeto para a escola que tenho que desenvolver algo pra escrever em um display lcd 16x2 algo. meu projeto inicial ja esta pronto que é um medidor de Temperatura e luminosidade utilizando um thermistor ntc e um ltr respectivamente. mas eu achei muito simplorio. e gostaria de saber se tem como eu incluir sem utilizar nenhum modulo ou mais CIs ou circuitos apenas com programação para que ele tambem marque a data e a hora. inserindo um push botton para que sempre que eu pressione ele, a informação na tela mude.
EX: esta marcando a temperatura e a luminosidade. eu pressiono ele altera para data e hora.
o codigo que estou utilizando é este

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

LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //Configura os pinos do Arduino para se comunicar com o LCD 

Thermistor temp(0); //Configura o pino A0 para a leitura do Thermistor (0 = A0 / 1 = A1 / ...) 

#define LDR A1 //Define LDR como A1 

float luminosidade; //Variável para armazenar o valor da luminosidade 
int amostra; //Variável para se guardar os valores das amostras da luminosidade 
int temperatura; //Variavel para armazenar o valor da temperatura   

void setup() 
{ 

lcd.begin(16, 2); //Inicia o LCD com dimensões 16x2(Colunas x Linhas) 

}   

void loop() 
{      

temperatura = temp.getTemp(); //Pega a temperatura do Thermistor e armazena na variável temperatura em ºC      

amostra = 0; //Zera a variável amostra      

//Pega 1000 amostras   
for(int i=0; i < 100 ; i++)   
{   
luminosidade = analogRead(LDR); //Armazena o valor lido pelo LDR   
luminosidade = (luminosidade / 1024) * 100; //Transforma o valor lido em porcentagem   
amostra = amostra + luminosidade; //Armazena na variável amostra   
}   
//=================      

amostra = amostra/100; //Tira a média das amostras   

lcd.setCursor(0,0); //Posiciona o cursor na primeira coluna(0) e na primeira linha(0) do LCD   
lcd.print("Temperatura: "); "   
lcd.print(temperatura);
lcd.print("C"); //Imprime "C" indicando que está na escala Celsius      

lcd.setCursor(0,1); //Posiciona o cursor na primeira coluna(0) e na segunda linha(1) do LCD   
lcd.print("Luminosida.: "); //Imprime no LCD "Luminosida.: "   
lcd.print(amostra); //Imprime o valor da luminosidade   
lcd.print("%"); //Imprime "%" indicando que a luminosidade está em porcentagem 

}
#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);

}

preciso misturar esses 2 codigos

Não (pode até fazer, mas não deve ficar grande coisa). O que necessita para um projecto desse ficar em condições (mínimas) é de um RTC.
Já agora, não é LTR, mas sim LDR de Light Dependent Resistance.

luisilva:
Não (pode até fazer, mas não deve ficar grande coisa). O que necessita para um projecto desse ficar em condições (mínimas) é de um RTC.
Já agora, não é LTR, mas sim LDR de Light Dependent Resistance.

Sim LDR eu confundi as siglas obrigado pela correção. e o circuito medindo luminosidade e temperatura ja esta funcionando. Gostaria de implementar ele adicionando o relogio. E o projeto e só para apresentar na aula depois acabou não vai nem ficar montado. apenas para demonstração. entende

Nao tens de mostrar o codigo?

Eu nao avaliaria um trabalho pelo resultado final, mas pela qualidade do que foi feito... e nesse aspecto, meter um contador de segundos que funciona por 10 minutos era garantia duma nota ma ou dum mau bocado para justificar o que foi feito.

bubulindo:
Nao tens de mostrar o codigo?

Eu nao avaliaria um trabalho pelo resultado final, mas pela qualidade do que foi feito... e nesse aspecto, meter um contador de segundos que funciona por 10 minutos era garantia duma nota ma ou dum mau bocado para justificar o que foi feito.

esse trabalho foi so para dar utilidade a alguns displays lcd que estavam parados ele so quer uma demonstração. e o trabalho foi muito em cima da hora. impossivel comprar um modulo RTC. e não tenho que mostrar o codigo não so tenho que mostrar o funcionamento na hora e acabou. È um trabalho de eletronica analogica. Ele só quer ver o circuito eletronico dando alguma utilidade aos lcds

Um trabalho de electronica analogica com um arduino? :blush:

ele pediu pra ligar um lcd todos os circiutos que vi usavam pic então ele liberou pra usar arduino. desde que fosse utilizado um circuito eletronico para dar essa finalidade. o meu projeto e o sensor de temperatura e de luminosidade. o primeiro codigo. mas queria dar uma incrementada como não tenho tempo de comprar o RTC então estou querendo fazer unindo esses 2 codigos. mas não consigo enxergar uma forma de unir os 2.

Consegui colocar os 2 códigos e os 2 funcionam simultaneamente mas só que quando eu vou fazer a alteração de qual imprimir no LCD ele só mostra o que esta com o valor HIGH quando passa para mostrar o valor LOW ele começa a mudar de acordo com o tempo definido no delay. se puderem me ajudar não consigo mais pensar em nada

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

LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //Configura os pinos do Arduino para se comunicar com o LCD 

Thermistor temp(0); //Configura o pino A0 para a leitura do Thermistor (0 = A0 / 1 = A1 / ...) 

#define LDR A1 //Define LDR como A1 

float luminosidade; //Variável para armazenar o valor da luminosidade 
int amostra; //Variável para se guardar os valores das amostras da luminosidade 
int temperatura; //Variavel para armazenar o valor da temperatura   
int segundo,minuto, hora, dia, mes,ano;
int selecionar = 6;
int data = 7;
unsigned long UtlTime;
void setup() 
{ 
pinMode(selecionar, INPUT);
lcd.begin(16, 2); //Inicia o LCD com dimensões 16x2(Colunas x Linhas) 
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();     
Serial.print(hora);  
Serial.print(":");  
Serial.print(minuto);  
Serial.print(":");  
Serial.print(segundo);  
Serial.print("\n");  
Serial.println();     



temperatura = temp.getTemp(); //Pega a temperatura do Thermistor e armazena na variável temperatura em ºC      

amostra = 0; //Zera a variável amostra      

//Pega 1000 amostras   
for(int i=0; i < 100 ; i++)   
{   
luminosidade = analogRead(LDR); //Armazena o valor lido pelo LDR   
luminosidade = (luminosidade / 1024) * 100; //Transforma o valor lido em porcentagem   
amostra = amostra + luminosidade; //Armazena na variável amostra   
}   
//=================      

amostra = amostra/100; //Tira a média das amostras   



if(digitalRead(selecionar) == HIGH){
delay (900);
lcd.clear();
lcd.setCursor(0,0);  
lcd.print("Data ");  
lcd.print(dia);  
lcd.print("/");  
lcd.print(mes);  
lcd.print("/");  
lcd.print(ano);  
lcd.setCursor(0,1);  
lcd.print("Hora ");  
lcd.print(hora);  
lcd.print(":");  
lcd.print(minuto);  
lcd.print(":");  
lcd.print(segundo);
delay (900);
}
else if(digitalRead(selecionar) == LOW)
{
delay (900);
lcd.clear();
lcd.setCursor(0,0); //Posiciona o cursor na primeira coluna(0) e na primeira linha(0) do LCD   
lcd.print("Temperatura: ");   
lcd.print(temperatura); //Imprime o valor da temperatura   
lcd.print("C"); //Imprime "C" indicando que está na escala Celsius      

lcd.setCursor(0,1); //Posiciona o cursor na primeira coluna(0) e na segunda linha(1) do LCD   
lcd.print("Luminosida.: "); //Imprime no LCD "Luminosida.: "   
lcd.print(amostra); //Imprime o valor da luminosidade   
lcd.print("%"); //Imprime "%" indicando que a luminosidade está em porcentagem
delay (900);
}}