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.

../_images/1.1.3_led_bar_list.png

Es definitivamente conveniente comprar un kit completo, aquí está el enlace:

Nombre

ELEMENTOS EN ESTE KIT

ENLACE

Kit Raphael

337

Raphael Kit

También puedes comprarlos por separado en los enlaces a continuación.

INTRODUCCIÓN DE COMPONENTES

ENLACE DE COMPRA

Placa de Extensión GPIO

COMPRAR

Protoboard

COMPRAR

Cables de Puente

COMPRAR

Resistor

COMPRAR

Gráfico de Barras LED

-

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

../_images/1.1.3_LedBarGraph_schematic.png

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á.

../_images/1.1.3_LedBarGraph_circuit.png

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

  1. Estas líneas importan las clases y funciones necesarias. LED de gpiozero para el control del LED y sleep de time para los retardos.

    #!/usr/bin/env python3
    from gpiozero import LED
    from time import sleep
    
  2. La lista led_pins contiene los números de los pines GPIO. leds es una lista de objetos LED, cada uno correspondiente a un pin en led_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]
    
  3. 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
    
  4. 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
    
  5. 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
    
  6. El bucle while True alterna continuamente entre los patrones de LEDs. El bloque except maneja 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