Nota

¡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 [Aquí] y únete hoy.

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.

../_images/1.1.2_rgb_led_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

LED RGB

COMPRAR

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

../_images/1.1.2_rgb_led_schematic.png

Procedimientos experimentales

Paso 1: Monta el circuito.

../_images/1.1.2_rgbLed_circuit.png

Paso 2: Abre el archivo de código.

cd ~/raphael-kit/python-pi5

Paso 3: Ejecuta el código.

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.

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 de origen del código 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 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

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

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

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

    COLORS = [(1, 0, 0), (0, 1, 0), (0, 0, 1), (1, 1, 0), (1, 0, 1), (0, 1, 1)]
    
  4. Un LED RGB se inicializa con sus componentes rojo, verde y azul conectados a los pines GPIO 17, 18 y 27, respectivamente.

    # 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)
    
  5. 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.

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

    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