Raspberry Pi - LED Matrix

Deze handleiding legt uit hoe u een Raspberry Pi gebruikt met een LED matrix display. We leren in detail:

Daarna is het eenvoudig om de code aan te passen voor andere LED matrices zoals 16x8, 64x8 en zo verder.

Hardware Benodigd

1×Raspberry Pi 5
1×FC-16 LED Matrix 32x8
1×FC-16 LED Matrix 8x8
1×Generieke LED Matrix 8x8
1×Jumper Draden
1×DC-Stroomaansluiting
1×5V Voedingsadapter voor Raspberry Pi
1×(Aanbevolen) Schroefklem Block Shield voor Raspberry Pi
1×(Aanbevolen) Raspberry Pi Prototyping Basisplaat & Breadboard Kit
1×(Aanbevolen) HDMI-Touchscreen-Monitor voor Raspberry Pi

Of u kunt de volgende kits kopen:

1×DIYables Sensorkit (30 sensoren/displays)
1×DIYables Sensorkit (18 sensoren/displays)
Openbaarmaking: Sommige van de links in deze sectie zijn Amazon-affiliate links. We kunnen een commissie ontvangen voor aankopen die via deze links worden gedaan, zonder extra kosten voor u. We waarderen uw steun.

Over LED Matrix

LED matrix displays worden vaak LED displays of dot matrix displays genoemd.

LED Matrix display

LED Matrixen zijn er in vele varianten. De MAX7219-gebaseerde LED matrix wordt veel gebruikt met de Raspberry Pi. Hij heeft de volgende eigenschappen:

  • Een enkele module vormt de basis-eenheid van een LED matrix, bestaande uit een 8x8 LED matrix (64 LEDs) en een MAX7219 driver.
  • Er zijn twee soorten modules beschikbaar: de generieke module en de FC-16 module.
  • U kunt een LED matrix maken met één module of met meerdere modules die in een keten (daisy-chain) zijn verbonden.
  • Er zijn ook kant-en-klare LED matrices met meerdere modules verkrijgbaar (bijvoorbeeld 4-in-1, 8-in-1).
  • U kunt ook meerdere modules kopen en zelf bekabelen om een LED matrix van de gewenste grootte samen te stellen.
  • In de Raspberry Pi code moet u de grootte van de gebruikte LED matrix opgeven.

De LED Matrix Pinout

LED Matrix pinout

Een LED Matrix bestaat uit één of meerdere modules. Elke module heeft twee pingroepen:

  • Input pinnen groep:
    • VCC: verbonden met 5V voeding.
    • GND: verbonden met massa (ground).
    • DIN: Datapin, verbonden met GPIO10 (MOSI) van de Raspberry Pi.
    • CS: Chip Select, verbonden met GPIO8 (SPI CE0) van de Raspberry Pi.
    • CLK: Clock pin, verbonden met GPIO11 (SPI CLK) van de Raspberry Pi.
  • Output pinnen groep:
    • VCC: verbindt met VCC van de volgende module.
    • GND: verbindt met GND van de volgende module.
    • DOUT: Data Out, verbindt met DIN pin van de volgende module.
    • CS: verbindt met CS van de volgende module.
    • CLK: verbindt met CLK van de volgende module.

Bedradingsschema

Als de LED matrix uit één enkele module bestaat:

  • Verbind de input pinnen groep met de Raspberry Pi
  • Laat de output pinnen groep onverbonden
Raspberry Pi 8x8 LED matrix FC-16 bedradingsschema

This image is created using Fritzing. Click to enlarge image

Raspberry Pi 8x8 LED matrix generiek bedradingsschema

This image is created using Fritzing. Click to enlarge image

Als de LED matrix bestaat uit meerdere vooraf samengestelde modules:

  • Verbind de input pinnen groep met de Raspberry Pi
  • Laat de output pinnen groep onverbonden
Raspberry Pi LED matrix display bedradingsschema

This image is created using Fritzing. Click to enlarge image

Als u zelf een LED matrix van meerdere modules maakt:

  • Sluit de input pinnen groep van de eerste module aan op de Raspberry Pi
  • Verbind de output pinnen groep van elke module met de input pinnen groep van de daaropvolgende module
  • Laat de output pinnen groep van de laatste module onverbonden
Raspberry Pi 32x8 LED matrix bedrading FC-16 diagram

This image is created using Fritzing. Click to enlarge image

Om uw bekabelingsopstelling te vereenvoudigen en te organiseren, raden we het gebruik van een Schroevenklemaansluiting-shield voor Raspberry Pi aan. Deze shield zorgt voor veiligere en beter beheerbare verbindingen, zoals hieronder weergegeven:

Raspberry Pi Schroevenklemaansluiting-Shield

Omdat de Raspberry Pi via SPI pinnen met de LED matrix is verbonden:

  • Moeten pin GPIO9 (SCK) en GPIO11 (MOSI) van de Raspberry Pi worden gebruikt. Als u een ander Raspberry Pi model gebruikt, raadpleeg dan de officiële documentatie voor de equivalente SPI pinnen.
  • Kan pin GPIO8 (CS) naar een willekeurige pin op het Raspberry Pi board worden veranderd. In deze handleiding gebruiken we GPIO25 als CS pin.

