Boa noite

estou tentando concatenar dois valores para exibir no display de quatro dígitos

a biblioteca permite eu imprimir um valor int. dentro do campo disp.valueWrite ();

Minha ideia basicamente seria juntar hora e minuto e depois converter novamente em int e depois imprimir esse valor, tentei vários métodos, mas em todos tem uma falha na minha lógica, 

abaixo segue um resumo do sketch no ponto que estou tendo problema.

void hora1 ()

   DateTime now = rtc.now();
     hora = now.hour();
     minuto = now.minute();
     tempo = hora + minuto; // meu erro está aqui

disp.valueWrite (tempo); // imprimir um valor inteiro no display

se alguém puder me dar uma luz agradeço.

Att

Exibições: 762

Responder esta

Respostas a este tópico

Muito obrigado, com certeza ainda da para melhorar. vou subdividir mais para ter mais alternância entre os  valores.

O problema que estou tendo agora é só com a leitura da temperatura, pois como converti para inteiro, ou seja, 2 dígitos,  quando a temperatura esta entre um valor e outro, ex: 28,90 e 29,10ºC o o ultimo digito do display fica piscando loucamente entre um valor e outro.

Precisava estabilizar a leitura, ou seja, ele fazer uma leitura a cada 1 min, mas exibir a leitura durante esse intervalo, ou seja, armazenar o valor na epprom eu acho.

no mais ficou bom.

eu só faço uma única solicitação ao sensor de temperatura/umidade quando entrar no ciclo de exibição de tais valores. Obtido tais valores nessa requisição única, eu armazeno a informação em uma variável para exibição do mesmo valor nos próximos segundos até o final desse ciclo.

Imhugo, mas como fica o código, você utilizou millis?

eu tentei utilizar delay, mas por algum motivo ele compromete o funcionamento do display, ficando só um digito, e piscando os demais.

Se deixo sem nada ele funciona corretamente.

não use delay de forma alguma.. também não precisa usar millis

pelo que deu pra perceber, pra fazer o display funcionar teu sketch usa aquela técnica de acender um determinado dígito bem rápido e logo em sequência apagá-lo, e acender/apagar o dígito seguinte, e assim sucessivamente, com todo esse processo ocorrendo extremamente rápido, dando impressão aos nossos olhos que os 4 dígitos estão acesos simultaneamente

Percebi isso pois vc falou que aplicou um delay, e ocorreu de um dígito apenas ficar aceso,  interrrompendo o ciclo veloz de acendimento/apagamento de dígitos sequencialmente

O que vc deve fazer é o seguinte:

teu sketch provavelmente solicitará ao RTC o horário a cada loop, correto?

pois bem, após essa solicitação do horário ao rtc, faça verificação do valor atual do "ponteiro" segundos.

A partir daí, use IF para atribuir alguma ação (exibição de hora, por exemplo) de acordo com o valor segundos

pela experiência que eu tive, não convém vc ficar solicitando a temperatura/umidade ao seu sensor a cada loop. Se vc fizer tais solicitações a cada loop, o display ficará piscando, pois atrasará aquele ciclo rápido de piscadas de dígitos que comentei logo acima, tornando a exibição incômoda aos nossos olhos

eu só faço uma única solicitação ao sensor de temperatura/umidade quando entrar no ciclo de exibição de tais valores. Obtido tais valores nessa requisição única, eu armazeno a informação em uma variável para exibição do mesmo valor nos próximos segundos até o final desse ciclo.

Imhugo, o que você falou faz todo sentido, provavelmente é isso mesmo.

Irei testar essa abordagem.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço