Aller au contenu

Les LEDs sont partout : témoin lumineux sur un clavier ou une carte Arduino, lampe, flash du téléphone, guirlande…
C’est un élément de base qu’il est intéressant d’intégrer à de nombreux projets.

LEDs basiques #

Introduction #

Utilisés à but d’indicateur, les LEDs peuvent être branchés, équipés d’une résistance en série, directement sur une carte Arduino.
La puissance maximum qu’une carte peut fournir sur un pin est en général de 0.1w (20mA), pour plus d’informations consultez la documentation de la carte. Pour utiliser plus de puissance vous pouvez passer par un relai ou un transistor.
Il existe des LEDs RVB qui intègrent plusieurs couleurs, elles se comportent comme 3 LEDs indépendants en parallèle.

Calculateur de résistance #

A moins d’utiliser un composant permettant de réguler le courant, il faut associer la LED à une résistance en série pour ne pas la griller.
Pour calculer la valeur de la résistance minimum il vous faut :

  1. La tension de la source d’alimentation (Vsource)
  2. La tension de fonctionnement de la LED (Vled) : inscrite dans la fiche technique, vous pouvez aussi trouver cette valeur avec un testeur de composant ou l’approximer par rapport à la couleur de la LED (cf tableau)
  3. Le courant max admissible par la led (Iled). Si vous n’avez que la puissance (Wled) alors Iled = Wled / Vsource

La valeur de la résistance à prendre est donc de minimum :
Rled = (Vsource – Vled) / Iled
Vous pouvez choisir de prendre une résistance de valeur bien supérieur pour avoir une LED qui brille moins.

CouleurPlage Vled
Rouge1,8 – 2,1
Ambre2 – 2,2
Orange1,9 – 2,2
Jaune1,9 – 2,2
Vert2 – 3,1
Bleu3 – 3,7
Blanc3 – 3,4
Tensions classiques des LEDs

Exemple de code #

Dans cet exemple une LED est branchée entre le pin 6 de la carte et la masse via une résistance.

Dans certains cas il peut être pertinent/nécessaire de brancher la led dans l’autre sens : entre un pin et la sortie +5v. Dans ce cas la commande « LOW » allume la LED et « HIGH » l’éteint.

#define PIN_LED 6       // Pin sur lequel est branché la LED sur l'Arduino. 
//vous pouvez aussi utiliser "LED_BUILTIN", qui correspond à la position de la LED intégrée
//à la carte, si il y en a une.

void setup() {
    pinMode(PIN_LED , OUTPUT);
}
void loop() {
  //mode on/off
  digitalWrite(PIN_LED , HIGH);
  delay(250);
  digitalWrite(PIN_LED , LOW);
  delay(250);

  //mode fondu : fonctionnent uniquement sur un pin ~PWM
  for (int i = 0; i < 256; i++)
  {
    analogWrite(PIN_LED , i); //valeurs 0-255
  }
}

LEDs adressables #

Introduction #

Ce type de LED est plus chère que les LEDs classiques, mais possèdes de nombreux aventages :

  1. Elles n’ont besoin que d’un pin pour être contrôlés, quel que soit le nombre de LEDs (limité à env. 500 sur arduino UNO).
  2. Elles utilisent une alimentation indépendante : la puissance n’est pas limitée à ce que peut sortir la carte Arduino.
  3. Les LEDs gardent en mémoire la couleur.
  4. La résistance est déjà intégrée.

Retrouvez la documentation complète sur le site du fabriquant : https://adafruit.github.io/Adafruit_NeoPixel/html/class_adafruit___neo_pixel.html

Exemple de code #

Dans cet exemple une bande de 10 LEDs RVB est branchée au PIN 5, les LEDs ont une alimentation externe. Il faut tout de même relier le GND des LEDs et de la carte.

#include <Adafruit_NeoPixel.h>
#define PIN_LED 5	  //Pin sur lequel sont branchés les LEDs
#define NB_LED 10 	//nombre de LEDs 

Adafruit_NeoPixel mesLeds(NB_LED , PIN_LED , NEO_GRB + NEO_KHZ800);

void setup() {
    mesLeds.begin();		//initialisation
}

void loop() {
  mesLeds.clear();		//mettre sur 0 tout les pixels
  
  //allume progressivement les LEDs en blanc
  for (int i = 0; i < NB_LED ; i++)
  {
    mesLeds.setPixelColor(i, mesLeds.Color(255, 255, 255));
    mesLeds.show();		  //envoyer l’instruction
    delay(250);
  }
}

Débug et astuces #

Si la mauvaise couleur s’affiche alors que votre code est bon, vous pouvez essayer de rajouter un condensateur en amont des LEDs, ou utiliser deux « .show » de suite dans le code.

Pour sauvegarder une couleur : uint32_t ROUGE = pixels.Color(50, 0, 0);

Code allégé #

Pour utiliser des LEDs adressables avec un petit microcontrôleur ATTiny13 il n’est pas possible d’utiliser la librairie de Adafruit, trop lourde. Une version simplifiée peut être utilisée : https://gist.github.com/jpraus/07995fcb9248f39292aa7d68cc030bf6

Powered by BetterDocs

Laisser un commentaire