Bonjour,
Je me heurte à un problème bloquant, que je ne sais plus par quel bout prendre...

Mon programme se présentait sous la forme suivante:
Déclarations diverses
void setup
void loop
if {
blabla
}
if {
blabla
}
}
fonctionnait parfaitement, mais il y avait beaucoup de "if" (>15) et les instructions à l'intérieur de chaque if étaient longues.

Pour améliorer la lisibilité de mon programme, j'ai déclaré des fonctions void nom() sans arguments avant l'instruction "void setup", et j'ai appelé ces fonctions void à l'intérieur du if concerné.

C'est bien avant "void setup" qu'il faut définir les fonctions "void" que l'on utilisera ensuite à l'intérieur de "void loop" ? ou après ?

Je n'ai aucune erreur à la compilation ni au transfert (nickel) sauf que mon programme ne fonctionne plus du tout: même l'affichage d'une chaîne de caractère (en l'occurrence la version du Firmware stockée en dur dans une constante) n'affiche plus rien.

Si je recharge la version non factorisée du programme (c'est-à-dire avec toutes les instructions à l'intérieur de chaque if, sans appeler de void à l'intérieur de ces if, ça remarche.

J'ai mis des points de déboguage (des Serial.println) qui me confirment que le programme passe bien là où il faut et appelle bien les fonctions void ad'hoc, c'est le cas puisqu'on voit bien sur le moniteur série qu'il passe là où il faut, mais aucune action en sortie de la Mega ! par exemple, des relais qui sont parfaitement commandés avec la version non factorisée ne le sont plus avec la version factorisée: les pins de sortie de la Mega restent à +5V alors que le programme passe bien par les instructions où je les mets à LOW.

Je m'épuise à essayer de comprendre en vain...

Avez-vous déjà eu ce phénomène ?

En attendant de vous lire, je vais extraire une partie du code pour le poster.

Merci à tous,