L’utilisation d’une interface PyQt pour contrôler la luminosité d’une LED est une tâche relativement simple et peut être réalisée en quelques étapes. Dans ce tutoriel, nous allons vous montrer comment utiliser un slider (contrôle graphique réglable) pour faire varier la luminosité d’une LED à l’aide de PyQt. Nous allons vous guider pas à pas à travers le processus et vous expliquer comment configurer le slider et le connecter à la LED. Nous vous montrerons également comment utiliser le slider pour contrôler la luminosité de la LED.
Faire varier la luminosité d’une LED à l’aide d’un slider (contrôle graphique réglable) depuis une interface PyQt
1. Présentation
Ce programme fait varier l’intensité d’une LED à partir d’une valeur reçue sur le port Série comprise entre 0 et 255. La valeur pourra être reçue depuis le Terminal Série ou d’un contrôle réglable (slider) depuis une interface PyQt
Ce programme utilise les fonctionnalités suivantes :
- Utilise la connexion série vers le PC
Ressources utiles associées à ce programme :
- La librairie Serial – pour les communications séries entre la carte Arduino et l’ordinateur ou d’autres composants
- Ma librairie Arduino Utils
2. 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.

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 ».

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.
3. Matériel Nécessaire
3.1 L’espace de développement Arduino
- … pour éditer, compiler le programme et programmer la carte Arduino.

3.2 Le matériel suivant pour réaliser le montage associé
- une plaque d’essai pour montage sans soudures,

- des straps,

- une LED rouge 5mm,

- une résistance 1/4w de 200 Ohms environ,

4. Instructions de montage
- La connexion série vers le PC utilise les broches 0 et 1 (via le câble USB)
- Broche 3 : Une LED et sa résistance en série connectée au 0V
5. Le schéma théorique du montage
Le schéma théorique du montage (cliquer pour agrandir)
6. Le circuit du montage
Le schéma du montage à réaliser (cliquer pour agrandir)
7. Explication du programme
- Ce programme va « écouter » le port et extraire les valeurs numériques entière reçues en paramètre.
- Une impulsion PWM sera appliquée sur la broche 3 où est connectée la LED, à l’aide de l’impulsion PWM().
- Ce programme :
- reçoit la chaine en réception sur le port série à l’aide de la fonction waiting()
- analyse ensuite la chaîne reçue avec la fonction testInstructionLong() qui permet de vérifier le formatage de la chaine reçue : ici PWM(broche,pwm).
- Pour plus de détails, voir les commentaires du programme.
8. Mise en oeuvre du programme
8.1 Préparation du montage et programmation de la carte Arduino :
- Commencer par réaliser le montage indiqué sur plaque d’expérimentation
- Ensuite, programmer la carte Arduino avec ce programme (en bas de page) selon la procédure habituelle
8.2 Fonctionnement
- Lancer le programme PyQt ci-dessous et faire varier le Slider : la luminosité de la LED varie en conséquence.
9. Le programme complet en langage Arduino
A copier/coller directement dans l’éditeur Arduino
// Par X. HINAULT – Nov 2014
// Tous droits réservés – GPLv3
#include <Utils.h> // inclusion de la librairie
Utils utils; // déclare objet racine d’accès aux fonctions de la librairie Utils
String chaineReception=« »; // déclare un String
long params[6]; // déclare un tableau de long – taille en fonction nombre max paramètres attendus
int LED=3; // broche de la LED – broche PWM
int brochePwm; // variables utiles pour parametres reçus
int largeurPwm;
void setup() {
pinMode(LED,OUTPUT); // met la broche en sortie
Serial.begin(115200); // Initialisation vitesse port Série
// Utiliser vitesse idem coté Terminal série
Serial.println(« Saisir une chaine de la forme PWM(broche,etat) »);
Serial.println( » avec numero broche PWM parmi 3,5,6,9,10,11 et niveau 0 ou 1 : »); // message initial
} // fin setup
void loop() {
//chaineReception=utils.waitingString(true);// avec debug
chaineReception=utils.waitingString();// sans debug
if (chaineReception!=« ») { // si une chaine a été reçue
if(utils.testInstructionLong(chaineReception,« PWM(« ,2,params)==true) { // si chaine digitalWrite(broche, etat) bien reçue
Serial.println(« Arduino a recu le parametre : « + (String)params[0]);
Serial.println(« Arduino a recu le parametre : « + (String)params[1]);
brochePwm=params[0];
largeurPwm=params[1];
analogWrite(brochePwm,largeurPwm); // met la broche dans l’état voulu
} // fin si testInstructionLong==true
} // fin // si une chaine a été reçue
} // fin loop
10. Le programme PyQt
10.1 Description
- La variation d’un slider (contrôle graphique réglable) provoque l’envoi sur le port série d’une chaine sous la forme PWM(valeur) où la valeur entière est comprise entre 0 et 255, permettant de faire varier la luminosité de la LED en conséquence.
10.2 Ressources utilisées
- Le programme utilise l’espace de développement PyQt, facile à installer à l’aide des paquets suivants sous Gnu/Linux :
sudo apt-get install pyqt4-dev-tools
sudo apt-get install python-serial
sudo apt-get install qt4-designer
sudo apt-get install geany
10.3 Le programme complet PyQt
Le code complet est disponible ici
11. Fonctionnement :
- Lancer l’interface PyQt
- Régler le Slider : au lâcher de souris, la LED prend la nouvelle luminosité fonction de la PWM.
Articles Liés
- Faire varier la luminosité d'une LED à l'aide d'un slider (contrôle graphique réglable) depuis une interfcace Processing
Les LED sont des composants électroniques très pratiques et polyvalents qui peuvent être utilisés pour…
- Allumer/éteindre une LED à partir d'une chaîne reçue sur le port série
L'utilisation des LED est un moyen très pratique pour afficher des informations ou des états.…
- Allumer une LED à partir d'un bouton inverseur dans une interface Processing
L'utilisation d'un bouton inverseur pour allumer une LED est une méthode simple et efficace pour…