pb de débutant bizarre, led allumée faiblement

Bonjour à tous,

Je rencontre un petit problème assez bizarre sur un petit montage de test.
L'idée est tout simplement d'allumer une série de 6 leds en fonction d'une valeur analogique.

Le montage est tout simple: un potar sur l'entrée analogique 0 et 6 leds sur les sorties numériques de 3 à 8.

Systèmatiquement la première led de la série s'éclaire faiblement alors que toutes les autres s'allument franchement. J'ai tenté des inversions un peu dans tous les sens pour éliminer tout problème hardware, c'est bien toujours la led qui correspond à la consigne la plus basse qui s'allume faiblement.

Voici mon code:

int sensorValue = 0; //lecture du potar
int sensorMap = 2; //map vers le réseau de led
int sensorPin = 0; //broche pour le potar
int LedPins[] = {3,4,5,6,7,8}; //broches pour les leds

void setup(){ //on met toutes les broches des leds en sortie et on active la communication série
  for( int i = 1; i < 7; i++){
    pinMode(LedPins[i], OUTPUT);
  }
  Serial.begin(9600);
}

void loop(){
  sensorValue = analogRead(sensorPin); //lecture de la valeur du potar
  Serial.print(sensorValue); //ecriture vers le port série pour validation
  Serial.print("\n"); //retour à la ligne
  sensorMap = map(sensorValue, 0, 1023, 1, 6); //map de la valeur du potar vers le réseau de leds
  Serial.print(sensorMap); //ecriture vers le port série pour validation
  Serial.print("\n"); //retour à la ligne
  delay(500);  //attente pour ne pas flooder l'affichage dans le terminal série
  for( int i = 0; i < 7; i++){
    digitalWrite(LedPins[i], LOW); //on met toutes les leds à zero
  }
  for( int i = 0; i <= sensorMap; i++){
    digitalWrite(LedPins[i], HIGH); //on allume les leds en dessous de la consigne
  }
}

Des idées? des suggestions ?

Evidemment l'affichage dans le terminal série est bon, sensorMap varie bien de 1 à 6 et la lecture du potar de 0 à 1023

EDIT: en relisant mon code à tete reposé lors de l'écriture de ce post je me rend compte que l'erreur vient peut-etre de la boucle pour allumer les leds. Je devrais commencer à 1 au lieu de 0, cela pourrait peut-etre causer mon soucis.
Je ne pourrais tester que vendredi soir donc si vous pouvez confirmer ou infirmer mon intuition, je vous remercie :slight_smile:

Je mise plutôt sur la boucle du setup qui met les pin en output :wink:

+1

Jte donne pas la réponse mais le problème vient bien de cette boucle :wink:

Bonjour,

Les tableaux en C et C++ commencent à zéro.

Exemple : un tableau x de 10 int commence à x[0] et ce finit à l'indice x[9].
Relis le code de tes boucles, surtout les parties initialisation et condition d'arrêt :wink:

Ouaip, ca fait 15 ans que je n'ai plus fait de C XD

Merci pour votre aide, cela va aller beaucoup mieux forcement :wink: