Go Down

Topic: pb de débutant bizarre, led allumée faiblement (Read 1 time) previous topic - next topic

M4vrick

Feb 13, 2013, 09:17 am Last Edit: Feb 13, 2013, 09:23 am by M4vrick Reason: 1
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:

Code: [Select]
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 :)

unisev

Je mise plutôt sur la boucle du setup qui met les pin en output  ;)
EN: Libraries are my Gurus, they make me believe anything they want !
FR: Les librairies sont mes gourous, elles me font croire ce qu'elles veulent !

B@tto

+1

Jte donne pas la réponse mais le problème vient bien de cette boucle ;)
Blog électronique : battomicro.wordpress.com
Photographie : www.interactive-celebration.fr
Fablab de Montpellier : www.labsud.org

skywodd

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 ;)
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

M4vrick

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

Merci pour votre aide, cela va aller beaucoup mieux forcement ;)

Go Up