Mortis:
Minha solução ainda tem um problema a ser solucionado, quando millis retorna ao zero, mas como minhas aplicações ainda são de coisas que funcionam por poucas horas, não corri à procura de soluções.
Se subtraires, creio que não tens problema algum... e não precisas do abs.
Experimenta este programa:
#include <Arduino.h>
/*
what really happens with timer function at millis() rollover?
lets test it.
*/
unsigned long fakeMillis = 4294967290; //set fakeMillis to a number near the rollover point
unsigned long mark = fakeMillis; // set a time marker start of timer
//long mark = fakeMillis; // try other type variables
//int mark = fakeMillis;
void setup()
{
Serial.begin(9600);
}
void loop() {
do
{
++fakeMillis; //increment faketimer
Serial.println(fakeMillis); // prints "timer output" through rollover event
Serial.println(fakeMillis-mark); //perform typical subtraction for timer does it work through rollover?
delay(1000);
}
while (fakeMillis>1); // whatever keep looping
}
tretas:
mas como sou novato nisto (infelizmente não em tudo ) pensava que existia algo mais simples e mais compreensível para uma manutenção e desenvolvimento futuro do programa em que estou a mexer visto que uso muitas pausas.
Usas pausas para quê?
Em português array é vector. Mas pouca gente usa essa definicão.