Nota
Hola, ¡bienvenido a la Comunidad de Entusiastas de SunFounder Raspberry Pi, Arduino y ESP32 en Facebook! Sumérgete en Raspberry Pi, Arduino y ESP32 con 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.
Previsualizaciones exclusivas: Obtén acceso anticipado a nuevos anuncios de productos y adelantos.
Descuentos especiales: Disfruta de descuentos exclusivos en nuestros productos más nuevos.
Promociones y sorteos festivos: Participa en sorteos y promociones de temporada.
👉 ¿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 en el gráfico de barra LED.
Componentes Requeridos
En este proyecto, necesitamos los siguientes componentes.
Es definitivamente conveniente comprar un kit completo, aquí está el enlace:
Nombre |
ELEMENTOS EN ESTE KIT |
ENLACE |
|---|---|---|
Kit Raphael |
337 |
También puedes comprarlos por separado en los enlaces a continuación.
INTRODUCCIÓN DE COMPONENTES |
ENLACE DE COMPRA |
|---|---|
- |
Diagrama Esquemático
Nombre T-Board |
Pin físico |
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 Experimentales
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: Ve a la carpeta del código.
cd ~/raphael-kit/python-pi5
Paso 3: Ejecuta el archivo ejecutable.
sudo python3 1.1.3_LedBarGraph_zero.py
Después de ejecutar el código, verás que los LED en la barra LED se encienden y apagan regularmente.
Advertencia
Si recibe el mensaje de error RuntimeError: Cannot determine SOC peripheral base address, consulte Si «gpiozero» no funciona.
Código
Nota
Puedes Modificar/Restablecer/Copiar/Ejecutar/Detener el código a continuación. Pero antes de eso, necesitas ir a la ruta del código fuente como raphael-kit/python-pi5. Después de modificar el código, puedes ejecutarlo directamente para ver el efecto.
#!/usr/bin/env python3
from gpiozero import LED
from time import sleep
# Define GPIO pins where LEDs are connected
led_pins = [18, 23, 24, 25, 8, 7, 12, 16, 20, 21]
# Create LED objects for each pin
leds = [LED(pin) for pin in led_pins]
def odd_led_bar_graph():
# Sequentially light up odd-numbered LEDs (index 0, 2, 4, etc.)
for i in range(5):
j = i * 2 # Calculate odd index
leds[j].on() # Turn on odd-numbered LED
sleep(0.3) # Delay for visual effect
leds[j].off() # Turn off LED
def even_led_bar_graph():
# Sequentially light up even-numbered LEDs (index 1, 3, 5, etc.)
for i in range(5):
j = i * 2 + 1 # Calculate even index
leds[j].on() # Turn on even-numbered LED
sleep(0.3) # Delay for visual effect
leds[j].off() # Turn off LED
def all_led_bar_graph():
# Sequentially light up all LEDs one by one
for led in leds:
led.on() # Turn on LED
sleep(0.3) # Delay for visual effect
led.off() # Turn off LED
def turn_off_all_leds():
# Turn off all LEDs at once
for led in leds:
led.off()
try:
# Main loop to cycle through LED patterns
while True:
odd_led_bar_graph() # Activate odd-numbered LEDs
sleep(0.3) # Pause between patterns
even_led_bar_graph() # Activate even-numbered LEDs
sleep(0.3) # Pause between patterns
all_led_bar_graph() # Activate all LEDs
sleep(0.3) # Pause before restarting
except KeyboardInterrupt:
# Handle interruption (Ctrl+C) gracefully
turn_off_all_leds() # Ensure all LEDs are turned off on exit
pass
Explicación del Código
Estas líneas importan las clases y funciones necesarias.
LEDdegpiozeropara el control del LED ysleepdetimepara los retardos.#!/usr/bin/env python3 from gpiozero import LED from time import sleep
La lista
led_pinscontiene los números de los pines GPIO.ledses una lista de objetosLED, cada uno correspondiente a un pin enled_pins.# Define GPIO pins where LEDs are connected led_pins = [18, 23, 24, 25, 8, 7, 12, 16, 20, 21] # Create LED objects for each pin leds = [LED(pin) for pin in led_pins]
Permitir que el LED en los dígitos impares de la barra de LEDs se encienda en secuencia.
def odd_led_bar_graph(): # Sequentially light up odd-numbered LEDs (index 0, 2, 4, etc.) for i in range(5): j = i * 2 # Calculate odd index leds[j].on() # Turn on odd-numbered LED sleep(0.3) # Delay for visual effect leds[j].off() # Turn off LED
Permitir que el LED en los dígitos pares de la barra de LEDs se encienda en secuencia.
def even_led_bar_graph(): # Sequentially light up even-numbered LEDs (index 1, 3, 5, etc.) for i in range(5): j = i * 2 + 1 # Calculate even index leds[j].on() # Turn on even-numbered LED sleep(0.3) # Delay for visual effect leds[j].off() # Turn off LED
Permitir que los LEDs en la barra de LEDs se enciendan uno por uno.
def all_led_bar_graph(): # Sequentially light up all LEDs one by one for led in leds: led.on() # Turn on LED sleep(0.3) # Delay for visual effect led.off() # Turn off LED
El bucle
while Truealterna continuamente entre los patrones de LEDs. El bloqueexceptmaneja una interrupción de teclado (Ctrl+C), asegurando que todos los LEDs se apaguen al salir.try: # Bucle principal para alternar entre los patrones de LEDs while True: odd_led_bar_graph() # Activar LEDs de número impar sleep(0.3) # Pausa entre patrones even_led_bar_graph() # Activar LEDs de número par sleep(0.3) # Pausa entre patrones all_led_bar_graph() # Activar todos los LEDs sleep(0.3) # Pausa antes de reiniciar except KeyboardInterrupt: # Manejar interrupción (Ctrl+C) de manera segura turn_off_all_leds() # Asegurar que todos los LEDs estén apagados al salir pass