Een Raspberry Pi kun je vrij simpel gebruiken om LED displays aan te sturen. In dit stappenplan gaan we een 8×8 pixels LED display aansturen met behulp van de geïntegreerde MAX7219 LED driver en de SPI interface van de Raspberry Pi.
De MAX7219 8×8 LED zijn relatief goedkoop verkrijgbaar, er kunnen meerdere displays in cascade (doorgelust) aangesloten worden. Dit kan handig zijn als je een klok wilt maken of teksten op een grotere matrix wilt vertonen.
Componenten voor dit project
• MAX7219 dot matrix module 8×8 (link)
• Dupont verbindingkabels male/female (link)
Raspberry Pi Zero, Raspberry Pi 2, Raspberry Pi 3
Raspbian Jessie (2016-05-27 kernel 4.4.13)
Aansluitschema
Matrix module | Raspberry Pi pin | Functie |
---|---|---|
VCC (+5V) | 2 | 5v |
GND (Ground) | 6 | Ground |
DIN (Data in) | 19 | GPIO 10 (MOSI) | CS (Chip Select) | 24 | GPIO 8 (SPI CS0) | CLK (Clock) | 23 | GPIO 11 (SPI CLK) |
SPI interface activeren
We gaan de SPI interface gebruiken om te communiceren met het display, hiervoor moet de SPI interface op de Raspberry Pi geactiveerd worden. Met behulp van het onderstaande commando kun je controleren of SPI is geactiveerd:
ls /dev/spi*
Als SPI is geactiveerd verschijnt /dev/spidev0.0 /dev/spidev0.1
verschijnt dit niet activeer dan SPI als volgt:
sudo raspi-config
Selecteer de menu optie ‘Advanced Options’ ▸ SPI ▸ YES en druk op Enter. Er zal nu een melding verschijnen dat de SPI interface is geactiveerd.
Python library installeren
Download de MAX7219 library vanaf github:
git clone https://github.com/rm-hull/max7219.git
Open de nieuw aangemaakte folder:
cd max7219
Voeg de library toe aan Python:
sudo python setup.py install
De library is voorzien van een testscript dat teksten laat scrollen op het display dit script activeer je met:
sudo python examples/matrix_test.py
MAX7219 voorbeeld script
Om gebruik te kunnen maken van het led display dien je onder Python de max7219 library te downloaden. Daarna kun je met behulp van device.show_message
en tekst weergeven.
#!/usr/bin/env python import max7219.led as led import time from max7219.font import proportional, CP437_FONT device = led.matrix(cascaded=1) device.brightness(1) device.show_message("RASPBERRYTIPS.NL", font=proportional(CP437_FONT)) time.sleep(3) device.flush()
Je kunt het bovenstaande test script downloaden met:
wget https://raspberrytips.nl/files/max7219led8x8.py
Start het script met:
sudo python max7219led8x8.py
Het bovenstaande script laat de tekst ‘RASPBERRYTIPS.NL’ scrollen op het display.
device.brightness
regelt de helderheid van het led paneel (min 0/max 7).
led.matrix(cascaded=1)
het is mogelijk om meerdere displays in cascade aan te sluiten waardoor de tekst doorloopt op de displays. Met de cascaded
parameter geef je het aantal displays op.
device.flush()
met dit commando ‘reset’ het display.
De library heeft nog meer extra functies bekijk hiervoor het test script matrix_test.py
.
Ik heb de library voor max7219 geinstalleerd zoals in voorbeeld, maar ik krijg steeds ook bij ander library’s de volgende fout.
Trace back (most recent call last):
File “max72198x8.py”, line 3, in
import max7219.led as led
ImportError : no module named max7219.led
Wat doe ik fout? Ik ben wel een hobbyist geen ervaring met programmeren
Met vriendelijke groet,
Gerrit Berends
Dan heb je waarschijnlijk de MAX7219 library niet geïnstalleerd, zie ‘Python library installeren’ in het artikel.
De bibliotheek is vernieuwd.
Script voor de oude bibliotheek
Ik krijg de lib niet gedownload.
De directory max7219 is wel aangemaakt maar blijft leeg.