🛠 Bouton poussoir et retour sur la console
Objetivos
- Leer un estado lógico (0/1) en un pin GPIO con un botón pulsador.
- Utilizar la resistencia de pull-up interna en lugar de una resistencia externa.
- Mostrar el estado del botón en la consola — útil en el Model A, cuya única consola puede ser la UART de los pines GPIO.
Material
- Raspberry Pi Model A con Raspberry Pi OS legacy de 32 bits.
- 1 botón pulsador (no se necesita ninguna resistencia externa).
- Consola serie USB-TTL en GPIO14/15 (enable_uart=1 en config.txt) o teclado USB mediante un hub.
Código completo
# Lecture événementielle avec gpiomon (libgpiod)
sudo gpiomon --rising-edge --num-events=0 gpiochip0 4
# Version Python avec la bibliothèque héritée RPi.GPIO
python3 - <<'PY'
import RPi.GPIO as GPIO, time
GPIO.setmode(GPIO.BCM)
GPIO.setup(4, GPIO.IN, pull_up_down=GPIO.PUD_UP)
try:
while True:
print("bouton:", "APPUYE" if not GPIO.input(4) else "libre", flush=True)
time.sleep(0.05)
finally:
GPIO.cleanup
PY
Verificación esperada
Cada pulsación muestra un evento rise (gpiomon) o « botón: PULSADO » seguido de « libre » al soltarlo. El montaje es activo-bajo: en reposo, la entrada está tirada a 3,3 V por la resistencia de pull-up interna.
Errores frecuentes
- Olvidar
pull_up_down=GPIO.PUD_UP: la entrada queda flotante y muestra estados aleatorios. - Equivocarse de pin: el pin físico 7 = GPIO4, no GPIO7.
- Conectar el botón entre GPIO y 3,3 V suponiendo un pull-down: no existe por defecto.
gpiomonsinsudoen las imágenes legacy: permiso denegado en /dev/gpiochip0.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
led_blink.pyPythonbutton_led.pyPythonservo_sweep.pyPythondht_temp.pyPythonoled_i2c.pyPythonmcp3008_read.pyPython