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.

../_images/1.1.3_led_bar_list.png

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

../_images/1.1.3_LedBarGraph_schematic.png

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

../_images/1.1.3_LedBarGraph_circuit.png

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

  1. Estas líneas importan las clases y funciones necesarias: LED de gpiozero para controlar los LEDs y sleep de time para retrasos.

    #!/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.

    # 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]
    
  3. 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
    
  4. 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
    
  5. 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
    
  6. El bucle while True cicla continuamente a través de los patrones de LEDs. El bloque except maneja una KeyboardInterrupt (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