🛠 Lire un bouton poussoir en Python avec python3-libgpiod

Radxa ROCK 3B (Rockchip RK3568) · debutant · Schéma : IMG-radxa-rock-3b-debutant-2-rock3b-bouton-python.svg — bouton poussoir avec résistance de pull câblé entre une broche GPIO et la masse sur la Radxa ROCK 3B, fenêtre Python à côté de la carte

Objectifs

Câbler un bouton poussoir sur le connecteur 40 broches de la ROCK 3B et afficher chaque appui dans la console avec python3-libgpiod, en utilisant les événements d'interruption (rising edge) plutôt qu'un sondage en boucle. C'est le premier script Python de la série : il sert de base aux tutoriels capteurs et IoT.

Matériel

Code complet

#!/usr/bin/env python3
"""Bouton sur le connecteur 40 broches — affiche les appuis (ROCK 3B).
 Résolvez CHIP/LINE avec `gpiofind PIN_11` sur VOTRE image : les numéros
 diffèrent entre noyau constructeur (Radxa) et noyau mainline >= 6.11."""
from gpiod import Chip, LineRequest

CHIP, LINE = "gpiochip3", 1   # exemple GPIO3_A1 derrière PIN_11 — CONFIRMER

with Chip(CHIP) as chip:
    req = chip.request_lines(
        consumer="rock3b-demo",
        config={LINE: LineRequest.REQUEST_INPUT},
    )
    print("appui attendu (front montant), Ctrl-C pour quitter")
    while True:
        for ev in req.event_wait(timeout_ms=None):
            e = req.event_get
            if e and e.event_type == 1 and e.line == LINE:  # RISING_EDGE
                print("bouton pressé")

Vérification attendue

sudo python3 bouton.py démarre sans erreur ; chaque appui (front montant) affiche « bouton pressé ». Ctrl-C libère proprement la ligne. Avec pull-up matériel + bouton vers la masse, le repos est 1 et l'appui 0 : si rien ne s'affiche, inversez bouton/câble ou testez sudo gpioget $(gpiofind PIN_11) au multimètre logique.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels