Go Down

Topic: Ajuda com programação de estufa (Read 7262 times) previous topic - next topic

bubulindo

Se tirares o float isso resolve-se não?
This... is a hobby.

rafa_mazali

sem o float o tempo mostra apenas os minutos restantes e os segundos não,
assim se por exemplo faltare 0:59 segundos do tempo o lcd vai mostrar apenas o 0

bubulindo

Se queres segundos, não divides por 60...

Divides por mil e ficas com o numero total de segundos.
Depois ao dividires por 60, ficas com o numero de minutos, mas tens de arredondar para o inteiro mais baixo.

Usando o módulo de sessenta nesse valor deve dar-te os segundos em inteiro.
This... is a hobby.

rafa_mazali

Seria isso?

((Tempo em ms / 1000 / 60) % 60)

bubulindo

Não.

Quote

//isto vai dar-te o resultado em float, mas ao colocares em inteiro, arredondas para baixo obtendo os minutos.
unsigned int minutos = (unsigned int ) (tempo/1000)/60;

//isto dar-te á um numero entre 0 e 60 que indica o resto da divisão feita em cima.
unsigned int segundos = (unsigned int ) (tempo/1000) %60;


Eventualmente, se isso não funcionar, isto é, se ele arredondar, podes usar a função trunc.
Experimenta assim e diz como saiu.
This... is a hobby.

Go Up