15. LED RGB WS2812
15. LED RGB WS2812¶
Resumen¶
El LED RGB WS2812 es un LED RGB de control externo que integra un circuito de control y un circuito emisor de luz. Utiliza un sistema de comunicación por código de retorno a cero de una sola línea y admite 256 niveles de gris para mostrar una gama completa de colores. El chip integrado en cada píxel estabiliza eficazmente la salida de color.Se utiliza ampliamente en iluminación, pantallas y decoración.
Esquema¶
Coding Box dispone de 12 WS2812 colocados en forma circular y conectados según el siguiente esquema:
Según el esquema, el WS2812 se conecta y transmite datos a través de un solo cable mediante el método de comunicación denominado "código de retorno a cero en bus único" (single NZR). Los datos se introducen en serie a través del pin DIN y cada píxel recibe y procesa 24 bits de datos (canales de color rojo, verde y azul, con 8 bits cada uno).
Para obtener información detallada sobre el modo de transmisión, consulta: LED RGB direccionable, donde podrás encontrar las especificaciones del WS2812.
Prueba del código¶
Abre Thonny. Conecta la placa al ordenador y selecciona el puerto al que está conectada Coding Box. En "Archivos", abre el programa A15MP.py y haz clic en el botón
.
El programa es:
'''
* Archivo : A15MP
* Versión Thonny : Thonny 5.0.0
'''
#Importa módulos necesarios: Pin, neopiexl y time.
from machine import Pin
import neopixel
import time
pin = Pin(16, Pin.OUT) #define el pin de control SK6812 como IO16
num_pixels = 12 #Establece el número de LEDs SK6812 en 12
#inicializa SK6812
np = neopixel.NeoPixel(pin, num_pixels)
rojo = [255,0,0] #establece el color en rojo
while True:
np[10] = rojo #el primer LED se ilumina en rojo. 12 LEDS: números del 0 al 11
np.write() #muestra el color en el LED
Resultado de la prueba¶
Haz clic en "Ejecutar script actual"
para ejecutar el código. Tras cargar el código, el primer LED del módulo WS2812 se iluminará en rojo.
Pulsa "Ctrl+C" o haz clic en "Detener/Reiniciar el intérprete"
para detener la ejecución.
Ampliación¶
Abre Thonny. Conecta la placa al ordenador y selecciona el puerto al que está conectada Coding Box. En "Archivos", abre el programa A15_amp_MP.py y haz clic en el botón
.
El programa es:
'''
* Archivo : A15_amp_MP.py
* Versión Thonny : Thonny 5.0.0
------------------------------------------
~ Programa para iluminar en rojo, verde y azul los LEDs del anillo de manera progresiva
~ Después del color azul se apagan todos también de manera progesiva y permanecen así 3s
color = [rojo,verde,azul]
color almacena el valor de los colores.
rojo,verde,azul coresponde a valores RGB en el rango 0-255
rojo [255,0,0]
establece el color que deseas mostrar según la tabla de colores RGB
'''
#importa módulos necesarios: Pin, neopiexl y time.
from machine import Pin
import neopixel
import time
pin = Pin(16, Pin.OUT) #define el pin de control SK6812 como IO16
num_pixels = 12 #establece el número de LEDs SK6812 en 12
#inicializa SK6812
np = neopixel.NeoPixel(pin, num_pixels)
rojo = [255,0,0] #rojo
verde = [0,255,0] #verde
azul = [0,0,255] #azul
while True:
for i in range(num_pixels): #bucle for: i varia de 0 a 11
np[i] = rojo #mostrar rojo en i
np.write() #muestra el color
time.sleep_ms(50) #retardo de 50ms para cambiar el color gradualmente
time.sleep(1) #Pausa de 1 segundo despues de mostrar
for i in range(num_pixels):
np[i] = verde #mostrar verde en i
np.write()
time.sleep_ms(50)
time.sleep(1)
for i in range(num_pixels):
np[i] = azul #azul
np.write()
time.sleep_ms(50)
time.sleep(1)
for i in range(num_pixels):
np[i] = [0,0,0] #negro o apagar LEDs
np.write()
time.sleep_ms(50)
time.sleep(3) #permanecen apagados 3 segundos
