2.3 Premiers montages sur breadboard, Allumer une LED !

Maintenant que vous savez faire clignoter la led de votre Arduino, que vous savez comment fonctionne une breadboard, et que vous savez quels fils utiliser, essayons de faire clignoter une LED externe! Et pour cela nous allons réaliser notre premier montage électrique comprenant une Arduino!

Pour cela munissez vous de votre Arduino d’une breadboard (peu importe la taille de celle-ci), de fils,  d’une led, de fils (monobrins ou mâle mâle selon votre préférence 😉 ) et d’une résistance d’une valeur comprise entre 220 et 1k Ohm.  Si vous n’avez pas ce qu’il faut rassurez vous tout le nécessaire est disponible dans notre kit électronique 😉 ( kit aussi disponible sans l’arduino si vous en possédez déjà une).

En effet afin de ne pas griller vos LEDs il est important de bien mettre mettre une petite résistance en série avec votre led pour limiter le courant que va consommer le led! Si vous voulez en savoir plus sur cette résistance en série, voici un petit cours qui vous permet de calculer la valeur de la résistance pour un courant consommé par la LED.

Quoi qu’il en soit, il est important de savoir qu’une LED est un composant polarisé, c’est à dire que contrairement à la résistance, elle a un sens pour être branchée correctement et s’allumer.  Cependant rassurez vous si vous la branchez à  l’envers dans votre montage vous n’allez pas la griller, elle ne va seulement pas s’allumer.

Distinguer l’anode (+) de la cathode (-) :

+ anode    –|>|–     cathode  –

Si votre led est toute neuve l’anode sera la patte la plus longue.
Le met plat sur le bord de la led indique la cathode.

Petit moyens mnémotechniques :

  • la cathode,’ « K »- thode ‘ est du coté du K    » |<  » dans le schémas de le led.
  • le met plat peut être assimilé à un  »  –  » , un signe moins qui rappel le fait que la pin du côté de ce met plat va vers le  » –  »  le GND.
  • Quand on est ‘à plat’ on est KO, d’où le met plat = cathode , qui va vers GND ( le sol ) …

Utiliser une led sur une breadboard :

Vous pouvez  essayer ces quelques montages sur votre breadboard en utilisant votre arduino alimenté sur l’usb et ses pins 5V et GND  pour vérifier les configurations suivante :

Montage possible:

  5V      ——|>| ——-[ 220 ohm ]—– GND     =>   allumée

5V      ——|>| ——-[ 220 ohm ]—– 5V         =>   éteinte

GND  ——|>| ——-[ 220 ohm ]—– GND    =>    éteinte

GND  ——|>| ——-[ 220 ohm ]—– 5V        =>    éteinte

Vous pouvez sans problème échanger la place de la led et de la résistance ce qui revient à regarder le tableau précédant en retournant la led …

      5V    —[ 220 ohm ]——–|>| —– GND     =>   allumé

   5V    —[ 220 ohm ]——–|>| —– 5V        =>   éteint

 GND   —[ 220 ohm ]——–|>| —– GND     =>   éteint

GND   —[ 220 ohm ]——–|>| —– 5V        =>   éteint

 

Maintenant que vous savez comment allumer une led via une breadboard on va modifier un peu le montage pour que ce soit votre arduino qui allume la led.

Pour cela essayez ce montage  :

PIN13  ——|>| ——-[ 220 ohm ]—– GND     =>   Dans ce cas l’état de la led dépend du pin 13, si celui-ci est programmé pour être à l’état haut (5V) alors la led sera allumée, sinon si il programmé pour être à l’état bas (0V) alors la led sera éteinte.
montageLed

Led

Et téléversez ce programme  (qui est le même que celui utilisé pour faire clignoter la led sur l’Arduino dans le Chapitre 1)  :

// Blink avec #define
// Pour prendre les bonnes habitudes dès le départ

#define LEDPIN 13 //Associe 13 au mot " LEDPIN " dans le programme 
//ce qui a pour conséquence de tout simplement remplacer tout les LEDPIN dans le programme par  13.


#define PAUSEON 500 //Associe 500 à PAUSEON.

#define PAUSEOFF 500// Associe 500 à PAUSEOFF

void setup() { 

pinMode(LEDPIN, OUTPUT); //Déclare le numéro de pin associé à LEDPIN comme une sortie = pinMode(13, OUTPUT);

} 

void loop() { 

digitalWrite(LEDPIN,HIGH); //Place le pin digital 13 à l'état HAUT (5V) -> Led allumée
delay(PAUSEON); //Met en pause le programme pendant la valeur de PAUSEON en ms

digitalWrite(LEDPIN,LOW); //Place le pin digital 13 à l'état BAS (0V) -> Led éteinte
delay(PAUSEOFF); //Met en pause le programme pendant la valeur de PAUSEOFF en ms
}
Blink avec #define

Une fois le programme téléversé, vous devriez obtenir le même résultat sur les 2 leds (celle sur la carte et celle sur la breadboard) : les deux leds doivent clignoter ensemble.

Remarque 1 : vous auriez la encore très bien pu inverser la led et la résistance et obtenir le même résultat !
PIN13  —-[ 220 ohm ]——–|>| —— GND     =>   contrôlé par le pin13, allumé si PIN13 à 5V éteinte sinon.

Remarque 2 : Vous pouvez très bien essayer ceci aussi :

5V  —-[ 220 ohm ]——–|>| —— PIN13

Que ce passe t-il donc maintenant quand votre programme tourne ? Si vous ne savez pas ou n’êtes pas sûr n’hésitez pas à tenter l’expérience 😉

