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