8x8 LED mátrix vezérlése MAX7219 IC-vel

max7219_simpletest.py (kis kiegészítésekkel)

Az 1088AS típusű 8x8-as LED mátrixnál a sorkiválasztó vonalak a katódokat közösítik. Multiplex kijelzést igényel, egyidejűleg legfeljebb egy sor, vagy egy oszlop lehet aktív. Az E-bay kínálatában kapható modulnál egy MAX7219 típusú IC hajtja meg a LED-eket, ami az SPI buszon kerestül írható.

Az IC tárolja a LED-ek állapotát és automatikusan frissíti a kijelzést, korlátoza a LED-ek áramát és digitálisan szabályozza a LED-ek fényerejét (PWM) 15 fokozatban.

matrix8x8.png

Szoftveres meghajtó: Adafruit CircuitPython MAX7129 programkönyvtár

A programkönyvtárhoz mintapéldákat is mellékeltek. Most a max7219_simpletest.py programot mutatjuk be, ami egy 8x8-as LED mátrixot vezérel.

Mielőtt tovább lépnénk, ellenőrizük, hogy csatlakoztatva van-e a CircuitPython kártyánk!

Az stm32f411ce-blackpill-with-flash kártya esetén az SPI2 csatornát fogjuk használni (az SPI1 csatorna foglalt a flash memória kezelésére). A CE kiválasztó jel elvileg bármelyik digitális kimeneten kiadható, de itt a szokásos módon az SPI2 csatorna NSS2 kivezetését használjuk fel (B12 tüske).

Inicializálásnál először az SPI csatornát konfiguráljuk, majd ezt kigészítjük egy CE vezrlő digitális kimenettel, s ezeken keresztül vezéreljük a Matrix8x8 objektumot.

A MAX7219 IC inicializálása (a matrices.py állományban található):

def init_display(self) -> None:
    for cmd, data in (
        (_SHUTDOWN, 0),       # Lekapcsolja a kijelzést
        (_DISPLAYTEST, 0),    # Normál módba kapcsol
        (_SCANLIMIT, 7),      # Minden számjegyet/pontsort megjelenít
        (_DECODEMODE, 0),     # Nincs BCD->7SEG dekódolás
        (_SHUTDOWN, 1),       # Kijelzés újraengedélyezés
    ):
        self.write_cmd(cmd, data)

max7219_registers.png

Az alábbi parancsokal bármikor újra alapállapotba állíthatjuk az IC-t és a kijelzőt.

Tesztelés gyanánt kapcsoljunk fel minden LED-et

Kapcsoljuk le a LED-eket!

Az I ♥ felirat megjelenítése nyolc lépésben:

Egy oszlop kivilágítása és görgetése

Szöveg megjelenítése karakterenként. Itt most az "Adafruit" szó betűit jelenítjük meg egyenként.

A megjelenítést a matrix.text(char, x, y) tagfüggvény hívásával végezzül, ahol:

Az utolsó betűt balra kigörgetjük a kijelzőről. A gorgetés a scroll(dx,dy) metódussal végezhető:

matrix.scroll(-1,0) - görgetés balra

matrix.scroll(1,0) - görgetés jobbra

matrix.scroll(0,-1) - görgetés felfelé

matrix.scroll(0,1) - görgetés lefelé

Megjegyzés: Ha nem töröljük a szélső sort, annak tartalma másolódik görgetéskor. Az alábbi példában ez azért nem okoz gondot, mert a jobb szélen található oszlop eleve csupa nullát tartalmaz, s balra görgetünk.

Szöveg görgetése fényújság-szerűen. Itt most a "Hobbielektronika" szót görgetjük.