MagPI 7 Page 6

De Le French MagPi
Aller à : Navigation, rechercher

set_brightness() - convertit la valeur la valeur du curseur de l'interface graphique, comprise entre 0 et 100, en nombre à virgule flottante, compris entre 0.0 et 1.0, puis l'écrit sur la broche D3.

cleanup() - tout ce que fait cette routine est d’éteindre la DEL, et essayer d'arrêter le programme proprement. Cependant elle ne parvient pas toujours à le faire; parfois il vous faudra en plus appuyer sur CTRL-C dans le terminal.

3. Activer l'interface graphique Tkinter. Tk (et sa version Python, Tkinter) est un GUI plutôt ancien, mais il est aussi relativement simple à utiliser.

Ainsi ici, je crée un curseur graphique de 400 pixels de large qui appelle la routine set_brightness() avec la valeur actuelle du curseur lorsqu'il change de valeur.

Poussé à fond à droite, le curseur appelle set_brightness(100), allumant la DEL au maximum.

Puisque la fenêtre est simple - juste un curseur et une étiquette - j'utilise la méthode basique pack() de Tk pour organiser les items dans la fenêtre.

Il dessine d'abord les items, puis les rassemble, façon Tetris, dans la fenêtre.

Une fois que c'est fait, il lance la première lecture de température (qui lance la suivante et ainsi de suite), et demeure finalement dans la boucle principale mainloop() de Tk jusqu'à la fin du programme, en répondant à vos entrées.

Autres pistes

Ceci est un exemple très simple du contrôle d'un Arduino en Python.

Alors que Firmata peut piloter d'autres sorties plus complexes comme des servos, il prend le pas sur la totalité de la logique de la carte Arduino.

Un autre capteur qui impliquerait une mise en œuvre complexe ou un contrôle temps réel ne fonctionnerait certainement pas aussi bien.

Cela mis à part, vous avez connecté toute la puissance du Raspberry Pi à la robustesse de l'Arduino ; la seule limite, c'est votre imagination !

Auteur : Stewart C. Russell Stewart C. Russell vit à Toronto, où il crée des fermes éoliennes et des centrales électriques solaires. Quand il ne disparait pas dans les zones venteuses/ensoleillées de la planète, il est chez lui, pratiquant la radio-amateur (indicatif VA3PID), ou jouant du banjo, bricolant des ordinateurs, ou évitant de jardiner. Son site web est http://scruss.com/blog.



traduction des commentaires du code)

# Création d'un nouvel objet carte
# spécifiant le port série ;
# à remplacer par /dev/ttyUSB0 pour les anciens
# Arduinos
# Lance un nouveau thread itérateur pour que
# le buffer série ne déborde pas
# Configuration des broches
# A0 Entrée     (LM35)
# D3 Sortie PWM (DEL)
# IMPORTANT ! ignorer les premières lectures
# jusqu'à ce que A0 retourne quelque chose de valide
# Étiquette définie selon la lecture du LM35 en °C
# Redémarrage après une demi-seconde
# Configuration de la DEL
# Le curseur renvoie 0 .. 100
# pyfirmata s'attend à 0 .. 1.0
# Nettoyage à la sortie
# et extinction de la DEL
# Configuration de l'interface graphique
# s'assurer que cleanup() sera appelée en quittant
# dessine un gros curseur pour la luminosité de la DEL
# place l'étiquette à côté du curseur 
# Démarre la boucle de lecture de température
# Lance la boucle d'événements Tk 

Outils personnels
Espaces de noms

Variantes
Actions
Navigation
Boîte à outils