Desde o inicio que o voltímetro das horas me chateava um pouco...

A sua não linearidade (barato... :) ) aliada ao meu método tosco de fazer a escala, fez com que o pwm para as horas não fosse calculado com um simples y=mx+b.
Farto disso resolvi fazer uma abordagem mais inteligente.
Acertei os valores de pwm para as 12 horas, de forma a coincidir exactamente o ponteiro com o risco da escala.

Guardei esses valores no vector "horas[posição vector]".
A única certeza após isto é que cada "salto" teria de ser dividido em 60 minutos.
O cálculo para obter o pwm certo para aquela hora e minuto, é dado por:
H - horas lidas no RTC;
M - minutos lidos no RTC;
unsigned int horas[13] = {0,70,160,245,330,415,495,590,680,780,870,970,1024};
pwm = horas[horas_1] - horas[horas_1 -1];
pwm = (pwm * minutos_1)/60;
pwm += horas[horas_1 -1];
Desta forma dou por resolvido o problema com o voltimetro das horas. Já está a funcionar à algumas horas e até ao momento está perfeito.

0 Responses so far.

Enviar um comentário