Arduino et Vumètre

Bonjour à tous,

Je possède un capteur de niveau sonore, qui fonctionne très bien, tests effectués avec Serial.printIn...

J'ai quelques LEDs et je voudrais créer un Vumètre. Jusque là facile, même au niveau du code.

Là ou je rencontre une difficulté dont je ne comprends pas la logique c'est lorsque je branche mes LEDs.

Lorsque je met une, deux ou trois LEDs, donc s'allumant plus le niveau sonore étant élevé, alors ça fonctionne.

Et lorsque je rajoute une quatrième LED (physiquement, en direct), à ce moment les quatres LEDs s'allument et restent allumées, enfin ça déconne et ça s'allume plus comme le code le voudrait... :roll_eyes:

Je précise que le code est fait pour 4 LEDs et que ça fonctionne lorsque seulement 3 sont branchées... :frowning:

Il y aurait t'il une subtilité au niveau des branchements lorsqu'on place plusieurs LEDs sur une breadboard ?

Merci pour votre aide :slight_smile:

Hello,

La question bateau: as-tu mis des résistances de limitation de courant sur chaque sortie?
Tu branches une led par sortie?

Je ne pense pas que ça vienne du montage; poste nous ton code. :slight_smile:

Non j'ai pas mis de résistances, et oui je branche une LED par sortie, et je récupère la terre sur les prises terres du protoshield.

Ce soir je teste avec les résistances et si ça fonctionne je vais me cacher, ça marche ? :smiley:

Cependant je comprends pas pourquoi en branchant une LED par sortie et le fait de ne pas avoir mis de résistances, peut provoquer cette réaction au bout de la quatrième LED... Merci :wink:

arduimat:
Non j'ai pas mis de résistances, et oui je branche une LED par sortie, et je récupère la terre sur les prises terres du protoshield.

Ce soir je teste avec les résistances et si ça fonctionne je vais me cacher, ça marche ? :smiley:

Cependant je comprends pas pourquoi en branchant une LED par sortie et le fait de ne pas avoir mis de résistances, peut provoquer cette réaction au bout de la quatrième LED... Merci :wink:

bonjour
quelles sont les 4 sorties utilisées ?
le sketch ?

arduimat:
Non j'ai pas mis de résistances, et oui je branche une LED par sortie, et je récupère la terre sur les prises terres du protoshield.

Ce soir je teste avec les résistances et si ça fonctionne je vais me cacher, ça marche ? :smiley:

Cependant je comprends pas pourquoi en branchant une LED par sortie et le fait de ne pas avoir mis de résistances, peut provoquer cette réaction au bout de la quatrième LED... Merci :wink:

Le fait de ne pas mettre de résistance sur chaque sortie ne permet pas de limiter le courant.
Donc en gros, avec 3 leds, tu devais tirer l'intensité maximale des broches (40mA chacune); et lors du branchement de la 4ème, ta board n'a pas du apprécié donc fonctionnement dégradé.

C'est une hypothèse, mais si tu as un multimètre, tu peux toujours le brancher en série sur une sortie pour voir ce que consomme la led.

Et pour info, il faut toujours limiter le courant dans une led! :slight_smile:

Bonjour,

Du faite qu'il n'y est pas de résistances de limitation de courant les led pompent tout le courant disponible, par conséquent les entrées/sortie l'arduino bloque dans un état incertain (pas totalement allumé et pas totalement éteinte).

Toujours mettre une résistance de limitation par led !
Je conseille une résistance de 330ohms (orange orange marron).

Bonsoir,

Merci pour vos réponses, j'ai mis les résistances partout et ça marche :blush:

par conséquent les entrées/sortie l'arduino bloque dans un état incertain (pas totalement allumé et pas totalement éteinte).

C'est exactement ce qui se passait.

Merci pour cette leçon de "applique les bases petit con" :smiley:

Voici pour mon code :

int sensorPin = 2; // select the input pin for the sensor
 int ledPin = 13; // select the pin for the LED
 int val = 0; // variable to store the value coming from the sensor
 int sound =0;

 int volume = 110;
 int volume2 = 130;
 int volume3 = 150;
 int volume4 = 200;
 
void setup() {
    pinMode(ledPin, OUTPUT); // declare the ledPin as an OUTPUT
    Serial.begin(9600); // initialize serial communication with computer
 }
 
void loop() {
    val = analogRead(sensorPin); // read the value from the sensor
    
    Serial.println(val); // send it to the computer (as ASCII digits)
   
    sound = val/3;
   //digitalWrite(9, HIGH); // turn the ledPin on
   if(sound>volume) {
      //Serial.println(val); // send it to the computer (as ASCII digits)
     analogWrite(9, sound);
       
         if(sound>volume2) {
     
             analogWrite(10, sound);
            
         }
         
         if(sound>volume3) {
     
               analogWrite(11, sound);
         }
         
          if(sound>volume4) {
     
               analogWrite(6, sound);
         }
     
     
   } else {
    analogWrite(9, 0);
    analogWrite(10, 0);
    analogWrite(11, 0);
    analogWrite(6, 0);
  }
}

C'est en faisant des erreurs qu'on apprend non? :slight_smile:

Heureusement que tu n'as pas cramé tes leds, ou pis, ta board!

P**** c'est solide un ATMega ! Mais il a quand même du avoir des vapeurs !
Tu copieras 100 fois U=RI et R =U/I

Je vais faire attention à l'avenir car ça fait plusieurs fois que je fais le coup, j'espère que j'ai pas abimé mon matos :slight_smile:

Un peu de doc pour mieux comprendre si tu veux.
http://www.iznogood-factory.org/pub/electronique/

Il y a différents pdf : courant continu, courant alternatif, électronique numérique etc.
C'est assez bien fait, copieux et pas toujours traduit complètement en français mais c'est de bonne qualité.
Bon courage