Si vous avez en doute en réalisant l'expérience cliquez pour faire dérouler la réponse 😉
La réponse est simple : Visiblement avec le code ci dessus ça ne semble rien changer! Mais si vous regardez en détail c’est qu’une impression ! =) En effet en câblant la led dans ce sens nous avons inversé le fonctionnement du montage,  la led externe s’allume désormais lorsque le PIN 13 est à 0V et s’éteind lorsque qu’il est à 5V. Pour vous en convaincre il suffit de regarder la LED qui est sur la carte arduino ! Avec ce second montage les deux led s’allument l’une après l’autre alors qu’avec le premier montage les deux LEDs clignotaient simultanément! Vous pouvez aussi vous en rendre compte en modifiant les valeurs des #define PAUSEON et PAUSEOFF de manière à mieux voir le phénomène!

Bon maintenant que vous savez comment piloter une led, vous pouvez facilement en contrôler plusieurs !

Contrôler plusieurs leds :

Pour contrôler plusieurs leds, il vous suffit de déclarer toutes les broches qui vont piloter vos leds de la même manière que précédement :

#define LED1 13
#define LED2 12
#define LED3 11

void setup() {
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
  pinMode(LED3, OUTPUT);
}

Puis de les utiliser comme ceci :

digitalWrite(LED1, HIGH);
digitalWrite(LED2, LOW);
digitalWrite(LED2, HIGH);

Exemple :

Pour vous entrainer à utiliser différentes leds, je vous propose ce petit exemple :

On va essayer de créer un feu de circulation simplifié (en utilisant 3 leds et un bouton poussoir que l’on va ensuite programmer.

Donc tout d’abord le montage, voici celui que je vous propose (n’hésitez pas à le faire vous même d’abord puis à venir vérifié une fois que vous pensez l’avoir fini 😉 , de même pour le programme ) :

Les résistances utilisées ci-dessous sont des 220Ohms pour les leds et une 10k Ohms pour le bouton poussoir.

feusigna_bb

Et voici le programme que je vous propose :

//LEDs
#define R 11 //LED Rouge connectée au pin 11
#define O 12 //LED Orange(blanche dans mon cas) connectée au pin 12
#define V 13 //LED Verte connectée au pin 13

//Bouton :
#define BOUTON 10 //Boutton poussoir connecté au pin 10

//Paramètres :
#define TEMPSPASSAGE 2000 //Temps en ms pour le passage du vert au orange
#define TRANSITION 1000   //Temps en ms pour le passage du orange au rouge

void setup() {
  //Déclaration des entrées et sorties :
  pinMode(R, OUTPUT);
  pinMode(O, OUTPUT);
  pinMode(V, OUTPUT);
  pinMode(BOUTON, INPUT);

  //Animation de départ :
  for(uint8_t tours = 0; tours <= 2; tours++)
  {
    #define PAUSE 80
    digitalWrite(R, HIGH);  delay(PAUSE); //Cette ligne permet d'allumer la led Rouge puis d'attendre PAUSE ms. 
    digitalWrite(O, HIGH);  delay(PAUSE); //Cette écriture permet de rendre le code plus lisible.
    digitalWrite(V, HIGH);  delay(PAUSE);
    digitalWrite(R, LOW);   delay(PAUSE);
    digitalWrite(O, LOW);   delay(PAUSE);
    digitalWrite(V, LOW);   delay(PAUSE);
  }

  //Initialisation du feu :
  digitalWrite(V, HIGH);
}

void loop() {
  while(digitalRead(BOUTON) == LOW)
  {
    digitalWrite(V, HIGH);
    delay(20);
  }

  //On passe le feu au orange :
  digitalWrite(V, LOW);
  digitalWrite(O, HIGH);

  //On attend :
  delay(TRANSITION);

  //On passe le feu au rouge :
  digitalWrite(O, LOW);
  digitalWrite(R, HIGH);

  //On attend que le boutton soit relaché :
  while(digitalRead(BOUTON) == HIGH)
  {
    digitalWrite(R, HIGH);
    delay(20);
  }
    
  //On attend que la "voiture" soit passée :
  delay(TEMPSPASSAGE);

  //On passe le feu au vert :
  digitalWrite(R, LOW);
  digitalWrite(V, HIGH);
}

Voici une vidéo du résultat que vous devriez obtenir :

 

<- Retourner à la page précédente | Passer à la page suivante ->

3 réflexions sur « 2.3 Premiers montages sur breadboard, Allumer une LED ! »

  1. Bonjour,

    je me suis permis de refaire le code, c’est plus logique que le feu soit tout le temps rouge et passe au vert quand l’on appuie 🙂

    //Initialisation du feu :
    digitalWrite(R, HIGH);
    }

    void loop() {
    while(digitalRead(BOUTON) == LOW)
    {
    digitalWrite(R, HIGH);
    delay(20);
    }

    //On attend que le boutton soit relaché :
    while(digitalRead(BOUTON) == HIGH)
    {
    digitalWrite(R, LOW);
    delay(20);
    digitalWrite(V, HIGH);
    delay(TEMPSPASSAGE);

    }

    //On passe le feu au orange :
    digitalWrite(V, LOW);
    digitalWrite(O, HIGH);

    //On attend :
    delay(TRANSITION);

    //On passe le feu au rouge :
    digitalWrite(O, LOW);
    digitalWrite(R, HIGH);
    }

  2. Bonjour,
    En utilisant Raspberry Pi 4 + LED + Résistance 220 Ohms, est ce que je vais brancher la résistance à la patte longue (+) ou patte courte (-) de la LED ? et pourquoi ?

Répondre à darknat Annuler la réponse

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *