Logo Mon Club Elec

Programmer le pcDuino : Python simple : Sortie analogique : Contrôler une LED multicolore RGB (PWM)

Le pcDuino est une plateforme de développement open source qui offre aux développeurs une variété de possibilités. Avec le pcDuino, vous pouvez programmer des applications et des systèmes embarqués en utilisant le langage Python. Dans cet article, nous allons vous montrer comment utiliser le pcDuino pour contrôler une LED multicolore RGB (PWM) en utilisant une sortie analogique. Nous allons vous expliquer comment configurer le pcDuino et comment programmer le code Python pour contrôler la LED. Nous allons également vous montrer comment utiliser le PWM pour contrôler la luminosité et la couleur de la LED.

Programmer le pcDuino : Python simple : Sortie analogique : Contrôler une LED multicolore RGB (PWM)

Programmer le pcDuino : Python simple : Sortie analogique : Contrôler une LED multicolore RGB (PWM)

Ce que l’on va faire ici

Ce programme très simple permet de faire varier la couleur d’une LED à l’aide de 3 broches d’une carte mini-PC.

  • Ce programme exploite l’instruction analogWrite(broche, largeur) qui permet de générer très simplement une impulsion PWM (Pulse Width Modulation en anglais ou Modulation de Largeur d’Impulsion (MLI) en français). Cette instruction permet de moduler la largeur d’impulsion, la fréquence restant fixe aux alentours de 520 hz par défaut.

IMPORTANT : L’instruction analogWrite() n’est disponible que sur les broches 3, 5,6,9,10,11.

Pré-requis

Pour Comprendre

Une impulsion PWM est une impulsion (ou onde) carrée, c’est à dire que le niveau de l’onde est soit HAUT soit BAS. Cette impulsion se répète dans le temps de façon continue.

Programmer le pcDuino : Python simple : Sortie analogique : Contrôler une LED multicolore RGB (PWM)

Une telle onde, comme toute onde est caractérisée par sa période, c’est à dire la durée entre 2 impulsions. La définition d’une onde PWM (Pulse Width Modulation en anglais ou Modulation de Largeur d’Impulsion (MLI) en français) se fait en modifiant la largeur du niveau HAUT par rapport à la durée de la période : la largeur du niveau HAUT est appelée « duty cycle ».

Programmer le pcDuino : Python simple : Sortie analogique : Contrôler une LED multicolore RGB (PWM)

Avec l’instruction analogWrite(broche, largeur), on va pouvoir générer une impulsion PWM avec une largeur de « duty cycle » voulue :

  • si valeur = 0, le duty cycle sera de 0% de la période
  • si valeur = 255, le duty cycle sera de 100% de la période
  • si valeur = 127, le duty cycle sera de 50% de la période
  • si valeur = n, le duty cycle sera de (n/255)*100% de la période.

Informations techniques : la LED multicolore RVB (ou RGB)

  • Une LED RVB pour Rouge-Vert-Bleu (ou RGB pour Red Green Blue), n’est autre qu’un ensemble de 3 LEDs couleurs rassemblées dans un même boitier : si vous savez utiliser une LED, alors vous saurez utiliser une LED RVB !
  • Une LED RGB aura donc 4 broches : une commune à l’ensemble des LEDs et une pour chaque LED de couleur. La broche commune pourra, selon les modèles, être le + (anode commune) ou le – (cathode commune)
Programmer le pcDuino : Python simple : Sortie analogique : Contrôler une LED multicolore RGB (PWM)
  • Pour obtenir les couleurs unitaires, il suffira d’allumer la LED de la couleur voulue.
  • Pour obtenir toutes les variétés de couleurs, on va mixer la proportion de couleur de chaque LED à l’aide d’une impulsion dite PWM, qui aura pour effet de fixer la proportion de chaque couleur :
    • 100% des 3 couleurs donnera du BLANC
    • 100% de rouge et 100% de vert donnera du JAUNE
    • 100% de rouge et 100% de bleu donnera du VIOLET
Programmer le pcDuino : Python simple : Sortie analogique : Contrôler une LED multicolore RGB (PWM)
  • Le brochage type d’une LED RGB est le suivant (la « patte » la plus longue est la broche commune, l’anode ou la cathode selon le modèle) :
Programmer le pcDuino : Python simple : Sortie analogique : Contrôler une LED multicolore RGB (PWM)

