.. note:: ¡Hola! Bienvenido a la comunidad de entusiastas de SunFounder para Raspberry Pi, Arduino y ESP32 en Facebook. Sumérgete más 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. - **Aprender y compartir**: Intercambia consejos y tutoriales para mejorar tus habilidades. - **Preestrenos exclusivos**: Obtén acceso anticipado a nuevos anuncios de productos y avances. - **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. .. _1.1.2_py_pi5: 1.1.2 LED RGB ====================== Introducción ----------------- En este proyecto, controlaremos un LED RGB para que parpadee en varios colores. Componentes requeridos --------------------------------- En este proyecto, necesitamos los siguientes componentes. .. image:: ../python_pi5/img/1.1.2_rgb_led_list.png :align: center 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_rgb_led` - |link_rgb_led_buy| Diagrama esquemático ----------------------- Después de conectar los pines de R, G y B a una resistencia limitadora de corriente, conéctalos a los GPIO17, GPIO18 y GPIO27 respectivamente. El pin más largo (GND) del LED se conecta al GND de la Raspberry Pi. Cuando los tres pines reciben diferentes valores PWM, el LED RGB mostrará diferentes colores. ============== ======== === Nombre T-Board Física BCM GPIO17 Pin 11 17 GPIO18 Pin 12 18 GPIO27 Pin 13 27 ============== ======== === .. image:: ../python_pi5/img/1.1.2_rgb_led_schematic.png Procedimientos experimentales --------------------------------- **Paso 1:** Monta el circuito. .. image:: ../python_pi5/img/1.1.2_rgbLed_circuit.png **Paso 2:** Abre el archivo de código. .. raw:: html .. code-block:: cd ~/raphael-kit/python-pi5 **Paso 3:** Ejecuta el código. .. raw:: html .. code-block:: sudo python3 1.1.2_rgbLed_zero.py Después de ejecutar el código, verás que el LED RGB muestra rojo, verde, azul, amarillo, rosa y cian. .. 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 de origen del código 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 RGBLED from time import sleep # Define a list of colors for the RGB LED in RGB format (Red, Green, Blue). # Each color component ranges from 0 (off) to 1 (full intensity). COLORS = [(1, 0, 0), (0, 1, 0), (0, 0, 1), (1, 1, 0), (1, 0, 1), (0, 1, 1)] # Initialize an RGB LED. Connect the red component to GPIO 17, green to GPIO 18, and blue to GPIO 27. rgb_led = RGBLED(red=17, green=18, blue=27) try: # Continuously cycle through the defined colors. while True: for color in COLORS: # Set the RGB LED to the current color. rgb_led.color = color # Output the current color to the console. print(f"Color set to: {color}") # Wait for 1 second before switching to the next color. sleep(1) except KeyboardInterrupt: # Handle a KeyboardInterrupt (Ctrl+C) to exit the loop gracefully. # GPIO cleanup will be managed automatically by GPIO Zero on script termination. pass **Explicación del Código** #. Esto importa la clase ``RGBLED`` de la biblioteca ``gpiozero`` para controlar un LED RGB, y la biblioteca ``time`` para implementar retardos en el código. .. code-block:: python #!/usr/bin/env python3 from gpiozero import RGBLED from time import sleep # Define a list of colors for the RGB LED in RGB format (Red, Green, Blue). # Each color component ranges from 0 (off) to 1 (full intensity). #. La lista ``COLORES`` contiene tuplas que representan diferentes colores en formato RGB. Al asignar diferentes valores de Modulación por Ancho de Pulso (PWM) a cada uno de los pines R, G y B a través del atributo ``rgb_led.color``, el LED puede producir una variedad de colores. Los valores PWM varían de 0 a 1, donde 0 representa ninguna intensidad (apagado) y 1 representa la intensidad total para cada componente de color. #. Por ejemplo, configurando ``rgb_led.color = (1, 0, 0)`` se enciende el LED en rojo, ya que establece la intensidad total para el componente rojo mientras mantiene apagados el verde y el azul. De manera similar, combinaciones variadas de estos valores resultan en diferentes colores. Esta técnica de mezcla de colores a través de PWM permite la creación de una amplia gama de colores en el LED RGB. .. code-block:: python COLORS = [(1, 0, 0), (0, 1, 0), (0, 0, 1), (1, 1, 0), (1, 0, 1), (0, 1, 1)] #. Un LED RGB se inicializa con sus componentes rojo, verde y azul conectados a los pines GPIO 17, 18 y 27, respectivamente. .. code-block:: python # Initialize an RGB LED. Connect the red component to GPIO 17, green to GPIO 18, and blue to GPIO 27. rgb_led = RGBLED(red=17, green=18, blue=27) #. El bucle ``while True:`` cicla continuamente a través de los colores definidos en ``COLORES``. Para cada color, ``rgb_led.color = color`` establece el LED en ese color, y ``sleep(1)`` pausa durante 1 segundo. .. code-block:: python try: # Continuously cycle through the defined colors. while True: for color in COLORS: # Set the RGB LED to the current color. rgb_led.color = color # Output the current color to the console. print(f"Color set to: {color}") # Wait for 1 second before switching to the next color. sleep(1) #. Esta sección maneja de manera ordenada una ``KeyboardInterrupt`` (como presionar Ctrl+C). La declaración ``pass`` se utiliza como un marcador de posición para indicar que no se toma ninguna acción específica en caso de interrupción, ya que GPIO Zero maneja la limpieza de los GPIO automáticamente. .. code-block:: python except KeyboardInterrupt: # Handle a KeyboardInterrupt (Ctrl+C) to exit the loop gracefully. # GPIO cleanup will be managed automatically by GPIO Zero on script termination. pass