(par le protocole ”Firmata standard”)
Pour utiliser une broche de l’Arduino en sortie analogique (mode PWM), il faut au préalable la déclarer en créant un objet ”pinPWM” avec la commande suivante :
pinPWM = board.get_pin(‘d:numéro_de_pin:p’)
La syntaxe est:
. ”d” pour digital,
. ”numéro_de_pin” est le numéro de la broche (pour rappel, les broches supportant le PWM sont les broches 3, 5, 6, 9, 10, 11 sur l’Arduino Uno),
. ”p” pour PWM,
. ”board” est l’objet créé lors de l’appel de la méthode ”Arduino” du module ”pyfirmata”.
On peut définir une fonction déclarant plus facilement une broche en sortie analogique :
def AnalogOutput(board,pin): AnalogOutputPin=board.get_pin(‘d:’+ str(pin) +’:p’) return AnalogOutputPin |
La syntaxe pour déclarer, par exemple, la broche N°11 en sortie analogique est alors plus simple:
pinPWM = AnalogOutput(board,11)
La tension de la broche N°11 déclarée en sortie analogique est réglable en modifiant le rapport cyclique du signal PWM entre 0 (0 %) et 1 (100%) :
board.digital[11].write(rapport cyclique)
–> si rapport cyclique = 0, alors la tension est de 0 V
–> si rapport cyclique = 1, alors la tension est de 5 V
–> si rapport cyclique = 0.5, alors la tension est de 2,5 V
On peut également définir une fonction pour modifier le rapport cyclique d’une broche déclarée en sortie analogique :
def AnalogWrite(board,pin,val): board.digital[pin].write(val) |
Ainsi, l’instruction pour appliquer une tension de 2,5V sur la sortie ”11” déclarée en sortie analogique, de l’objet ”board”, est :
AnalogWrite(board, 11, 0.5)
Exemple :
Nous allons utiliser les propriétés des sorties analogiques de l’Arduino pour régler la luminosité de la DEL rouge de notre circuit entre 0 et 100%. Le programme (”LedRVBAnalogOutput.py”) va demander à l’utilisateur de saisir un nombre entier entre 0 et 100 de façon à régler la tension de la broche sur laquelle la DEL est connectée entre 0 et 5 V.
Déroulement du programme :
– Importation des librairies et définition de fonctions :
. Le module ”ConnectToArduino.py”, contenant les fonctions de connexion à l’arduino via le protocole ”Firmata standard”,
. Fonction ”AnalogOutput” pour déclarer une sortie analogique,
. Fonction ”AnalogWrite” pour modifier la tension d’une broche analogique.
– Déclaration des constantes et variables :
. PinLedR = 11 (constante correspondant au n° de la broche sur laquelle la DEL rouge est connectée)
. RapportCyclique = 0.0 (variable pour stocker la valeur du rapport cyclique du signal PWM)
. ChoixRP =False (variable booléenne indiquant si la saisie du rapport cyclique a été réalisée)
. PortComArduino (port COM sur lequel l’Arduino est connecté)
– Connexion à l’Arduino (Idem programme précédent) :
. Tentative d’ouverture du port COM sélectionné et connexion à l’Arduino:
PortComArduino = SelectPortCOM()
board = OpenPortCom(PortComArduino)
. si la connexion à l’Arduino est réussie:
–> Déclaration de la broche de la DEL rouge en sortie analogique :
PinPWM = AnalogOutput(board, PinLedR)
– Boucle principale du programme (boucle ”while True”) :
. Demande de saisie de la valeur de la luminosité souhaitée entre 0 et 100 (un test est effectué sur la valeur saisie):
saisie = input(””)
. Calcul du rapport cyclique entre 0 et 1 :
RapportCyclique = float(saisie/100)
. La luminosité de la DEL rouge est réglée à l’aide du rapport cyclique calculé :
AnalogWrite(board,PinLedR,RapportCyclique)
– Fin du programme en appuyant sur Ctrl-C :
–> La DEL rouge est éteinte et le port COM est fermé.