Logo Mon Club Elec

Programmer le pcDuino : Python simple : Sortie analogique : Faire varier la luminosité d’une LED (PWM) à l’aide d’une résistance variable.

Le pcDuino est une plateforme de développement open source qui permet aux développeurs de créer des applications et des systèmes embarqués. Il est possible de programmer le pcDuino à l’aide de Python, un langage de programmation simple et puissant. Dans cet article, nous allons voir comment utiliser la sortie analogique du pcDuino pour faire varier la luminosité d’une LED à l’aide d’une résistance variable. Nous verrons comment configurer le pcDuino et le programme Python pour contrôler la LED et comment utiliser la résistance variable pour ajuster la luminosité.

Programmer le pcDuino : Python simple : Sortie analogique : Faire varier la luminosité d’une LED (PWM) à l’aide d’une résistance variable.

Programmer le pcDuino : Python simple : Sortie analogique : Faire varier la luminosité d’une LED (PWM) à l’aide d’une résistance variable.

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 en faisant varier la valeur d’une entrée analogique à l’aide d’une résistance variable. 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 : Faire varier la luminosité d’une LED (PWM) à l’aide d’une résistance variable.

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 : Faire varier la luminosité d’une LED (PWM) à l’aide d’une résistance variable.

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 pcDuino : Python simple : Sortie analogique : Faire varier la luminosité d’une LED (PWM) à l’aide d’une résistance variable.
  • des straps,
Programmer le pcDuino : Python simple : Sortie analogique : Faire varier la luminosité d’une LED (PWM) à l’aide d’une résistance variable.
  • une LED rouge 5mm,
Programmer le pcDuino : Python simple : Sortie analogique : Faire varier la luminosité d’une LED (PWM) à l’aide d’une résistance variable.
  • une résistance 1/4w de 270 Ohms environ,
Programmer le pcDuino : Python simple : Sortie analogique : Faire varier la luminosité d’une LED (PWM) à l’aide d’une résistance variable.
  • une résistance variable,
Programmer le pcDuino : Python simple : Sortie analogique : Faire varier la luminosité d’une LED (PWM) à l’aide d’une résistance variable.

Instructions de montage

  • Connecter sur une des broches PWM une LED et sa résistance (270 Ohms) en série connectée au 0V
  • Connecter la sortie variable de la résistance variable à la broche A2, la deux autres broches de la résistance variable étant connectées entre le 0V et le 3.3V.

Le montage à réaliser

Programmer le pcDuino : Python simple : Sortie analogique : Faire varier la luminosité d’une LED (PWM) à l’aide d’une résistance variable.

Le fichier *.yno

Copier/coller ce code dans l’IDE Pyduino

# entete declarative

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

# — fin setup —

# — loop —
def loop():

        #voie A2
        mesure=analogRead(A2) # mesure la voie A2
        tension=rescale(mesure,0,4095,0,3300.0) # voie A2 à A5 = 12 bits (0-4095) sur plage 0-3.3V
        #tension = mesure*3300.0/4095.0 # calcul équivalent

        Serial.println ( » Voie A2 = «  + str(mesure) +  » soit «  + str(« %.2f » % tension) +  » mV. » )

        impuls=rescale(mesure,0,4095,0,255) # calcul largeur PWM par rescale 0-4095 vers 0-255
        analogWrite(PWM0, impuls) # applique la largeur fonction de la mesure analogique

        Serial.println(« PWM= » + str(impuls)) # affiche largeur

        delay(200)# entre 2 mesures

# — 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 varie (PWM) en fonction mesure analogique

from pyduino import * # importe les fonctions Arduino pour Python

# entete declarative

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

# — fin setup —

# — loop —
def loop():

        #voie A2
        mesure=analogRead(A2) # mesure la voie A2
        tension=rescale(mesure,0,4095,0,3300.0) # voie A2 à A5 = 12 bits (0-4095) sur plage 0-3.3V
        #tension = mesure*3300.0/4095.0 # calcul équivalent

        Serial.println ( » Voie A2 = «  + str(mesure) +  » soit «  + str(« %.2f » % tension) +  » mV. » )

        impuls=rescale(mesure,0,4095,0,255) # calcul largeur PWM par rescale 0-4095 vers 0-255
        analogWrite(PWM0, impuls) # applique la largeur fonction de la mesure analogique

        Serial.println(« PWM= » + str(impuls)) # affiche largeur

        delay(200)# entre 2 mesures

# — 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/1.Basics/Fade.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 lorsque l’on tourne la résistance variable.
Programmer le pcDuino : Python simple : Sortie analogique : Faire varier la luminosité d&rsquo;une LED (PWM) à l&rsquo;aide d&rsquo;une résistance variable.
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é.