Logo Mon Club Elec

Programmer le RaspberryPi : Python simple : Sortie analogique : Faire varier la luminosité d’une LED (PWM)

Le RaspberryPi est un ordinateur à carte unique qui offre une variété de possibilités pour les développeurs et les créateurs. Il est possible de programmer le RaspberryPi pour contrôler des périphériques externes, tels que des LEDs. Dans ce tutoriel, nous allons apprendre à utiliser le langage de programmation Python pour contrôler la luminosité d’une LED à l’aide d’une sortie analogique (PWM). Nous verrons comment configurer le RaspberryPi et le matériel nécessaire, puis nous verrons comment écrire le code Python pour contrôler la luminosité de la LED.

Programmer le RaspberryPi : Python simple : Sortie analogique : Faire varier la luminosité d’une LED (PWM)

Programmer le RaspberryPi : Python simple : Sortie analogique : Faire varier la luminosité d’une LED (PWM)

Ce que l’on va faire ici

Ce programme très simple permet de faire varier la luminosité d’une LED sur une broche 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 la broche I/O n°1 du RaspberryPi (PWM0)

Pré-requis

  • RaspberryPi avec système Lubuntu opérationnel. Voir si besoin la page d’accueil du RaspberryPi
  • Langage Python (2.7) et l’éditeur Geany installés. Voir si besoin : S’installer pour programmer leRaspberryPi en Python et intro au langage Python PDF
  • ma librairie pyDuino fournissant les fonctions Arduino pour Python. Installer la librairie avec la commande suivante à saisir dans un terminal :
sudo wget -N  https://raw.github.com/sensor56/pyDuino/master/RaspberryPi/pyduino.py  /usr/lib/python2.7/dist-packages

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 RaspberryPi : Python simple : Sortie analogique : Faire varier la luminosité d’une LED (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 RaspberryPi : Python simple : Sortie analogique : Faire varier la luminosité d’une LED (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.

Matériel nécessaire

  • une plaque d’essai pour montage sans soudures,
Programmer le RaspberryPi : Python simple : Sortie analogique : Faire varier la luminosité d’une LED (PWM)
  • des straps,
Programmer le RaspberryPi : Python simple : Sortie analogique : Faire varier la luminosité d’une LED (PWM)
  • une LED rouge 5mm,
Programmer le RaspberryPi : Python simple : Sortie analogique : Faire varier la luminosité d’une LED (PWM)
  • une résistance 1/4w de 270 Ohms environ,
Programmer le RaspberryPi : Python simple : Sortie analogique : Faire varier la luminosité d’une LED (PWM)

Instructions de montage

  • Connecter sur une des broches PWM une LED et sa résistance (270 Ohms) en série connectée au 0V

Le montage à réaliser

Programmer le RaspberryPi : Python simple : Sortie analogique : Faire varier la luminosité d’une LED (PWM)

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 varie (PWM)

from pyduino import * # importe les fonctions Arduino pour Python

# entete declarative
LED=PWM0 # broche pour la LED – doit être la broche PWM = I/O n°1

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

# — fin setup —

# — loop —
def loop():

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

        for impuls in range(0,255):
                analogWrite(PWM0, 255-impuls) # applique la largeur
                Serial.println (« PWM= « +str(255-impuls))
                delay(10)# 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/master/RaspberryPi/exemple/1.Basics/Fading.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 RaspberryPi : Python simple : Sortie analogique : Faire varier la luminosité d&rsquo;une LED (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é.