[arduino uno]Probléme Loop qui ne se termine pas et reprend a zéro

Donc ça serait un problème de code ?

J'ai regardé rapidement ton code, il est complexe. Tu peux l'optimiser un peu :

    if (pm) {
      lcd.print(F(" PM "));
    }
    else {
      lcd.print(F(" AM "));
    }

pourrait devenir
lcd.print((pm)? F(" PM "):F(" AM "));mais c'est du détail.

Tu devrais mettre les gros blocs de codes de la loop dans des fonctions, par exemple le bloc :

 while ((digitalRead(goButton))) {
   ....
     }

de sorte que ta loop ne serait qu'une suite d'appels de fonctions :

void loop() {
  fonction1();
  fonction2();
      ...
}

Ensuite, tu commentes tous ces appels de fonction et tu testes en les décommentant un par un jusqu'à ce que l'erreur se reproduise. Tu auras déjà une idée de ce qui pose problème. Une fois la fonction identifiée, même chose : tu testes petit à petit...