Fichtre !
Une ano dans ma bibliothèque?
J'ai vérifié et pourtant ça a l'air correct, au moins sur arduino.
Je suspecte une différence de compilo.
Dans la fonction reglerNTP(), la variable
jours contient au départ le quantième dans l'année
Sa valeur initiale va de 1 à 366, d'où le fait qu'elle est déclarée en uint16_t
Ensuite, à partir de ce quantième, le programme calcule le mois et le jour dans le mois, de manière très simple :
uint8_t mois = 1;
uint8_t duree_mois = _RTCnbJoursMois(annee, mois);
while (jours > duree_mois)
{
jours -= duree_mois;
mois++;
duree_mois = _RTCnbJoursMois(annee, mois);
}
à partir de là, la variable
jours a une valeur comprise entre 1 et 31
Mais elle est toujours stockée sur deux octets en uint16_t
Pour la passer en paramètre d'appel de la fonction reglerUTC(), qui attend le jour du mois sur un seul octet en uint8_t, j'ai "casté" le type :
accesOK = this->reglerUTC(annee, mois, (uint8_t)jours, heure, minute, seconde);
Je ne vois vraiment pas ce qui pourrait clocher avec ça.
Pour isoler/reproduire le problème et tenter de comprendre ce qui pourrait clocher, je viens de passer ce code sur un arduino :
void setup() {
Serial.begin(115200);
uint16_t jours = 312;
while (jours > 256) jours -= 30; //après quoi : jours = 252
afficher((uint8_t)jours);
afficher(jours);
}
void afficher(uint8_t jours) {
Serial.println(jours);
}
void loop(){}
Ca compile, et ça affiche bien deux fois 252 sur le terminal
L'équivalent donnerait quoi sur l'esp32?