Raspberry Pi - LED Matrix Code

Deze Raspberry Pi code is voor een 32x8 FC-16 LED matrix display met vier modules. Het is eenvoudig aan te passen voor 8x8, 16x8, 64x8... displays door de BLOCK_NUM constante in de code te wijzigen.

Snelle Stappen

  • Zorg dat u Raspbian of een ander Raspberry Pi compatibel besturingssysteem op uw Pi geïnstalleerd heeft.
  • Zorg dat uw Raspberry Pi verbonden is met hetzelfde lokale netwerk als uw pc.
  • Zorg dat uw Raspberry Pi met internet is verbonden als u libraries wilt installeren.
  • Als u voor het eerst met Raspberry Pi werkt, zie hoe u Raspberry Pi instelt.
  • Verbind uw pc via SSH met de Raspberry Pi, gebruikmakend van de ingebouwde SSH client op Linux en macOS of PuTTY op Windows. Zie hoe u uw pc via SSH aan Raspberry Pi koppelt.
  • Controleer of de RPi.GPIO library geïnstalleerd is. Zo niet, installeer deze dan met het volgende commando:
sudo apt-get update sudo apt-get install python3-rpi.gpio
pip install luma.led_matrix
  • Maak een Python scriptbestand aan met de naam led_matrix.py en voeg de volgende code toe:
# Deze Raspberry Pi code is ontwikkeld door newbiely.nl # Deze Raspberry Pi code wordt zonder enige beperking aan het publiek beschikbaar gesteld. # Voor volledige instructies en schema's, bezoek: # https://newbiely.nl/tutorials/raspberry-pi/raspberry-pi-led-matrix from luma.led_matrix.device import max7219 from luma.core.interface.serial import spi, noop from luma.core.virtual import viewport, sevensegment from time import sleep CS_PIN = 25 # Replace with your actual CS pin BLOCK_NUM = 4 # Replace with your block number HEIGHT = 8 WIDTH = 8 * BLOCK_NUM # Define SPI interface serial = spi(port=0, device=0, gpio=noop(), cs=CS_PIN) # Define LED matrix device device = max7219(serial, cascaded=BLOCK_NUM, block_orientation=-90) # Define virtual device virtual = viewport(device, width=WIDTH, height=HEIGHT) # Create instance of sevensegment for text display ledMatrix = sevensegment(virtual) def clear_display(): ledMatrix.text = " " sleep(1) def display_text(text, alignment): ledMatrix.text = text ledMatrix.text_align = alignment sleep(2) try: while True: clear_display() display_text("Left", "left") display_text("Center", "center") display_text("Right", "right") clear_display() display_text("Invert", "center") sleep(2) ledMatrix.text = "1234" sleep(2) except KeyboardInterrupt: pass finally: device.cleanup()
  • Sla het bestand op en start het Python script door het volgende commando in de terminal uit te voeren:
python3 led_matrix.py
  • Bekijk hoe de LED matrix tekst toont.

Het script draait in een oneindige lus totdat u Ctrl + C indrukt in de terminal.

Raspberry Pi LED Matrix Code – Scrollende Tekst

Als een bericht te lang is om op het LED matrix display in één keer te tonen, kan het scrollende tekst-effect gebruikt worden.

Deze Raspberry Pi code laat zien hoe u een bericht langs het LED matrix display laat scrollen.

# Deze Raspberry Pi code is ontwikkeld door newbiely.nl # Deze Raspberry Pi code wordt zonder enige beperking aan het publiek beschikbaar gesteld. # Voor volledige instructies en schema's, bezoek: # https://newbiely.nl/tutorials/raspberry-pi/raspberry-pi-led-matrix from luma.led_matrix.device import max7219 from luma.core.interface.serial import spi, noop from luma.core.virtual import viewport, sevensegment from luma.core.legacy import show_message from time import sleep CS_PIN = 25 # Replace with your actual CS pin BLOCK_NUM = 4 # Replace with your block number HEIGHT = 8 WIDTH = 8 * BLOCK_NUM # Define SPI interface serial = spi(port=0, device=0, gpio=noop(), cs=CS_PIN) # Define LED matrix device device = max7219(serial, cascaded=BLOCK_NUM, block_orientation=-90) # Define virtual device virtual = viewport(device, width=WIDTH, height=HEIGHT) # Create instance of sevensegment for text display ledMatrix = sevensegment(virtual) def clear_display(): ledMatrix.text = " " sleep(1) while True: if not device.is_animating(): ledMatrix.text = "Hello" show_message(device, ledMatrix.text, fill=None, font=None, scroll_delay=0.1) try: pass # Do other things if needed except KeyboardInterrupt: pass finally: device.cleanup()

Video Tutorial

We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.

Bekijk onze video-tutorial voor een visuele begeleiding bij dit project! De video biedt extra inzichten en helpt u sneller vertrouwd te raken met het aansluiten en programmeren van de LED matrix met de Raspberry Pi.

Gerelateerde Tutorials

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!