🛠 Bouton et LED avec Adafruit_BBIO, la bibliothèque historique
Objetivos
Controlar una salida y leer una entrada en los conectores de pines con Adafruit_BBIO, la biblioteca Python histórica del ecosistema BeagleBone: miles de tutoriales de BBB la utilizan y te la encontrarás. Aprenderás de paso la correspondencia entre pin y línea GPIO (P8_11 = gpio1_13, es decir, la línea 45 del único gpiochip0 del AM335x) y la lectura equivalente con libgpiod moderno.
Material
- 1 BeagleBone Black + fuente de alimentación
- 1 protoboard, cables, 1 botón pulsador, 1 LED + 1 resistencia de 330 Ω
- Cableado: botón entre P9_11 y GND (pull-up interno); LED + 330 Ω entre P8_11 y GND
- Recordatorio: toda la lógica funciona a 3,3 V — aplicar 5 V a un pin daña la placa.
Código completo
#!/usr/bin/env python3
# pip3 install Adafruit_BBIO (images communautaires Debian)
import Adafruit_BBIO.GPIO as GPIO
LED, BTN = "P8_11", "P9_11"
GPIO.setup(LED, GPIO.OUT)
GPIO.setup(BTN, GPIO.IN, pull_up_down=GPIO.PUD_UP) # bouton vers GND
try:
while True:
# actif-à-l'état-bas : appuyé == LOW
GPIO.output(LED, GPIO.input(BTN) == GPIO.LOW)
finally:
GPIO.cleanup # libère les broches, sinon elles restent réclamées
# Équivalent moderne sans Python (libgpiod, images récentes) :
# P8_11 = gpio1_13 = ligne 45 du gpiochip0 ; les noms P8_xx viennent du DT
gpioset -t 200m gpiochip0 P8_11=1 # impulse 200 ms
gpioget gpiochip0 P9_11 # état du bouton
gpiodetect ; gpioinfo gpiochip0 | grep -E "P8_11|P9_11"
Verificación esperada
LED apagada en reposo, encendida al pulsar el botón. gpioinfo muestra los dos pines reservados por el script durante su ejecución, y liberados tras GPIO.cleanup. Con gpioset, se observa que la LED se enciende durante 200 ms.
Errores frecuentes
- Adafruit_BBIO es una herencia legacy: en las imágenes Debian muy recientes puede estar ausente o ser inestable — prefiere libgpiod para proyectos nuevos, pero aprende a leer el código antiguo.
- Olvidar PUD_UP: sin pull-up, la entrada queda flotante y la LED parpadea por interferencias.
- Invertir la lógica: botón cableado hacia GND = pulsado da LOW.
- Omitir GPIO.cleanup en un script que se relanza: el pin queda ocupado y la segunda ejecución falla.
- Confundir la numeración: P8_11 y P9_11 son pines de conectores DIFERENTES; P9_11 también se denomina uart4_rxd en el device tree.
- Olvidar la resistencia del LED: la LED o el pin se dañan (respetar los 3,3 V y la corriente del pin).
Otros tutoriales para esta placa
- Premier boot de la BeagleBone Black avec un seul câble mini-USB
- Comprendre les triggers en pilotant les 4 LED utilisateur
- Lire l'ADC 12 bits sans griller le SoC : la règle des 1,8 V
- Ajouter une horloge temps réel sur le bus I2C des capes
- Micro-HDMI : exploiter les limites d'affichage de la BBB
- Capes historiques : capemanager, EEPROM d'identification et pièges des broches
Ejemplos de código para esta placa
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash