Nota
¡Hola! Bienvenido a la Comunidad de Entusiastas de SunFounder para Raspberry Pi, Arduino y ESP32 en Facebook. Sumérgete en el mundo de Raspberry Pi, Arduino y ESP32 junto a otros entusiastas.
¿Por qué unirse?
Soporte Experto: Resuelve problemas postventa y desafíos técnicos con la ayuda de nuestra comunidad y equipo.
Aprende y Comparte: Intercambia consejos y tutoriales para mejorar tus habilidades.
Avances Exclusivos: Accede anticipadamente a anuncios de nuevos productos y adelantos exclusivos.
Descuentos Especiales: Aprovecha descuentos exclusivos en nuestros productos más recientes.
Promociones Festivas y Sorteos: Participa en sorteos y promociones especiales.
👉 ¿Listo para explorar y crear con nosotros? Haz clic en [Aquí] y únete hoy mismo.
1.1.3 Gráfico de Barra LED
Introducción
En este proyecto, iluminaremos secuencialmente las luces del gráfico de barra LED.
Componentes Necesarios
En este proyecto, necesitamos los siguientes componentes.

Diagrama de Conexiones
T-Board Name |
physical |
wiringPi |
BCM |
GPIO18 |
Pin 12 |
1 |
18 |
GPIO23 |
Pin 16 |
4 |
23 |
GPIO24 |
Pin 18 |
5 |
24 |
GPIO25 |
Pin 22 |
6 |
25 |
SPICE0 |
Pin 24 |
10 |
8 |
SPICE1 |
Pin 26 |
11 |
7 |
GPIO12 |
Pin 32 |
26 |
12 |
GPIO16 |
Pin 36 |
27 |
16 |
GPIO20 |
Pin 38 |
28 |
22 |
GPIO21 |
Pin 40 |
29 |
21 |

Procedimientos del Experimento
Paso 1: Construye el circuito.
Nota
Presta atención a la dirección al conectar. Si lo conectas al revés, no se encenderá.

Paso 2: Accede a la carpeta del código.
cd ~/davinci-kit-for-raspberry-pi/python-pi5
Paso 3: Ejecuta el archivo.
sudo python3 1.1.3_LedBarGraph.py
Al ejecutar el código, verás que los LEDs de la barra se encienden y apagan de forma regular.
Advertencia
Si aparece un mensaje de error RuntimeError: Cannot determine SOC peripheral base address
, consulta Si gpiozero no funciona.
Código
Nota
Puedes Modificar/Restablecer/Copiar/Ejecutar/Detener el código a continuación. Pero antes, debes acceder a la ruta del código fuente como davinci-kit-for-raspberry-pi/python-pi5
. Tras modificar el código, puedes ejecutarlo directamente para ver el efecto.
#!/usr/bin/env python3
from gpiozero import LED
from time import sleep
# Definir pines GPIO donde están conectados los LEDs
led_pins = [18, 23, 24, 25, 8, 7, 12, 16, 20, 21]
# Crear objetos LED para cada pin
leds = [LED(pin) for pin in led_pins]
def odd_led_bar_graph():
# Encender secuencialmente los LEDs en posiciones impares (índices 0, 2, 4, etc.)
for i in range(5):
j = i * 2 # Calcular índice impar
leds[j].on() # Encender LED en posición impar
sleep(0.3) # Retraso para efecto visual
leds[j].off() # Apagar LED
def even_led_bar_graph():
# Encender secuencialmente los LEDs en posiciones pares (índices 1, 3, 5, etc.)
for i in range(5):
j = i * 2 + 1 # Calcular índice par
leds[j].on() # Encender LED en posición par
sleep(0.3) # Retraso para efecto visual
leds[j].off() # Apagar LED
def all_led_bar_graph():
# Encender secuencialmente todos los LEDs uno por uno
for led in leds:
led.on() # Encender LED
sleep(0.3) # Retraso para efecto visual
led.off() # Apagar LED
def turn_off_all_leds():
# Apagar todos los LEDs a la vez
for led in leds:
led.off()
try:
# Bucle principal para alternar los patrones de LEDs
while True:
odd_led_bar_graph() # Activar LEDs en posiciones impares
sleep(0.3) # Pausa entre patrones
even_led_bar_graph() # Activar LEDs en posiciones pares
sleep(0.3) # Pausa entre patrones
all_led_bar_graph() # Activar todos los LEDs
sleep(0.3) # Pausa antes de reiniciar
except KeyboardInterrupt:
# Manejar la interrupción (Ctrl+C) de forma segura
turn_off_all_leds() # Apagar todos los LEDs al salir
pass
Explicación del Código
Estas líneas importan las clases y funciones necesarias:
LED
degpiozero
para controlar los LEDs ysleep
detime
para retrasos.#!/usr/bin/env python3 from gpiozero import LED from time import sleep
La lista
led_pins
contiene los números de los pines GPIO.leds
es una lista de objetosLED
, cada uno correspondiente a un pin enled_pins
.# Definir pines GPIO donde están conectados los LEDs led_pins = [18, 23, 24, 25, 8, 7, 12, 16, 20, 21] # Crear objetos LED para cada pin leds = [LED(pin) for pin in led_pins]
Hacer que los LEDs en posiciones impares de la barra LED se enciendan secuencialmente.
def odd_led_bar_graph(): # Encender secuencialmente los LEDs en posiciones impares (índices 0, 2, 4, etc.) for i in range(5): j = i * 2 # Calcular índice impar leds[j].on() # Encender LED en posición impar sleep(0.3) # Retraso para efecto visual leds[j].off() # Apagar LED
Hacer que los LEDs en posiciones pares de la barra LED se enciendan secuencialmente.
def even_led_bar_graph(): # Encender secuencialmente los LEDs en posiciones pares (índices 1, 3, 5, etc.) for i in range(5): j = i * 2 + 1 # Calcular índice par leds[j].on() # Encender LED en posición par sleep(0.3) # Retraso para efecto visual leds[j].off() # Apagar LED
Hacer que todos los LEDs de la barra se enciendan uno a uno.
def all_led_bar_graph(): # Encender secuencialmente todos los LEDs uno por uno for led in leds: led.on() # Encender LED sleep(0.3) # Retraso para efecto visual led.off() # Apagar LED
El bucle
while True
cicla continuamente a través de los patrones de LEDs. El bloqueexcept
maneja unaKeyboardInterrupt
(Ctrl+C), asegurando que todos los LEDs se apaguen al salir.
try: # Bucle principal para alternar los patrones de LEDs while True: odd_led_bar_graph() # Activar LEDs en posiciones impares sleep(0.3) # Pausa entre patrones even_led_bar_graph() # Activar LEDs en posiciones pares sleep(0.3) # Pausa entre patrones all_led_bar_graph() # Activar todos los LEDs sleep(0.3) # Pausa antes de reiniciar except KeyboardInterrupt: # Manejar la interrupción (Ctrl+C) de forma segura turn_off_all_leds() # Apagar todos los LEDs al salir pass