.. note:: 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 [|link_sf_facebook|] e unisciti oggi stesso! .. _1.1.6_py_pi5: 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. .. image:: ../img/list_dot.png È sicuramente comodo acquistare un kit completo, ecco il link: .. list-table:: :widths: 20 20 20 :header-rows: 1 * - Nome - ARTICOLI IN QUESTO KIT - LINK * - Kit Raphael - 337 - |link_Raphael_kit| Puoi anche acquistarli separatamente dai link qui sotto. .. list-table:: :widths: 30 20 :header-rows: 1 * - INTRODUZIONE AI COMPONENTI - LINK PER L'ACQUISTO * - :ref:`cpn_gpio_extension_board` - |link_gpio_board_buy| * - :ref:`cpn_breadboard` - |link_breadboard_buy| * - :ref:`cpn_wires` - |link_wires_buy| * - :ref:`cpn_dot_matrix` - |link_led_matrix_buy| Schema Elettrico ----------------------- ============ ======== ======== ==== T-Board Name physical wiringPi BCM SPIMOSI Pin 19 12 MOSI SPICE0 pin 24 10 CE0 SPISCLK Pin 23 14 SCLK ============ ======== ======== ==== .. image:: ../img/schematic_dot.png Procedure Sperimentali ---------------------------- **Passo 1:** Costruisci il circuito. .. image:: ../img/1.1.6fritzing.png **Passo 2**: Attivare SPI prima di iniziare l'esperimento, vedere :ref:`spi_configuration` per i dettagli. **Passo 3**: Installare il modulo :ref:`install_luma_led_matrix`. **Passo 4:** Cambia directory. .. raw:: html .. code-block:: 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``. .. raw:: html .. code-block:: 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** .. note:: 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. .. raw:: html .. code-block:: python 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** .. code-block:: python 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ù. .. code-block:: python serial = spi(port=0, device=0, gpio=noop()) device = max7219(serial, rotate=1) Inizializza la classe ``luma.led_matrix.device.max7219``. .. note:: 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. .. code-block:: python 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. .. code-block:: python 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. .. code-block:: python 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. .. code-block:: python 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 -------------------------- .. image:: ../img/1.1.6led_dot_matrix.JPG