Estou montando um datalogger para exibir a data e a hora no lcd 16x2 . Estou coma seguinte dificuldade, no mes da data não mostra o número zero e nos minutos da hora também não mostra o zero e os segundos também está mostrando uma contagem maluca nos 10 primeiros segundos e depois normaliza.Este é codigo que eu fiz:

  #include /font>Wire.h>        //Biblioteca para manipulação do protocolo I2C  #include /font>DS3231.h>      //Biblioteca para manipulação do DS3231  #include /font>LiquidCrystal_I2C.h>  //Biblioteca para manipulação do LCD
   
DS3231 rtc; //Criação do objeto do tipo DS3231
RTCDateTime dataehora; //Criação do objeto do tipo RTCDateTime
LiquidCrystal_I2C lcd(0x3f,16,2); //Seta o endereço do LCD para para 0x3F para 16 caracteres 2 linhas



void setup()
{
Serial.begin(9600); //Inicialização da comunicação serial
rtc.begin(); //Inicialização do RTC DS3231

rtc.setDateTime(__DATE__, __TIME__); //Configurando valores iniciais
//do RTC DS3231
lcd.begin();
}

void loop()
{
dataehora = rtc.getDateTime(); //Atribuindo valores instantâneos de
//data e hora à instância dataehora


Serial.print(dataehora.year); //Imprimindo o Ano
Serial.print("2018");
Serial.print(dataehora.month); //Imprimindo o Mês
Serial.print("06");
Serial.print(dataehora.day); //Imprimindo o Dia
Serial.print("12");
Serial.print(dataehora.hour); //Imprimindo a Hora
Serial.print("22");
Serial.print(dataehora.minute); //Imprimindo o Minuto
Serial.print("04");
Serial.print(dataehora.second); //Imprimindo o Segundo
Serial.println("00");

delay(1000); //Tempo p atualização do valor enviado pela porta
//serial


//Mostra no lcd
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("Data");
lcd.setCursor(5,0);
lcd.print(dataehora.day);
lcd.setCursor(7,0);
lcd.print("/");
lcd.setCursor(8,0);
lcd.print(dataehora.month);
lcd.setCursor(10,0);
lcd.print("/");
lcd.setCursor(11,0);
lcd.print(dataehora.year);
lcd.setCursor(0,1);
lcd.print("Hora");
lcd.setCursor(5,1);
lcd.print(dataehora.hour);
lcd.setCursor(7,1);
lcd.print(":");
lcd.setCursor(8,1);
lcd.print(dataehora.minute);
lcd.setCursor(10,1);
lcd.print(":");
lcd.setCursor(11,1);
lcd.print(dataehora.second);

}


Como que eu corrijo este problema?

Exibições: 401

Anexos

Responder esta

Respostas a este tópico

Bom dia MGVF,

Recomendações: 
1. Remova seu sketch da área de texto do seu tópico;
2. Leia http://labdegaragem.com/forum/topics/sugest-o-de-como-postar
3. Comente as linhas do seu sketch. Fica mais fácil entender o que vc quer fazer com cada linha e facilita a ajuda.
4. Clique em : " Deseja carregar arquivos? " e depois em " Escolher arquivo" e anexe o arquivo 
    com o seu sketch.

RV

amigo para consertar o mes e a hora para decimal voce pode colocar um IF

if((rtc.mes) <10)

lcd.setcursor(9,0);

lcd.print("0");

lcd.print(dataehora.month)

etc..etc..etc

Deu certo, coloquei vários if e deu certo. Obrigado pela ajuda.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço