Boa tarde pessoal, estou tentando melhorar um programa que tenho aqui para incrementar e decrementar hora, min, seg usando um arduino com RTC.

Atualmente posso incrementar e decrementar hora, min, seg adicionando ou diminuindo de 0 a 23 ou de 0 a 59 usando três entradas digitais do arduino, sendo uma de seleção de campo e outras duas o incremento e decremento.

Porem quando o valor do campo é mais alto como por exemplo, minuto 55, preciso ficar um bom tempo segurando o botão de incrementar ate chegar ao 55, queria poder apertar o decrementar e contar para trás 0, 59, 58, 57, 56...

Alguem saberia me explicar como poderia codificar isso?

OBS: Se eu montar a logica reversa a contagem sai negativa, -1, -2, -3

Exibições: 936

Responder esta

Respostas a este tópico

Fez as condicionais para tratar o valor, para que ele seja cíclico de 0-59/59-0 ou 0-23/23-0?

Exemplo para horas:

//incremento

horas++;

if(horas == 24) horas = 0;

//decremento

horas--;

if(horas == -1) horas = 23;

Não tinha pensado nisso, vou experimentar, obrigado.

Bom dia, 

Analisando a idéia o João Vitor. 

Seria um botão somente para ajustar + ou - ?

O relógio esta com 17:58 e o horário correto é 10:16. 

1) Aperto o botão para ajustar horas

2) Pressiono o botão ajuste (+ou-) , terei que avançar de 17 a 23 e depois de 23 a 10 ?  19 pulsos ?

3) Aperto o botão para ajustar minutos

4)  Pressiono o botão ajuste (+ou-) , terei que avançar de 58 a 59 e depois de 59 a 16 ?  44 pulsos ?

Não entendi a vantagem...

Talvez eu tenha entendido errado. 

A vantagem é só aproveitar o que ele já tem de hardware pronto/prototipado e alterar pouquíssima coisa no código. Mas de fato o que mencionou abaixo é mais prático e rápido. Porém, requer mais modificações.

Da forma como citei, reduz a quantidade de pulsos para chegar a valores muito distantes entre si se considerado apenas o sentido crescente. A alteração torna o "caminho" cíclico, tornando possível ir tanto para frente quanto para trás nesse "caminho".

Exemplo:


05 ao 53 = 48 pulsos incrementando

05 ao 53 = 12 pulsos decrementando (4,3,2,1,0,59,58,57,56,55,54,53).

Entretanto, nem sempre essa diferença será significativa. Podem ocorrer casos de equidistâncias, por exemplo.

Boa noite João Vitor

Agora eu entendi. 

Obrigado.

Boa tarde, 

Parece que você entende bem de programação. 

Minha sugestão é que analise um relógio digital REAL e veja como são usados os botões.

1) Já percebi em alguns relógios, que se ficar pressionando o botão, o avanço é mais rápido(não gosto). 

2) Jeito muito bom é como a hora é acertada em uma das minhas cameras. 

    - um botão para avançar hora , minuto e data. Uma pressionada para cada dígito ! 

      Por exemplo 57, pressione o botão para alterar 5 e depois pressione mais uma vez para alterar 7. 

    - e dois botoes - uma para incrementar ( de 0 a 9) e o outro para decrementar ( de 9 a 0)  o dígito selecionado. 

Boa sorte.

    

É uma boa ideia, vou experimentar a ideia acima primeiro ate porque já fiz toda a gestão de mensagens e "telas" do 16x2 teria que modificar um bocado de coisa. Mas caso não consiga o resultado esperado parto para sua ideia.

Muito obrigado.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço