Nota
¡Hola, bienvenido a la comunidad de entusiastas de Raspberry Pi, Arduino y ESP32 de SunFounder en Facebook! Profundiza en Raspberry Pi, Arduino y ESP32 con otros entusiastas.
¿Por qué unirse?
Soporte Experto: Resuelve problemas post-venta 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: Obtén acceso anticipado a anuncios de nuevos productos y avances.
Descuentos Especiales: Disfruta de descuentos exclusivos en nuestros productos más nuevos.
Promociones Festivas y Sorteos: Participa en sorteos y promociones de temporada.
👉 ¿Listo para explorar y crear con nosotros? Haz clic en [aquí] y únete hoy mismo!
Lección 28: Módulo LED RGB
En esta lección, aprenderás a controlar un LED RGB utilizando el Raspberry Pi Pico W. Descubrirás cómo configurar la modulación por ancho de pulso (PWM) en diferentes pines GPIO para cada canal de color del LED RGB, lo que te permitirá crear varios colores ajustando la intensidad de los componentes rojo, verde y azul. Este proyecto ofrece a los principiantes una excelente oportunidad para adquirir experiencia práctica con PWM y mezcla de colores en Raspberry Pi Pico W utilizando MicroPython. Además, aprenderás a manejar interrupciones para apagar el LED de manera segura. Esta lección proporciona una forma divertida e interactiva de explorar los conceptos básicos de la electrónica y la programación.
Componentes Requeridos
En este proyecto, necesitamos los siguientes componentes.
Es muy conveniente comprar un kit completo, aquí tienes el enlace:
Nombre |
ARTÍCULOS EN ESTE KIT |
ENLACE |
|---|---|---|
Kit Sensor Universal Maker |
94 |
También puedes comprarlos por separado desde los siguientes enlaces.
Introducción del componente |
Enlace de compra |
|---|---|
Raspberry Pi Pico W |
- |
- |
|
Conexión
Código
from machine import Pin, PWM
from time import sleep
# Inicializar PWM para cada canal de color de un LED RGB
red = PWM(Pin(26)) # Canal rojo en el pin GPIO 26
green = PWM(Pin(27)) # Canal verde en el pin GPIO 27
blue = PWM(Pin(28)) # Canal azul en el pin GPIO 28
# Configurar la frecuencia a 1000 Hz para todos los canales
red.freq(1000)
green.freq(1000)
blue.freq(1000)
# Función para establecer el color del LED RGB
def set_color(r, g, b):
red.duty_u16(r) # Intensidad del rojo
green.duty_u16(g) # Intensidad del verde
blue.duty_u16(b) # Intensidad del azul
try:
while True:
set_color(65535, 0, 0) # Rojo
sleep(1)
set_color(0, 65535, 0) # Verde
sleep(1)
set_color(0, 0, 65535) # Azul
sleep(1)
except KeyboardInterrupt:
set_color(0, 0, 0) # Apagar el LED RGB al interrumpir
Análisis del Código
Importación de Bibliotecas
El módulo
machinese importa para utilizar las clases PWM y Pin. El módulotimese importa para usar la funciónsleepy crear retrasos.from machine import Pin, PWM from time import sleep
Inicialización de PWM para el LED RGB
El LED RGB tiene tres canales (Rojo, Verde, Azul), cada uno controlado por una señal PWM separada. Las señales PWM están conectadas a los pines GPIO 26, 27 y 28.
red = PWM(Pin(26)) # Canal rojo en el pin GPIO 26 green = PWM(Pin(27)) # Canal verde en el pin GPIO 27 blue = PWM(Pin(28)) # Canal azul en el pin GPIO 28
Configuración de la Frecuencia para las Señales PWM
La frecuencia de las señales PWM se establece en 1000 Hz para los tres canales.
red.freq(1000) green.freq(1000) blue.freq(1000)
Definición de la Función set_color
Esta función establece el color del LED RGB. El método
duty_u16se usa para ajustar el ciclo de trabajo de cada canal de color, lo que determina la intensidad de ese color.def set_color(r, g, b): red.duty_u16(r) green.duty_u16(g) blue.duty_u16(b)
Bucle Principal del Programa
Se utiliza un bucle infinito para cambiar el color del LED. La función
set_colorse llama con diferentes valores para mostrar los colores rojo, verde y azul. Cada color se muestra durante 1 segundo.try: while True: set_color(65535, 0, 0) # Rojo sleep(1) set_color(0, 65535, 0) # Verde sleep(1) set_color(0, 0, 65535) # Azul sleep(1) except KeyboardInterrupt: set_color(0, 0, 0) # Apagar el LED RGB al interrumpir