Je pense qu'il y a deux trois notions et logique propre aux développement qui t'échappe, ce qui est normale quand on débute.
a tu bien fais le test que je t'ai proposé sur la page précédent avec les sortie sur le serial monitor parce que tout est là et bien affiché ?
Bon, En fait ce qui me tracasse c'est qu'avec votre fonction, je ne vois pas comment ça peut associer tel valeur d'un sonar avec telle LED
L'association entrées Analogique (sonar), valeurs et sorties numérique (led) ce situe dans tes tableaux.
int interval0 = 200;
int interval1 = 200;
int interval2 = 200;
int interval3 = 200;
int interval4 = 200;
int interval5 = 200;
int analogPin0 = 0;
int analogPin1 = 1;
int analogPin2 = 2;
int analogPin3 = 3;
int analogPin4 = 4;
int analogPin5 = 5;
int val0 = 0;
int val1 = 0;
int val2 = 0;
int val3 = 0;
int val4 = 0;
int val5 = 0;
Dans mes exemples, tout ceci est supprimé et remplacé par les tableaux.
byte i = 0;
byte tabPin[6] = {3,5,6,9,10,11}; // soit 3 si i = 0, 5 si i = 1, 6 si i = 2, ...
byte tabVal[6] = {0, 0, 0, 0, 0, 0}; // index de chaque valeur correspondra à i (0->5 dans loop)
int tabInterval[6] = {200, 200, 200, 200, 200, 200}; // index de chaque valeur correspondra à i (0->5 dans loop)
J'aurais pus faire un tableau "entreeAnalog[6] = {0,1,2,3,4,5,6}" mais comme 'i' sera incrémenté dans loop de 0 à 5 ce qui correspond en tout point à tes numéros d'entrée analogique donc pas besoin de variables spécifiques supplémentaires ou tableau, au fur et à mesure que i est incrémenté de 1 nous appelons les fonctions en transmettant ça valeur actuelle en paramètre.
Pour la correspondance, led, valeur et interval, comme les tableaux sont indexé (a partir de 0), si tu veux retrouver une valeur contenue dans l'un de tes tableaux tu lui spécifie l'index voulu entre [], donc si je veux retrouver la deuxième valeur de tabVal je fais "tabVal[1]" et ce 1 la variable i est totalement capable de ta la fournie puisque qu'elle ira de 0 à 5 dans loop.
Lorsque tu transmets i en paramètre à pinVal pour chaque appel de la fonction c'est comme si tu fessais à chaque fois tabVal[0] puisque pinVal vaut 0, tabVal[1] puisque pinVal vaut 1, tabVal[2] puisque pinVal vaut 2, ...
Regarde bien quand i vaut 3 par exemple, ce qui correspond à ton sonar 3 (entré analogique 3) tu appels la fonction et i est transmis en paramètre de la fonction à pinVal donc pinVal à la valeur 3 à ce moment là, puis dans ta fonction lorque tu lis ta valeur "analogRead(pinVal);" c'est comme si tu fessais analogRead(3) puisque pinVal vaut 3, ensuite tu enregistre la valeur dans le tableau tabVal[pinVal] c'est comme si tu fessais pinVal[3] pousque pinVal vaut 3.
Maintenant lorsque tu appelleras la fonction suivante tu lui transmet également la valeur de i donc il suffira d'aller chercher la ou les valeur enregistré précédemment dans les tableaux correspondant, tabVal[3] puisque i vaut 3 à ce moment là, idem pour les led tabPin[3] vaut 6 donc nous avons bien la sortie digital 6 pour notre sonar 3.
tu peux aller voire mon tuto sur les pointeurs et tableaux peut être que tu y verras plus claire avec mes schémas comme je reprend quelque notions de base dedans.
http://arduino.cc/forum/index.php/topic,101780.0.html
PS: si ton programme ne fais pas ce que tu désires, celà doit venir de ta fonction beep, incohérence d'intervale ou interval de valeurs incorrecte mais le principe que je te fournis depuis la page précédente est le bon :
Tu lis la valeurs d'une entrée analogique dans la fonction lecture et ensuite tu effectues l'action correspondant à la valeur relevé précédement dans la fonction beep, chaque lecture ce fera successivement dans loop selon l'entrée analogique correspondant à 'i' donc de l'entrée 0 à 5.