Matériel nécessaire

  • une plaque d’essai pour montage sans soudures,
Programmer le pcDuino : Python simple : Sortie analogique : Contrôler une LED multicolore RGB (PWM)
  • des straps,
Programmer le pcDuino : Python simple : Sortie analogique : Contrôler une LED multicolore RGB (PWM)
  • une LED RGB 5mm à cathode commune,
Programmer le pcDuino : Python simple : Sortie analogique : Contrôler une LED multicolore RGB (PWM)
  • 3 résistances 1/4w de 270 Ohms environ,
Programmer le pcDuino : Python simple : Sortie analogique : Contrôler une LED multicolore RGB (PWM) Programmer le pcDuino : Python simple : Sortie analogique : Contrôler une LED multicolore RGB (PWM) Programmer le pcDuino : Python simple : Sortie analogique : Contrôler une LED multicolore RGB (PWM)

Instructions de montage

On connecte :

  • la cathode commune au 0V
  • la broche R de la LED RGB en série avec une résistance à une broche numérique PWM de la carte pcDuino
  • la broche G de la LED RGB en série avec une résistance à une broche numérique PWM de la carte pcDuino
  • la broche B de la LED RGB en série avec une résistance à une broche numérique PWM de la carte pcDuino

IMPORTANT : L’instruction analogWrite() n’est disponible que sur les broches 3, 5,6,9,10,11.

Le montage à réaliser

Programmer le pcDuino : Python simple : Sortie analogique : Contrôler une LED multicolore RGB (PWM)

Le fichier *.yno

Copier/coller ce code dans l’IDE Pyduino

# entete declarative
rgb=[PWM0, PWM1, PWM2] # list des broches pwm utilisee – doit être une broche PWM (3,5,6,9,10 ou 11)

#— setup —
def setup():
        return # si vide

# — fin setup —

# — loop —
def loop():

        for couleur in rgb :

                for impuls in range(0,255):
                        analogWrite(couleur, impuls) # applique la largeur
                        Serial.println (« PWM= « +str(impuls))
                        delay(5)# entre 2 changements

                for impuls in range(0,255):
                        analogWrite(couleur, 255-impuls) # applique la largeur
                        Serial.println (« PWM= « +str(255-impuls))
                        delay(5)# entre 2 changements

# — fin loop —
 

Ce code est également disponible ici :

Le fichier *.py

Copier/coller ce code dans l’éditeur Geany :

#!/usr/bin/python
# -*- coding: utf-8 -*-

# exemple pyDuino – par X. HINAULT – www.mon-club-elec.fr
# Juin 2013 – Tous droits réservés – GPLv3
# voir : https://github.com/sensor56/pyDuino

# La luminosite d’une LED RGB varie (PWM)

from pyduino import * # importe les fonctions Arduino pour Python

# entete declarative
rgb=[PWM0, PWM1, PWM2] # list des broches pwm utilisee – doit être une broche PWM (3,5,6,9,10 ou 11)

#— setup —
def setup():
        return # si vide

# — fin setup —

# — loop —
def loop():

        for couleur in rgb :

                for impuls in range(0,255):
                        analogWrite(couleur, impuls) # applique la largeur
                        Serial.println (« PWM= « +str(impuls))
                        delay(5)# entre 2 changements

                for impuls in range(0,255):
                        analogWrite(couleur, 255-impuls) # applique la largeur
                        Serial.println (« PWM= « +str(255-impuls))
                        delay(5)# entre 2 changements

# — fin loop —

#— obligatoire pour lancement du code —
if __name__==« __main__ »: # pour rendre le code executable
        setup() # appelle la fonction main
        while not noLoop: loop() # appelle fonction loop sans fin

 

Ce code est également disponible ici : https://raw.github.com/sensor56/pyduino-exemples/master/PWM/FadingRGB.py

Utilisation

  • Réaliser le montage indiqué,
  • Appuyer sur le bouton <Exécuter> dans Geany
  • Une fenêtre de Terminal vide doit apparaître avec des messages et la luminosité de la LED doit varier
Programmer le pcDuino : Python simple : Sortie analogique : Contrôler une LED multicolore RGB (PWM)
Noter cet article

Laisser un commentaire

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

Archive Mon Club Elec

Articles populaires

Newsletter

Inscrivez-vous maintenant et bénéficiez d'un soutien continu pour réaliser vos travaux électriques en toute sécurité.