Bonjour
Pour mémoire, le post initial était lancé sur l'ancien forum : http://arduino.cc/forum/index.php/topic,33698.15.html
Je constatais un décalage de mon horloge créée à partir de la variable interne millis().
Jean François avait trouvé une astuce qui fonctionnait bien (chez lui... Mais pas chez moi !! =()
J'en ai finalement trouvé la raison :
Le code qui fonctionne : (j'ai un décalage de 1 à 3 seconde par jour)
// HORLOGE
if (millis() >= refTemps){
refTemps += 1000;
seconde++;
if (seconde >= 60) { // à chaque 60 secondes
minute++ ; // Incrémentation des minutes
seconde = 0;
if (minute >= 60) {
heure++ ; // Incrémentation des heures
minute = 0 ;
if (heure >=24) {
heure = 0 ; // réinitialise l'horloge toutes les 24h
}
}
}
}
Celui qui ne fonctionne pas et procure un décalage important. Plus de trente minutes par jour
// HORLOGE
if (millis() >= refTemps){
refTemps += 100;
seconde++;
if (seconde >= 600 { // à chaque 60 secondes
minute++ ; // Incrémentation des minutes
seconde = 0;
if (minute >= 60) {
heure++ ; // Incrémentation des heures
minute = 0 ;
if (heure >=24) {
heure = 0 ; // réinitialise l'horloge toutes les 24h
}
}
}
}
Le but était d'incrémenter toutes les 0.1 seconde afin d'utiliser cette valeur ailleurs dans le programme, pour incrémenter une variable de commande d'un servomoteur toutes les 100ms.
La raison la plus vraisemblable est que la scrutation n'est pas assez rapide, et n'incrémente pas systématiquement la variable "seconde" .
Petite précision, je n'ai pas d'instruction Delay() dans le programme.
Merci pour votre aide !
Franck