Noob bloqué sur le tuto d'Eskimon p150

Salut a tous, je suis en train de débuter en arduino, j’en suis a la page 150 du cours d’Eskimon et je bloque sur la création d’une fonction avec variable.
J’espere qu’une ame charitable pourra me filer un coup de main. J’ai cette erreur au niveau de la ligne FOR, il y a un probleme avec la fonction (i):
“exit status 1
variable or field ‘affichage’ declared void”

Sur un forum j’ai trouvé un type qui expliquait que i est soit une variable globale, soit le parametre d’une fonction, mais ds ce cas je comprends pas comment je met i dans ma fonction.

const int D4=4;
const int D5=5;
const int D7=7;
const int D8=8;
const int D9=9;
const int D10=10;


void setup() {
pinMode(D4,OUTPUT); // selection DIGIT
pinMode(D5,OUTPUT); // 
pinMode(D7,OUTPUT); // selection segment
pinMode(D8,OUTPUT);
pinMode(D9,OUTPUT); // selection segment
pinMode(D10,OUTPUT);


digitalWrite (D7, HIGH); //SEGMENT ETEINT
digitalWrite (D8, HIGH); // SEGMENT ETEINT
digitalWrite (D9, HIGH); //SEGMENT ETEINT
digitalWrite (D10, HIGH); // SEGMENT ETEINT
}

void loop() {
digitalWrite (D4, HIGH); // DIGIT 4 allumé  
for(char i=0; i<10; i++){ affichage (i)}   // on peut déclarer direct letiquette ds la fonction FOR
digitalWrite (D4, LOW); // DIGIT 4 éteint 
delay (1000);
 }

void affichage(i){     //on éteint toutes les leds
digitalWrite(D7, HIGH);
digitalWrite(D8, HIGH);
digitalWrite(D9, HIGH);
digitalWrite(D10, HIGH);
//Puis on les allume une à une

if(i >= 1){digitalWrite(D7, LOW);} 
if(i >= 2){digitalWrite(D8, LOW);}
if(i >= 3){digitalWrite(D9, LOW);}
if(i >= 4){digitalWrite(D10, LOW);}

}

hello
1/tu as posté n'importe ou mais surtout pas au bon endroit
ici c'est l'espace des tutos et cours

voir ici

pour ton code

derrière l'appel de ta fonction, il manque un ";"

et dans ta loop, le for(char i ....., déclare la variable i en portée locale, donc limitée à la loop

ta fonction affiche(i) ne connait pas le i de la loop.
il fallait faire void affiche(char i) {}. dans ce cas, ce nouveau i est connu de ta fonction void affiche() et prends la valeur que tu lui à passé dans l'appel que tu effectues depuis la loop
mais c'est bien un nouveau i qui est en portée locale donc limité à ta fonction affiche()

tu pouvais aussi déclarer la variable char i avant le set up.
ainsi elle aurait eu une portée globale et aurait donc été connue par tout le programme

Malheureusement je ne peux pas supprimer le topic.
Bon ca marche toujours pas, je vais essayer de trouver un exemple du programme en question terminé ca sera plus simple.
Merci pour ton éclairage et ton aide dfgh !

Malheureusement je ne peux pas supprimer le topic.

Tu demander à le faire déplacer

Utilise le lien “Report to moderator”

voilà, le code compile

const int D4=4;
const int D5=5;
const int D7=7;
const int D8=8;
const int D9=9;
const int D10=10;


void setup() {
pinMode(D4,OUTPUT); // selection DIGIT
pinMode(D5,OUTPUT); // 
pinMode(D7,OUTPUT); // selection segment
pinMode(D8,OUTPUT);
pinMode(D9,OUTPUT); // selection segment
pinMode(D10,OUTPUT);


digitalWrite (D7, HIGH); //SEGMENT ETEINT
digitalWrite (D8, HIGH); // SEGMENT ETEINT
digitalWrite (D9, HIGH); //SEGMENT ETEINT
digitalWrite (D10, HIGH); // SEGMENT ETEINT
}

void loop() {
digitalWrite (D4, HIGH); // DIGIT 4 allumé  
for(char i=0; i<10; i++){ affichage (i);}   // on peut déclarer direct letiquette ds la fonction FOR
digitalWrite (D4, LOW); // DIGIT 4 éteint 
delay (1000);
 }

void affichage(char i){     //on éteint toutes les leds
digitalWrite(D7, HIGH);
digitalWrite(D8, HIGH);
digitalWrite(D9, HIGH);
digitalWrite(D10, HIGH);
//Puis on les allume une à une

if(i >= 1){digitalWrite(D7, LOW);} 
if(i >= 2){digitalWrite(D8, LOW);}
if(i >= 3){digitalWrite(D9, LOW);}
if(i >= 4){digitalWrite(D10, LOW);}

}

Pas de réponce ici.
Qu'il fasse déplacer sa question pour obtenir de !'aide.
Sinon ce forum va devenir un foutoir.

Bonjour
Même avis que 68tjs

Il ya quelques années plusieurs membres actfs du forum ont proposé de remplacer le forum unique par une structure de sous-forums spécifiques. Un sondage avaité été fait. Par la suite il a été difficile d'obtenir en 'haut lieu' satisfaction, 3 sous forums seulement ont été obtenus. (nos amis hispanophones sont mieux traités)

Faute d'un minimim de règles respectées nous allons avoir 4 forums 'fourre-tout'.

Faire le ménage est dans l'intérêt commun, respecter les règles de vie commune aussi.

Super ca marche, merci dfgh ! Je comprends un peu mieux les subtilités des variables.
J'ai report mon post au modérateur, normalement il devrait bouger d'ici !