🛠 Lire un capteur analogique du MCU depuis Python (Firmata)

LattePanda Alpha · intermediaire · Schéma : IMG-lattepanda-alpha-intermediaire-2-capteur-analogique.svg — capteur analogique sur A0 et capteur PIR numerique sur D9 du coprocesseur, valeurs lues par pyFirmata sur le SoC

Objectifs

Utiliser la méthode officielle DFRobot (tutoriel « python_read_sensor ») pour lire des capteurs depuis le système d'exploitation x86 : on téléverse d'abord le firmware StandardFirmata sur l'ATmega32U4, puis un script Python avec pyFirmata pilote les broches à distance, sans écrire une ligne de C. Méthode identique sous Windows et Linux — seul le nom du port change.

Matériel

Code complet

Étape 1 — dans l'IDE Arduino (carte « Arduino Leonardo ») : Fichier → Examples → Firmata → StandardFirmata, puis téléverser.

Étape 2 — script hôte :

# read_sensors.py — Python 3, Windows ou Linux
# Lit un capteur analogique sur A0 et un PIR numérique sur D9
# du coprocesseur Arduino intégré (StandardFirmata doit être téléversé).
import time
from pyfirmata import Arduino, util

PORT = 'COM5'            # Windows : vérifier l'IDE Arduino ; Linux : '/dev/ttyACM0'
board = Arduino(PORT)
it = util.Iterator(board)   # vide les entrées série pour que read ne bloque jamais
it.start

board.analog[0].enable_reporting
board.digital[9].enable_reporting

while True:
    angle = board.analog[0].read    # None au premier passage, puis 0.0..1.0
    motion = board.digital[9].read  # True/False venant du capteur PIR
    print(f'A0={angle} D9(motion)={motion}')
    time.sleep(0.5)

Vérification attendue

Après téléversement de StandardFirmata, la LED de diffusion clignote brièvement. Le script affiche d'abord A0=None puis des flottants entre 0.0 et 1.0 qui varient quand on tourne le potentiomètre ; D9 passe à True quand le PIR détecte un mouvement.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels