Nota
Hola, ¡bienvenido a la comunidad de entusiastas de SunFounder Raspberry Pi, Arduino y ESP32 en Facebook! Profundiza en Raspberry Pi, Arduino y ESP32 con otros entusiastas.
¿Por qué unirse?
Soporte de Expertos: 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.
Previsiones Exclusivas: Accede anticipadamente a nuevos anuncios de productos y adelantos exclusivos.
Descuentos Especiales: Disfruta de descuentos exclusivos en nuestros productos más recientes.
Promociones Festivas y Sorteos: Participa en sorteos y promociones festivas.
👉 ¿Listo para explorar y crear con nosotros? ¡Haz clic en [Aquí] y únete hoy!
1.1.6 Matriz de LEDs
Introducción
Como su nombre lo indica, una matriz de LEDs es una matriz compuesta por LEDs. La iluminación y el oscurecimiento de los LEDs forman diferentes caracteres y patrones.
Componentes Necesarios
En este proyecto, necesitamos los siguientes componentes.
Es definitivamente conveniente comprar un kit completo, aquí está el enlace:
Nombre |
ARTÍCULOS EN ESTE KIT |
ENLACE |
|---|---|---|
Kit Raphael |
337 |
También puedes comprarlos por separado en los enlaces a continuación.
INTRODUCCIÓN DE COMPONENTES |
ENLACE DE COMPRA |
|---|---|
Diagrama Esquemático
Nombre T-Board |
Physical |
wiringPi |
BCM |
SPIMOSI |
Pin 19 |
12 |
MOSI |
SPICE0 |
Pin 24 |
10 |
CE0 |
SPISCLK |
Pin 23 |
14 |
SCLK |
Procedimientos Experimentales
Paso 1: Monta el circuito.
Paso 2: Enciende el SPI antes de comenzar el experimento, consulta Configuración de SPI para más detalles.
Paso 3: Instala el módulo Luma.LED_Matrix.
Paso 4: Cambia de directorio.
cd ~/raphael-kit/python/
Paso 5: Ejecuta el script de Python 1.1.6_LedMatrix.py usando el intérprete de Python desde el entorno virtual my_env.
sudo ~/my_env/bin/python3 1.1.6_LedMatrix.py
Después de ejecutar el código, la Matriz de LEDs mostrará un rectángulo durante dos segundos, luego la letra “A” durante dos segundos, y finalmente desplazará el texto «Hello, Nice to meet you!
Código
Nota
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. Después de modificar el código, puedes ejecutarlo directamente para ver el efecto.
from luma.core.interface.serial import spi, noop
from luma.core.render import canvas
from luma.core.virtual import viewport
from luma.led_matrix.device import max7219
from luma.core.legacy import text
from luma.core.legacy.font import proportional, CP437_FONT, LCD_FONT
import time
serial = spi(port=0, device=0, gpio=noop())
device = max7219(serial, rotate=1)
virtual = viewport(device, width=200, height=400)
def displayRectangle():
with canvas(device) as draw:
draw.rectangle(device.bounding_box, outline="white", fill="black")
def displayLetter():
with canvas(device) as draw:
text(draw, (0, 0), "A", fill="white", font=proportional(CP437_FONT))
def scrollToDisplayText():
with canvas(virtual) as draw:
text(draw, (0, 0), "Hello, Nice to meet you!", fill="white", font=proportional(CP437_FONT))
for offset in range(150):
virtual.set_position((offset,0))
time.sleep(0.1)
def main():
while True:
displayRectangle()
time.sleep(2)
displayLetter()
time.sleep(2)
scrollToDisplayText()
def destroy():
pass
if __name__ == '__main__':
try:
main()
except KeyboardInterrupt:
destroy()
Explicación del Código
from luma.core.interface.serial import spi, noop
from luma.core.render import canvas
from luma.core.virtual import viewport
from luma.led_matrix.device import max7219
from luma.core.legacy import text
from luma.core.legacy.font import proportional, CP437_FONT, LCD_FONT
import time
Importa las bibliotecas relevantes, de las cuales luma.core es una biblioteca de componentes que proporciona un lienzo compatible con Pillow para Python 3, así como otras primitivas de dibujo y funciones de renderización de texto que admiten pantallas pequeñas en Raspberry Pi y otras computadoras de placa única.
Puedes visitar https://luma-core.readthedocs.io/en/latest/intro.html para obtener más información.
serial = spi(port=0, device=0, gpio=noop())
device = max7219(serial, rotate=1)
Inicializa la clase luma.led_matrix.device.max7219.
Nota
Si deseas modificar la dirección de visualización de la Matriz de LED, puedes hacerlo modificando el valor de rotate, donde 0 significa sin rotación, 1 significa rotación de 90° en el sentido horario, 2 significa rotación de 180°, y 3 significa rotación de 270° en el sentido horario.
def displayRectangle():
with canvas(device) as draw:
draw.rectangle(device.bounding_box, outline="white", fill="black")
Muestra un rectángulo hueco en el área de borde de la Matriz de LED y modifica el valor de fill a white para mostrar un rectángulo sólido.
def displayLetter():
with canvas(device) as draw:
text(draw, (0, 0), "A", fill="white", font=proportional(CP437_FONT))
Se muestra una «A» en la coordenada (0, 0) de la Matriz de LED, donde CP437_FONT es una fuente adecuada para pantallas de matriz de puntos de 8*8.
virtual = viewport(device, width=200, height=400)
No hay forma de mostrar una línea de texto en una sola matriz de LED de 8x8. Necesitamos usar el método luma.core.virtual.viewport para que el texto pueda desplazarse a través de la ventana virtual.
def scrollToDisplayText():
with canvas(virtual) as draw:
text(draw, (0, 0), "Hello, Nice to meet you!", fill="white", font=proportional(CP437_FONT))
for offset in range(150):
virtual.set_position((offset,0))
time.sleep(0.1)
scrollToDisplayText() implementa «Hello, Nice to meet you!» como un texto desplazable en la Matriz de LED.
Primero, pasamos virtual como un argumento a la función canvas(), para que podamos usar la ventana virtual como la ventana de visualización actual. Luego, la función text() muestra «Hello, Nice to meet you!» en la Matriz de LED.
Usando la función de bucle for, movemos la ventana virtual en la dirección X para que podamos ver el texto «Hello, Nice to meet you!» desplazándose.