erreur dans le code

Ce programme est un beau fouillis avec sa tonne de if else imbriqué et mal indenté. Mais il compile sans erreur.
Pour le formatage il faut aller dans le menu outils --> formatage automatique après on y voit plus clair.

Maintenant à la lecture on voit qu'il doit manquer quelque chose il y a un accolade ouvrante toute seule à la ligne 196 on peut se demander si un morceau de code ne s'est pas perdu.
Il y a quelques morceaux de code dupliqués. Il serait judicieux d'en faire une fonction. A cela 2 raisons:

  1. programme moins long
  2. lisibilité de loop

Je pense très sincèrement que cette succession de if..else.. est une belle tentative pour faire un programme qui ne fonctionnera pas bien. Certains tests à l'intérieur de if dans des else reprennent des cas exclus précédemment ce qui pourrait conduire à des cas mal traités.
Tu devrais remettre à plat la logique de fonctionnement de ton programme pour éviter d'avoir tous ces tests empilés les uns par dessus les autres.
Déjà le premier test fait apparaître deux modes de fonctionnement distincts. Si c'est le cas dans loop on ne devrait voir qu'un test.

void loop()

{
    if(digitalRead(selecmod)==1)
   {
        gestion_mode1();
   } else{
       gestion_mode2();
  }
}

ensuite tu définis les fonctions communes par exemple:

void gestion_piscine(){
    Serial.print("temp piscine: ");
    Serial.print((float) 0.0625 * lectureSonde1());
    Serial.write('C');
    Serial.write(0x03);
    Serial.print("temp ext : ");
    Serial.print((float) 0.0625 * lectureSonde2());
    Serial.write('C');

    delay(5000);
    Serial.write (0x1B);
    Serial.write (0x43);
    Serial.write(0x01);

}

puis tu écris les fonctions qui vont correspondre aux deux modes:

void gestion_mode1(){
   gestion_piscine();
  
  .... là le reste des fonctions nécessaires à ce mode

}

void gestion_mode1(){
   gestion_piscine();
  
  .... là le reste des fonctions nécessaires à ce mode

}

Ainsi tu gagneras en clarté, tu détecteras plus facilement les erreurs, et tu t'éviteras des heures à chercher une erreur qui ne se produira que de temps en temps parce qu'un test est mal ficelé.