Header Ads

Contrôler une LED RGB avec PyBoard

Nous avons consacré notre Dimanche à notre PyBoard. Cette fois, nous lui avons dédié un tutoriel sur le contrôle d'une LED RGB (RVB). Code que vous pourriez réutiliser pour commander un ruban RGB avec un étage amplificateur.
 
Introduction
Nous avons fait clignoter une LED et aussi contrôlé une séquence de huit LEDs. Cette fois, ce nouveau tutoriel de notre Kit Découverte MicroPython nous permettra de contrôler la couleur.

En utilisant une LED RGB (Red Green Blue ou RVB pour Rouge Vert Bleu) qui est en fait 3 LEDs dans un seul boîtier, nous pouvons générer n'importe laquelle des couleurs que vous souhaitez. Nous y arrivons en faisant un mélange de couleur.
Ce qui nécessite de faire un petit retour en arrière sur nos premiers cours d'éducation artistique, ces jours durant lesquels nous expérimentions les mélanges de couleurs à partir de feuilles de cellophane colorées.

Schéma 

Bien la la LED RGB soit habituellement utilisée sur Arduino (5V), nous pouvons fort bien l'utiliser avec une tension d'alimentation de 3.3v.

Nous allons brancher:
  • La LED rouge sur Y10
  • La LED verte sur Y11
  • La LED bleu sur Y12
Source: Tutoriel Led RGB et MicroPython PyBoard

Montage
Source: Tutoriel Led RGB et MicroPython PyBoard


Le Code
Attention, logique inversée:
Pour allumer la LED rouge, il faut que le courant puisse passer du +3.3V vers la masse.
Comme la LED est déjà branchée sur le +3.3v, la seule marge de manoeuvre se trouve sur l'autre broche qu'il fait soit placer à la masse (niveau bas, low), soit à +3.3v (niveau haut, high).
Lorsque la broche du pyboard est au niveau bas, le courant peut circuler de +3.3v vers la masse (au travers de la LED et de la résistance) --ET-- la LED s'illuminera.
Cela signifie que pour avoir du rouge, il faut placer la broche de la LED rouge au niveau bas (à la masse, low) mais surtout il faut que les LEDs verte et bleue soient éteintes et leur broche respective à +3.3v (niveau haut, high, ce qui empêche un courant de circuler dans ces LEDs).

RED_PIN = pyb.Pin.board.Y10    # Led rouge
GREEN_PIN = pyb.Pin.board.Y11  # Led verte
BLUE_PIN = pyb.Pin.board.Y12   # Led bleue

# Déclaration des broches
pRed = pyb.Pin( RED_PIN, pyb.Pin.OUT_PP )
pGreen = pyb.Pin( GREEN_PIN, pyb.Pin.OUT_PP )
pBlue = pyb.Pin( BLUE_PIN, pyb.Pin.OUT_PP )

# Eteindre la LED
pRed.high()
pGreen.high()
pBlue.high()

# Allumer la led ROUGE
pRed.low()
pGreen.high()
pBlue.high()

# Attendre 1 secondes
pyb.delay( 1000 )
 
# Allumer la led BLEUE
pRed.high()
pGreen.high()
pBlue.low()

# Attendre 1 secondes
pyb.delay( 1000 )    

# Allumer la led VERTE
pRed.high()
pGreen.low()
pBlue.high()

# Attendre 1 secondes
pyb.delay( 1000 )    

# Allumer en BLANC (toutes les LEDs allumées)
pRed.low()
pGreen.low()
pBlue.low()

# Attendre 1 secondes
pyb.delay( 1000 )    

# Allumer en BLANC (toutes les LEDs allumées)
pRed.high()
pGreen.high()
pBlue.high()

Contrôle Analogique (en PWM)
Passer d'une couleur à l'autre est amusant. Mais les LEDs RGBs ne montrent tout leur potentiel que lorsque l'on fait des mélanges de couleurs à l'aide du contrôle analogique.
En utilisant la modulation de largeur d'impulsion (PWM) il est possible de produire presque n'importe quelle couleur et de faire des fondus d'une couleur à l'autre.
Nous avons appris dans le tutoriel "Led et luminosité" comment identifier les Timer et le Channel associé à la sortie.
Nous allons également réutiliser la fonction arduino_map découvert dans le tutoriel dédié à la "lecture analogique".
Par contre, nous avons besoin de sorties PWM pour commander les LEDs rouge, vert, bleu de notre LED RGB. Nous allons devoir modifier notre montage pour utiliser les broches X8, Y9 et Y10.
Source: Tutoriel Led RGB et MicroPython PyBoard
Le script est un peu plus complexe mais vous permet de fixer n'importe quelle couleur à l'aide de la fonction set_color() qui prend un code RGB (rouge, vert, bleu) avec des valeurs de 0 à 255 (comme sur Arduino).
Une autre fonction fade_to_color() permet de créer une transition fluide entre deux couleurs.

Au final, en étudiant un peu le script couleur analogique, vous pourrez ajouter trois lignes de code (comme ci-dessous) pour réaliser une roue des couleurs.

# Roue des couleurs
COLORS = [ROUGE,JAUNE,VERT,CYAN,BLEU,MAGENTA,ROUGE]
for current_color, next_color in zip( COLORS, COLORS[1:] ):
    led.fade_to_color( current_color, next_color, 10 )

Le fonctionnement de ces quelques lignes étant décrit dans notre tutoriel.

Tutoriel
Venez découvrir notre tutoriel "Led RGB avec MicroPython Pyboard" complet sur le wiki de MCHobby.
Ou acheter