.. note:: Hallo und willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Gemeinschaft auf Facebook! Tauchen Sie tiefer ein in die Welt von Raspberry Pi, Arduino und ESP32 mit anderen Enthusiasten. **Warum beitreten?** - **Expertenunterstützung**: Lösen Sie Nachverkaufsprobleme und technische Herausforderungen mit Hilfe unserer Gemeinschaft und unseres Teams. - **Lernen & Teilen**: Tauschen Sie Tipps und Anleitungen aus, um Ihre Fähigkeiten zu verbessern. - **Exklusive Vorschauen**: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und exklusiven Einblicken. - **Spezialrabatte**: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte. - **Festliche Aktionen und Gewinnspiele**: Nehmen Sie an Gewinnspielen und Feiertagsaktionen teil. 👉 Sind Sie bereit, mit uns zu erkunden und zu erschaffen? Klicken Sie auf [|link_sf_facebook|] und treten Sie heute bei! .. _1.1.6_py: 1.1.6 LED-Punktmatrix ===================== Einführung -------------------- Wie der Name schon sagt, handelt es sich bei einer LED-Punktmatrix um eine Matrix, die aus LEDs besteht. Das Aufleuchten und Abdunkeln der LEDs formt verschiedene Zeichen und Muster. Benötigte Komponenten ------------------------------ Für dieses Projekt benötigen wir folgende Komponenten. .. image:: ../img/list_dot.png Es ist definitiv praktisch, ein ganzes Set zu kaufen, hier ist der Link: .. list-table:: :widths: 20 20 20 :header-rows: 1 * - Name - ARTIKEL IN DIESEM KIT - LINK * - Raphael Kit - 337 - |link_Raphael_kit| Sie können diese auch einzeln über die untenstehenden Links kaufen. .. list-table:: :widths: 30 20 :header-rows: 1 * - KOMPONENTENBESCHREIBUNG - KAUF-LINK * - :ref:`cpn_gpio_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| Schaltplan ----------------------- ============ ======== ======== ==== 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 Experimentelle Verfahren ---------------------------- **Schritt 1:** Schalten Sie die Schaltung. .. image:: ../img/1.1.6fritzing.png **Schritt 2:** Aktivieren Sie das SPI, bevor Sie mit dem Experiment beginnen, siehe :ref:`spi_configuration` für Details. **Schritt 3:** Installieren Sie das :ref:`install_luma_led_matrix`-Modul. **Schritt 4:** Verzeichnis wechseln. .. raw:: html .. code-block:: cd ~/raphael-kit/python/ **Schritt 5:** Führt das Python-Skript ``1.1.6_LedMatrix.py`` mit dem Python-Interpreter aus der virtuellen Umgebung ``my_env`` aus. .. raw:: html .. code-block:: sudo ~/my_env/bin/python3 1.1.6_LedMatrix.py Nachdem der Code ausgeführt wurde, zeigt die LED-Matrix für zwei Sekunden ein Rechteck an, dann für zwei Sekunden den Text 'A' und scrollt schließlich, um den Text "Hallo, schön dich zu sehen!" anzuzeigen. **Code** .. note:: Sie können den untenstehenden Code **Ändern/Zurücksetzen/Kopieren/Ausführen/Stoppen**. Bevor Sie das tun, müssen Sie zum Quellcodepfad wie ``raphael-kit/python`` gehen. Nachdem Sie den Code geändert haben, können Sie ihn direkt ausführen, um den Effekt zu sehen. .. 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() **Code-Erklärung** .. 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 Importieren der relevanten Bibliotheken. Dabei ist ``luma.core`` eine Komponentenbibliothek, die eine Pillow-kompatible Leinwand für Python 3 sowie andere Zeichenprimitiven und Textrendering-Funktionen bereitstellt, die kleine Displays auf Raspberry Pi und anderen Einplatinencomputern unterstützen. Sie können unter `https://luma-core.readthedocs.io/en/latest/intro.html `_ mehr darüber erfahren. .. code-block:: python serial = spi(port=0, device=0, gpio=noop()) device = max7219(serial, rotate=1) Initialisierung der Klasse ``luma.led_matrix.device.max7219``. .. note:: Wenn Sie die Anzeigerichtung der LED-Matrix ändern möchten, können Sie dies tun, indem Sie den Wert von rotate ändern, wobei 0 keine Rotation bedeutet, 1 eine Rotation im Uhrzeigersinn von 90°, 2 eine Rotation von 180° und 3 eine Rotation im Uhrzeigersinn von 270° bedeutet. .. code-block:: python def displayRectangle(): with canvas(device) as draw: draw.rectangle(device.bounding_box, outline="white", fill="black") Anzeige eines hohlen Rechtecks im Randbereich der LED-Matrix. Ändern Sie den Wert von ``fill`` in ``white``, um ein gefülltes Rechteck anzuzeigen. .. code-block:: python def displayLetter(): with canvas(device) as draw: text(draw, (0, 0), "A", fill="white", font=proportional(CP437_FONT)) Ein "A" wird auf dem Koordinatenpunkt (0, 0) der LED-Matrix angezeigt, wobei ``CP437_FONT`` eine Schriftart ist, die für 8*8-Punktmatrix-Bildschirme geeignet ist. .. code-block:: python virtual = viewport(device, width=200, height=400) Mit einer einzelnen 8x8 LED-Matrix kann kein Textzeile angezeigt werden. Wir müssen die Methode ``luma.core.virtual.viewport`` verwenden, damit der Text durch den virtuellen Viewport gescrollt werden kann. .. code-block:: python def scrollToDisplayText(): with canvas(virtual) as draw: text(draw, (0, 0), "Hallo, schön dich zu treffen!", fill="white", font=proportional(CP437_FONT)) for offset in range(150): virtual.set_position((offset,0)) time.sleep(0.1) ``scrollToDisplayText()`` implementiert "Hallo, schön dich zu treffen!" als scrollenden Text auf der LED-Matrix. Zunächst übergeben wir virtual als Argument an die Funktion ``canvas()``, damit wir das virtuelle Fenster als aktuelles Anzeigefenster verwenden können. Danach zeigt die Funktion ``text()`` "Hallo, schön dich zu treffen!" auf der LED-Matrix an. Mit der For-Schleife verschieben wir das virtuelle Fenster in X-Richtung, so dass wir den Text "Hallo, schön dich zu treffen!" scrollend sehen können. Phänomen-Bild ----------------------- .. image:: ../img/1.1.6led_dot_matrix.JPG