olá pessoal, preciso da ajuda de vcs em algo aparentemente simples, montei um relogio LCD com o arduino baseado no exemplo do cookbook de relogio serial e está funcionando bem, mas apresenta 2 pequenos problemas.

1º os segundos são apresentados de 2 em 2 pelo LCD, mas o tempo é contado perfeitamente, parece que é a taxa de atualização do Display.

2º quando passa de 23:59:59 o arduino passa a contar 0:00:00 e isso faz com que o ultimo dígito do segundo fique como um rastro congelado, quando o arduino marca 10:00:00 este rastro é preenchido novamente pelo ultimo digito de segundos.



tudo está bem visível pelo video abaixo e a skech vem logo em seguida.

http://youtu.be/6dMNvwfUSJE



/*
* Time sketch
*
*/ //relogio so com hora, minuto, segundo
#include
#include
const int numRows = 2;
const int numCols = 16;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup()
{
lcd.begin(numCols, numRows);
setTime(16,21,0,1,31,12); // set time to noon Jan 1 2011
}
void loop()
{
digitalClockDisplay();
delay(1000);
}
void digitalClockDisplay(){
// digital clock display of the time
lcd.print(hour());
printDigits(minute());
printDigits(second());
// the top line is row 0
lcd.setCursor(0,0); // move the cursor to the end of the string printed above
delay(1000);
int columnWidth = 4; //spacing for the columns
int displayColumns = 3; //how many columns of numbers
}void printDigits(int digits){
// utility function for clock display: prints preceding colon and leading 0
lcd.print(":");
if(digits < 10)
lcd.print('0');
lcd.print(digits);

}



pessoal, agradeço desde já pela atenção e conto com a ajuda de vcs.

Exibições: 314

Responder esta

Respostas a este tópico

Bom dia!

Ta exibindo de 2 em 2 segundos pq vc colocou um delay de 1s no loop() e outro delay de 1s dentro da função digitalClockDisplay().

Abraços!

mano, vc é fera mesmo, já testei e deu certo, configurei o loop em 0s.

agora me resta o problema do rastro após 23:59:59.

muito obrigado mesmo e um grande abraço.

continuo no aguardo do segundo defeitinho rsrs.

Erick, no início da função digitalClockDisplay() coloque:

 

  if(hour() < 10)

    lcd.print(' ');

 

Abraço!

kraaaak mano, vcs são os caras.

já testei e funcionou legal, agora vou começar a segunda parte do projeto que é tornar este relogio ajustavel e depois transforma-lo num timer para acender e apagar as luzes do meu aquario.

abraço mano e muito obrigado a todos.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço