Gestion des sorties analogiques

(par le protocole ”Firmata Express”)

 

 

Pour utiliser une broche de l’Arduino en sortie analogique (mode PWM), il faut au préalable la déclarer avec la commande suivante : 

loop.run_until_complete(board.set_pin_mode_pwm(pin))

où :

board” est l’objet créé lors de l’appel de la méthode PymataExpress” du module pymata-express”,

pin” est le numéro de la broche du microcontrôleur que l’on souhaite déclarer en sortie analogique,

loop” est la boucle des tâches asyncio” déclarée ainsi :

loop = asyncio.get_event_loop() 


Le plus simple est de créer une fonction qui sera appelée dans nos programmes en Python pour déclarer une broche en sortie analogique :

def Set_AnalogOutput_Pin(board,pin):

loop.run_until_complete(board.set_pin_mode_pwm(pin))


Ainsi, l’instruction pour déclarer la broche 11”, de l’objet board”, en sortie analogique est:

Set_AnalogOutput_Pin(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 val = 0 (0 %) et val = 255 (100%) :

loop.run_until_complete(board.analog_write(pin, val))

–> si val = 0, alors la tension est de 0 V

–> si val = 255, alors la tension est de 5 V

–> si val = 128, alors la tension est de 2,5 V

De même, on peut définir une fonction pour l’écriture sur une sortie analogique :

def Analog_Write(board, pin, val): 

loop.run_until_complete(board.digital_write(pin, val))


Ainsi, l’instruction pour régler la sortie analogique ”11”, de l’objet ”board”, à 2,5 V est :

Analog_Write(board, 11, 128)

Exemple :

L’exemple d’application de la gestion des sorties analogiques avec ”Firmata Express” est le même que celui avec ”Firmata Standard”.

Le programme (LedRVBAnalogOutput.py) va demander à l’utilisateur de saisir un nombre entier entre 0 et 255 de façon à régler la tension de la broche sur laquelle la DEL rouge 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 Express”,

. La bibliothèque asyncio” nécessaire au fonctionnement de PymataExpress”

. Fonction Set_AnalogOutput_Pin” pour déclarer une broche en sortie analogique,

. Fonction Analog_Write” pour modifier la tension d’une broche analogique,

. Fonction Arduino_Exit” pour fermer le port COM et se déconnecter de l’Arduino

 

Déclaration des constantes et variables :

. PinLedR = 11 (constante correspondant au n° de la broche sur laquelle la DEL rouge est connectée)

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

. Détection du port COM :

PortComArduino = SelectPortCOM()

. Tentative d’ouverture du port COM sélectionné et connexion à l’Arduino:

board = OpenPortCom(PortComArduino)

. Si la connexion à l’Arduino est réussie:

–> Définition d’une boucle asyncio :

loop = asyncio.get_event_loop()

–> Déclaration de la broche de la DEL rouge en sortie analogique :

Set_AnalogOutput_Pin(board, PinLedR)

Boucle principale du programme (boucle ”while True”) :

. Demande de saisie de la valeur de la luminosité souhaitée entre 0 et 255 (un test est effectué sur la valeur saisie):

saisie = input(””)

. La luminosité de la DEL rouge est réglée à la valeur saisie :

AnalogWrite(board,PinLedR,saisie)

Fin du programme en appuyant sur Ctrl-C :

–> La DEL rouge est éteinte et le port série est fermé.