Micro:Bit et LED RGB

Une LED RGB (Red, Green, blue ou Rouge, vert, bleu en français) est composée de 3 LED de couleurs différentes. En modulant l’intensité de chacune d’elles, il est possible d’obtenir plus d’un milliard de couleurs.

Elle existe sous forme de simple composant ou de module, mais dans les 2 cas, elle possède 4 pattes. 1 patte commune au 3 LED et 1 pour chaque LED.
Logiquement, il en existe 2 types. Les LED à Anode commune (reliées par la borne +) et les LED à Cathode commune (reliées par la borne -).

Les branchements

Leurs fonctionnements sont inversés et les branchement sont différents.

LED RGB à anode commune

LED RGB à cathode commune

Programmation du Micro:Bit

Les bornes P0, P1 et P2 du Micro:Bit peuvent prendre 2 valeurs en mode numérique ou 1024 valeurs en mode analogiques (plus d’info ici).
Dans un 1er temps, nous allons utiliser les sorties P0, P1 et P2 du Micro:Bit en mode numérique.

Le mode numérique

Pour allumer les LED à cathode communes, il faut appliquer une tension de 3,3V aux ports du Micro:Bit. Alors que pour les LED à anode commune, c’est une tension de 0V (GND).

En numérique, chaque LED de couleur ne peut prendre que 2 états (soit allumée, soit éteinte). Ce qui nous donne déjà 2 x 2 x 2 = 8 possibilités. Mais on peut considérer qu’il y a seulement 7 couleurs différentes puisque lorsque les 3 LED sont éteinte, la LED RGB et éteinte. Vous pouvez les faire défiler à l’aide des boutons A et B, en reproduisant le code suivant :

from microbit import *
n = 0
while True:
    # Si le bouton A est pressé
    if button_a.is_pressed():
        n = n - 1
        if n < 0:
            n = 7
        sleep(250)
    # Sinon et si le bouton B est pressé
    elif button_b.is_pressed():
        n = n + 1
        if n > 7:
            n = 0
        sleep(250)
    # Affichage_LED
    if n == 0:
        pin0.write_digital(0)
        pin1.write_digital(0)
        pin2.write_digital(0)
    elif n == 1:
        pin0.write_digital(0)
        pin1.write_digital(0)
        pin2.write_digital(1)
    elif n == 2:
         pin0.write_digital(0)
         pin1.write_digital(1)
         pin2.write_digital(0)
    elif n == 3:
         pin0.write_digital(0)
         pin1.write_digital(1)
         pin2.write_digital(1)
    elif n == 4:
        pin0.write_digital(1)
        pin1.write_digital(0)
        pin2.write_digital(0)
    elif n == 5:
        pin0.write_digital(1)
        pin1.write_digital(0)
        pin2.write_digital(1)
    elif n == 6:
        pin0.write_digital(1)
        pin1.write_digital(1)
        pin2.write_digital(0)
    else:
        pin0.write_digital(1)
        pin1.write_digital(1)
        pin2.write_digital(1)

Le mode analogique

En mode analogique, comme en numérique, les LED RGB à cathode et à anode communes se comportent différemment. Par exemple, une valeur de 255 (sur 1024) correspond à une intensité lumineuse de 25% pour les LED à cathode communes et de 75% pour les LED à anode commune.

Maintenant, chaque LED de couleur peut prendre 1024 états. Ce qui fait plus d’un milliard de possibilités (1024 x 1024 x 1024 = 1 073 741 824). Nous n’allons donc pas pouvoir faire défiler toutes les couleurs avec les boutons A et B. Ce serais un peu long et je ne suis pas certain que l’oeil humain soit capable de discerner toutes les nuances de la LED RGB. Je vous propose donc de tester ce code qui affiche une couleur aléatoire avec le bouton B et qui éteint la LED avec le bouton A.

Le programme a été conçu pour une LED RGB à cathode, mais il est très facile de l’adapter. Si vous utilisez une LED RGB à anode commune, remplacez simplement les 3 valeurs à 0 par 1023.

from microbit import *
import random
while True:
    # Si le bouton A est pressé
    if button_a.is_pressed():
        pin0.write_analog(0)
        pin1.write_analog(0)
        pin2.write_analog(0)
    # Sinon et si le bouton B est pressé
    elif button_b.is_pressed():
        pin0.write_analog(random.randint(0, 1023))
        pin1.write_analog(random.randint(0, 1023))
        pin2.write_analog(random.randint(0, 1023))
        sleep(250)

5 réflexions sur “Micro:Bit et LED RGB

      1. Merçi bien moi j’aime votre blog et je vous suit pour que vous puissiez me donner des conseils et pour voir tout vos merveilleux article pouvez vous me donner votre gmail ?Pour pourvoir discuter,et faire des articles invités en fessant accort ça me ferais plaisir vus que je suis nouveau !

        Aimé par 1 personne

  1. Merci, c’est très gentil. Vous pouvez me contacter en cliquant sur le lien « Contactez-moi » ou sur twitter @jcquetin.
    Et surtout, n’oubliez pas d’indiquer vos coordonnées (votre adresse Email par exemple), pour que je puisse vous répondre…

    J’aime

Laisser un commentaire