Bonjour,
Je mets en oeuvre une minuterie qui se reset tous les 2 minutes. Et tout fonctionne bien, mais mon doute est quant à "
millis()". Cela peut devenir un très grand nombre apparemment.
Y a-t-il une certaine limite ?
Exemple:
Disons que si je reset la minuterie tous les 120 jours, "
millis()" atteindra la valeur de 10368000000 par exemple. C’est cette valeur qui m’inquiète.
Merci
modif v1.1: const long MsMin -> unsigned long MsMin
// http://forum.bidouilleur.ca/
// TimerMillis v1.1 Manu
// ( without RTC )
float sec=0;
float min=0;
float hour=0;
float day=0;
unsigned long previousMillis = 0; // previous time measured to compare with the next
unsigned long MsMin = 60000; // to add 1 min every 60000ms (60sec)
const long MinHour = 60; // to add 1 hour every 60 min
const long HourDay = 24; // to add 1 day every 24 hours
void setup(){
Serial.begin(9600);
}
void loop(){
unsigned long currentMillis = millis();
//switch for reset switch-----------------------------------
if(min>=2){ // this is a switch for reset timer
previousMillis = currentMillis; // reset timer
sec=0;
min=0;
hour=0;
day=0;
}else{
//Timer-----------------------------------------------------
if(currentMillis - previousMillis >= MsMin){
min++; // add 1min
previousMillis = currentMillis;
}
sec=((currentMillis - previousMillis)/1000); // for sec
if(min==MinHour){
hour++; // add 1hour
min=0;
}
if(hour==HourDay){
day++; // add 1 day
hour=0;
}
}
//Monitor Show----------------------------------------------
if(day<10){
Serial.print("0");
}
Serial.print(day,0);
Serial.print(" D ");
if(hour<10){
Serial.print("0");
}
Serial.print(hour,0);
Serial.print(":");
if(min<10){
Serial.print("0");
}
Serial.print(min,0);
Serial.print(":");
if(sec<10){
Serial.print("0");
}
Serial.println(sec,0);
//pause & loop--------------------------------------------
delay(990);
}