
En gros, à chaque fois que tu copies-colles du code, regarde quelle est la différence (par exemple, quand tu commandes ta LED, tu appliques toujours les 3 mêmes instructions, avec des valeurs différentes). Ce qui est en commun peut former le corps d'une fonction, ce qui change devient un argument de la fonction.
Exemple avec la LED :
digitalWrite(led,HIGH); // Led White digitalWrite(led2,HIGH); digitalWrite(led3,HIGH);
#define ROUGE B110 #define BLEU B011 #define BLANC B000 #define ETEINT B111 void allumerLED(int couleur) { digitalWrite(led, couleur & B001); // Led rouge digitalWrite(led2, couleur & B010); digitalWrite(led3, couleur & B100); }"couleur & B001" permet de faire un masque binaire (opération AND). En gros, selon la valeur de couleur, tu vas renvoyer HIGH ou LOW sur le pin correspondant.
Tu as juste à faire allumerLED(ROUGE); dans ton code, ce qui est plus pratique que de tout réécrire (et se tromper éventuellement). Il faut probablement adapter mon exemple à ton setup (j'ai supposé que tu commandais ta LED en BGR, mais ça dépend de comment elle est connectée à l'Arduino).
Pour compléter Ulysse, je dirais même que tu peux virer complètement tes boucles for (avec des conditions bien écrites). Dans un premier temps, pour n'en garder qu'une, l'indice est :
pos -= 2 équivalent à pos += -2Bon courage
