bouton-gpio.py

BeagleBone AI-64 (TI TDA4VM / J721E) · Fichier : bouton-gpio.py · Langage : Python · Usage : Réagir à l'appui sur un bouton poussoir

Un bouton sur le connecteur GPIO déclenche une action à l'appui et au relâchement. Version générique par scrutation de la ligne gpiod avec anti-rebond logiciel de 30 ms.

Matériel requis

Une BeagleBone AI-64 (TI J721E, 2 GHz) sur image Debian officielle, alimentée en 5 V/4 A par USB-C, avec ses deux connecteurs cape P8/P9 en 3,3 V. 1 bouton poussoir (une patte sur la broche GPIO, l'autre sur GND).

Branchement

Bouton entre le GPIO choisi et GND ; activer le pull interne via le flag gpiod si le montage n'a pas de résistance.

Fonctionnement

Le niveau de la broche est surveillé ; un front valide (stabilisé 30 ms) appelle l'action. gpiozero délègue le tout à des callbacks asynchrones. Sous Debian : sudo apt install gpiod python3-gpiod ; gpiodetect identifie les chips (le chip principal est 600000.gpio). Les broches P8/P9 sont nommées dans gpioinfo.

Pour aller plus loin

Compteur d'appuis, double-clic (mesure d'intervalle), ou déclenchement d'un script shell via subprocess.

bouton-gpio.py

#!/usr/bin/env python3
# Bouton poussoir avec python3-gpiod : scrutation + anti-rebond.
import gpiod
from time import sleep

PUCE = "gpiochip1"   # verifier avec gpiodetect
LIGNE = 16           # GPIO du bouton (schema de la carte)

chip = gpiod.Chip(PUCE)
line = chip.get_line(LIGNE)
line.request(consumer="bouton", type=gpiod.LINE_REQ_DIR_IN,
             default_val=gpiod.LINE_REQ_FLAG_NONE)

print("Scrutation du bouton (Ctrl-C pour quitter)")
precedent = line.get_value()
try:
    while True:
        etat = line.get_value()
        if etat != precedent:
            sleep(0.03)                      # anti-rebond 30 ms
            etat = line.get_value()
            if etat != precedent:
                print("Bouton:", "APPUIE" if etat else "relache")
                precedent = etat
        sleep(0.01)
finally:
    line.release()

← Retour à la fiche