Nota

Ciao, benvenuto nella SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Community su Facebook! Approfondisci le tue conoscenze su Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati.

Perché unirti a noi?

  • Supporto esperto: Risolvi problemi post-vendita e sfide tecniche con l’aiuto della nostra comunità e del nostro team.

  • Impara e condividi: Scambia suggerimenti e tutorial per migliorare le tue competenze.

  • Anteprime esclusive: Ottieni accesso anticipato agli annunci di nuovi prodotti e anteprime esclusive.

  • Sconti speciali: Approfitta di sconti esclusivi sui nostri prodotti più recenti.

  • Promozioni festive e concorsi: Partecipa a concorsi e promozioni durante le festività.

👉 Sei pronto a esplorare e creare con noi? Clicca su [Qui] e unisciti oggi stesso!

1.1.6 Matrice a Punti LED

Introduzione

Come suggerisce il nome, una matrice a punti LED è una matrice composta da LED. L’accensione e lo spegnimento dei LED formano diversi caratteri e modelli.

Componenti Necessari

In questo progetto, abbiamo bisogno dei seguenti componenti.

../_images/list_dot.png

È sicuramente comodo acquistare un kit completo, ecco il link:

Nome

ARTICOLI IN QUESTO KIT

LINK

Kit Raphael

337

Raphael Kit

Puoi anche acquistarli separatamente dai link qui sotto.

INTRODUZIONE AI COMPONENTI

LINK PER L’ACQUISTO

Scheda di estensione GPIO

ACQUISTA

Breadboard

ACQUISTA

Cavi Jumper

ACQUISTA

Modulo Matrice LED

ACQUISTA

Schema Elettrico

T-Board Name

physical

wiringPi

BCM

SPIMOSI

Pin 19

12

MOSI

SPICE0

pin 24

10

CE0

SPISCLK

Pin 23

14

SCLK

../_images/schematic_dot.png

Procedure Sperimentali

Passo 1: Costruisci il circuito.

../_images/1.1.6fritzing.png

Passo 2: Attivare SPI prima di iniziare l’esperimento, vedere Configurazione SPI per i dettagli.

Passo 3: Installare il modulo Luma.LED_Matrix.

Passo 4: Cambia directory.

cd ~/raphael-kit/python-pi5

Passo 5: Eseguire lo script Python 1.1.6_LedMatrix.py utilizzando l’interprete Python dell’ambiente virtuale my_env.

sudo ~/my_env/bin/python3 1.1.6_LedMatrix.py

Dopo aver eseguito il codice, la Matrice LED mostrerà un rettangolo per due secondi, poi la lettera “A” per due secondi, e infine scorrerà per visualizzare il testo «Hello, Nice to meet you!».

Codice

Nota

Puoi Modificare/Reimpostare/Copiare/Eseguire/Interrompere il codice qui sotto. Ma prima devi accedere al percorso del codice come raphael-kit/python. Dopo aver modificato il codice, puoi eseguirlo direttamente per vedere l’effetto.

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()

Spiegazione del Codice

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 le librerie rilevanti, tra cui luma.core, una libreria compatibile con Pillow per Python 3 che fornisce un canvas e altre funzionalità di disegno per display piccoli su Raspberry Pi e altri computer a scheda singola. Puoi visitare https://luma-core.readthedocs.io/en/latest/intro.html per saperne di più.

serial = spi(port=0, device=0, gpio=noop())
device = max7219(serial, rotate=1)

Inizializza la classe luma.led_matrix.device.max7219.

Nota

Se vuoi modificare la direzione di visualizzazione della Matrice LED, puoi farlo modificando il valore di rotate, dove 0 significa nessuna rotazione, 1 significa rotazione di 90° in senso orario, 2 significa rotazione di 180° e 3 significa rotazione di 270° in senso orario.

def displayRectangle():
    with canvas(device) as draw:
        draw.rectangle(device.bounding_box, outline="white", fill="black")

Visualizza un rettangolo vuoto nell’area dei bordi della Matrice LED e modifica il valore di fill in white per visualizzare un rettangolo pieno.

def displayLetter():
    with canvas(device) as draw:
        text(draw, (0, 0), "A", fill="white", font=proportional(CP437_FONT))

Una «A» viene visualizzata alle coordinate (0, 0) della Matrice LED, dove CP437_FONT è un font adatto per schermi a matrice di punti 8x8.

virtual = viewport(device, width=200, height=400)

Non è possibile visualizzare una linea di testo su una singola matrice LED 8x8. Dobbiamo utilizzare il metodo luma.core.virtual.viewport per far scorrere il testo attraverso la finestra virtuale.

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!» come testo scorrevole sulla Matrice LED.

Prima, passiamo virtual come argomento alla funzione canvas(), così possiamo usare la finestra virtuale come finestra di visualizzazione corrente. Poi la funzione text() visualizza «Hello, Nice to meet you!» sulla Matrice LED.

Utilizzando la funzione for loop, spostiamo la finestra virtuale nella direzione X in modo da poter vedere il testo «Hello, Nice to meet you!» scorrere.

Immagine del Fenomeno

../_images/1.1.6led_dot_matrix.JPG