🛠 Bouton poussoir et retour dans la console

Raspberry Pi 3 Model B+ (2018) — Ficha de placa · debutant · Schéma : IMG-model-3b-plus-debutant-2-model3bp-bouton-console.svg — Bouton entre GPIO27 (broche 13) et GND (broche 9), résistance de pull-up interne, terminal affichant l'état

Objetivos

Leer una entrada digital: un botón pulsador conectado a GND con pull-up interno, y mostrar el estado en la consola en cada pulsación. Aprenderás la lógica inversa (pulsación = nivel bajo), el rebote mecánico (bounce) y el polling simple en shell.

Material

Código completo

Cableado: pin 13 (GPIO27) → una pata del botón; la otra pata → pin 9 (GND). El pull-up interno mantiene la línea en 1 en reposo.

#!/usr/bin/env bash
# bouton.sh — affiche un message à chaque appui (GPIO27, broche 13)
# Active le pull-up interne puis boucle sur la lecture de la ligne.
sudo gpioset --quiet --hold-period 0ms gpiochip0 27=0 2>/dev/null || true

echo "Appuyez sur le bouton (Ctrl-C pour quitter)..."
while true; do
    # gpiodetect/gpiget : lecture de la ligne ; 0 = bouton pressé (logique inversée)
    etat=$(sudo gpiget gpiochip0 27 2>/dev/null || echo 1)
    if [ "$etat" = "0" ]; then
        echo "Bouton pressé à $(date +%T)"
        sleep 0.3        # anti-rebond logiciel grossier
        while [ "$(sudo gpiget gpiochip0 27 2>/dev/null || echo 1)" = "0" ]; do
            sleep 0.05   # attend le relâchement
        done
    fi
    sleep 0.02
done

Verificación esperada

Cada pulsación muestra una línea «Botón pulsado» con la hora, una sola vez por pulsación a pesar del rebote mecánico. En reposo, la línea se lee como 1 gracias al pull-up interno; al pulsar, cae a 0.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales