Programmer le pcDuino : Pyduino : périphériques : Fixer la largeur d'une impulsion PWM par saisie d'une valeur à l'aide d'un numpad (clavier numérique )Par X. HINAULT - Juillet 2013 Ce que l'on va faire ici
Par accès VNC, il est possible avec ce code de contrôler à distance la largeur de l'impulsion PWM : y compris par tablette tactile ! (en saisissant au sein du client VNC sur la tablette la valeur voulue suivi de <entrée> puis envoi)
Noter que l'utilisation d'un keypad numérique USB (ou numpad) permet de remplacer simplement et avantageusement (ne coûte que quelques euros) un clavier numérique matriciel 4x4 (avec signes d'opération et touche de validation!), même si aucun écran n'est connecté, tant que le programme Pyduino a le focus, ce qui est obligatoirement le cas une fois le programme lancé, tant qu'on n'utilise pas de souris ! De plus, le code de gestion du clavier est très simple, puisqu'il est géré par le système ! ![]() Pré-requis
Pour ComprendreUne 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 :
Schéma fonctionnel
Matériel nécessaireSystème
![]() E/S
![]()
![]()
![]()
![]() Instructions de montage
Le montage à réaliserLe fichier *.pyCopier/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 saisie d'une valeur fixe l'impulsion pwm from pyduino import * # importe les fonctions Arduino pour Python # entete declarative #--- setup --- def setup(): return # si vide # -- fin setup -- # -- loop -- def loop(): # try.. except.. permet d'éviter le blocage si erreur de saisie try: reponse=input("Veuillez saisir une valeur entre 0 et 100% ") # attention : encadrer chaine avec "" # sinon elle sera consideree comme le nom d'une variable - voir raw_input pour saisie de chaine except: # erreur print ("Veuillez recommencer !") return # sort de la fonction loop print ("Vous avez saisi : " + str(reponse) ) pwmValue=constrain(reponse,0,100) print "Valeur pwm = " + str(pwmValue) + "%" analogWritePercent(PWM0,pwmValue) # largeur impulsion en 0-100% sur PWM0 = broche 3 pcduino # -- 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/Periph/InputPwm.py Utilisation
![]()
Discussion technique
|