.. note:: 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 [|link_sf_facebook|] y únete hoy mismo. .. _1.1.3_py_pi5: 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. .. image:: ../python_pi5/img/1.1.3_led_bar_list.png Es definitivamente conveniente comprar un kit completo, aquí está el enlace: .. list-table:: :widths: 20 20 20 :header-rows: 1 * - Nombre - ELEMENTOS EN ESTE KIT - ENLACE * - Kit Raphael - 337 - |link_Raphael_kit| También puedes comprarlos por separado en los enlaces a continuación. .. list-table:: :widths: 30 20 :header-rows: 1 * - INTRODUCCIÓN DE COMPONENTES - ENLACE DE COMPRA * - :ref:`cpn_gpio_board` - |link_gpio_board_buy| * - :ref:`cpn_breadboard` - |link_breadboard_buy| * - :ref:`cpn_wires` - |link_wires_buy| * - :ref:`cpn_resistor` - |link_resistor_buy| * - :ref:`cpn_bar_graph` - \- 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 ============== ========== ======== === .. image:: ../python_pi5/img/1.1.3_LedBarGraph_schematic.png Procedimientos Experimentales --------------------------------- **Paso 1**: Construye el circuito. .. note:: Presta atención a la dirección al conectar. Si lo conectas al revés, no se encenderá. .. image:: ../python_pi5/img/1.1.3_LedBarGraph_circuit.png **Paso 2:** Ve a la carpeta del código. .. raw:: html .. code-block:: cd ~/raphael-kit/python-pi5 **Paso 3**: Ejecuta el archivo ejecutable. .. raw:: html .. code-block:: 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. .. warning:: Si recibe el mensaje de error ``RuntimeError: Cannot determine SOC peripheral base address``, consulte :ref:`faq_soc` **Código** .. note:: 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. .. raw:: html .. code-block:: python #!/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. ``LED`` de ``gpiozero`` para el control del LED y ``sleep`` de ``time`` para los retardos. .. code-block:: python #!/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 objetos ``LED``, cada uno correspondiente a un pin en ``led_pins``. .. code-block:: python # 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. .. code-block:: python 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. .. code-block:: python 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. .. code-block:: python 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 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. .. code-block:: python 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