Go Down

Topic: Não consigo mostrar data e hora no display LCD 2,4 TFT com RTC DS3231! AJUDA (Read 369 times) previous topic - next topic

penguim

Deste site http://www.rinkydinkelectronics.com/library.php?id=73, mas estás a entender o que eu quero dizer?

bubulindo

No código que tens, tens de chamar a função que actualiza os dados da hora. Isso é bastante claro no exemplo que colocaste. Daí não entender onde é a dificuldade.

Coloca aqui o código que tens com os dados que queres mostrar.
This... is a hobby.

penguim

Não sei se quanto te referes aos dados se são as horas e a data ou se é os dados para o ecrã touch. Por isso envio a minha programação completa.
O envio da data e da hora começa no void loop()

bubulindo

Com este exemplo a hora não faz update automático?

Já pensaste que o facto de teres loops while e delays de segundos está a causar problemas na execução do código?

This... is a hobby.

penguim

Então queres dizer que não vou conseguir fazer atualizar as horas, devido aos do...while() e aos delays? Eu preciso desses do...while() e delays, não dá de outra forma? É que já tentei com os conhecimentos que tenho sobre a programação Arduíno.

bubulindo

O problema é que sempre que entras num delay de 4 ou 3 segundos, o programa não corre... e como tal não actualiza os dados do ecrã.

Da mesma maneira, os ciclos while à espera que um sinal seja recebido, bloqueiam o programa e fazem com que não actualize esses mesmos dados.

Se vires, a lógica que necessitas já está no programa e no entanto não vês as horas a mudar, logo a conclusão a tirar é que o programa está preso nalgum lado.

Para evitares que isso aconteça tens de alterar a maneira como estás a programar de forma a que a função loop continue sempre a ser processada e dessa maneira actualizar também o ecrã. Pesquisa por máquinas de estados para teres uma ideia de como programar de forma a que o programa corra sempre. Olha também a como usar a função millis() em vez de delay e acima de tudo não bloqueies o programa num único sítio sempre que esperas que algo aconteça.
This... is a hobby.

penguim

Eu só não uso millis ou outra função parecida porque só sei trabalhar com o delay. Eu estive a procurar e não percebi bem, se puderes explicar como fazer, agradecia.

bubulindo

Já viste o exemplo blink without delay??

Não há muito a explicar nesse exemplo... adicionalmente, parte do problema é como estás a programar. Ou seja, tu fizeste o programa de forma a que ele corra sequencialmente sem nunca voltar ao inicio da função loop.

Quando fizeste o while à espera que o sinal mude de estado, há necessidade para isso? Não podias apenas ver quando o sinal mudar de estado, fazer X?

Experimenta ver também máquina de estados na internet já que é a maneira mais simples de programar o que pretendes fazer.

Consegues pelo menos entender porque é que a função nõa mostra as horas?
This... is a hobby.

penguim

Eu acho que é, e como explicaste devido a eu ter delays e funções while que ficam à espera de resposta, e esses fazem "bloquear" o resto da programação inclusive não deixa atualizar as horas. Esse exemplo está nos exemplos do arduino ou na net?

bubulindo

O exemplo está instalado na IDE do Arduino.


O delay é um problema, mas ficares à espera de algo acontecer é o maior problema que tens.
This... is a hobby.

Go Up