View  Edit  Attributes  History  Attach  Print  Search

ACCUEIL | ARDUINO > S'INSTALLER > DEBUTER > APPROFONDIR | PROCESSING | MECATRONIQUE | MATERIEL | OUTILS | TESTS | Plus...|
Python > Shell > ATELIERS Python + Qt > PyQt apps > PyQt+Arduino | Mes Robots | RepRap | Mes lib'Arduino | Mes shields Arduino | Mes distros | Les Mini-PC |
ATELIERS ARDUINO| VIDEOS | COMPRENDRE | REFERENCES | CODER | TECHNIQUE | GNU/LINUX | LIENS | Rien à voir |

Faire varier la luminosité d'une LED à l'aide d'un slider (contrôle graphique réglable) depuis une interface PyQt

Par X. HINAULT - Page créée le : 15/11/2014.

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


//--- Controle PWM LED avec librairie Utils ---
// 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 python-qt4
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.