LedController
2.0.2
A library for the MAX7219 and the MAX7221 Led display drivers.
|
Schau auf die Seite des sakurajin::LedController für mehr Informationen über dessen Funktionen schau in die Beispiele.
Diese Seite zeigt die Grundlegende Nutzung des sakurajin::LedController und was man machen kann.
Die Library kann auf zwei Weisen initialisiert werden: mit hardware SPI oder mit software SPI.
Das Serial Peripheral Interface (SPI) ist eine synchrone serielle Kommunikationsschnittstelle, welche für Kommunitaktion, primär im embedded Bereich, für kurze Distanzen verwendet wird. In diesem Fall ist der microcontroller der Master, der die Slaves (mindestens ein 7-Segment display oder Led Matrix Segment) steuert.
Der Master hat frei relevante Pins: SCLK(Serial Clock), MOSI(Master Out Slave In) und SS(Slave Select). Der Slave hat drei entsprechende Pins (und zwei für den Strom(GND und VCC)): CLK(Clock), DIN(Data In), CS(Ship Select). SCLK muss mit CLK verbunden werden und MOSI mit DIN. Diese Signale können zweichen mehreren SPI slaves geteilt werden, auch wenn die Slaves nicht miteinander zu tun haben. SS muss mit CS verbunden werden und jeder Slave braucht einen eigenen SS pin(dies kann jeder freier pin sein).
Zum Verwenden muss erst ein neues sakurajin::controller_configuration objekt erstellt werden. Dieses wird verwendet um das setup des sakurajin::LedController zu konfigurieren, was sehr komplex sein kann. sakurajin::controller_configuration hat keinen Konstruktor und ist dadurch mehr wie ein struct als eine 'richtige' Klasse. Weil alle Klassen der Bibliothek ein template sind müssen die Dimensionen der Matrix angegeben werden. Dadurch wird der Datentyp der sakurajin::controller_configuration sakurajin::controller_configuration<Segmente_x,Segmente_y>
. Um zu sehen wie man mehrere Zeilen mit einem sakurajin::LedController steuern kann schau diese Seite an. Der Rest der Seite wird sakurajin::controller_configuration<4,1>
verwenden wie im Beispiel Rakete.
Wenn Hardware SPI verwendet werden soll muss useHardwareSpi auf true gesetzt werden, ansonsten auf false. Falls hardware SPI verwendet wird dann muss nur der CS pin angegeben werden, ansonsten wird noch der CLK und MOSI pin benötigt. Einfach die gewünschten Werte SPI_CS, SPI_CLK und SPI_MOSI zuweisen.
Nun kann die Konfiguration mit der Funktion sakurajin::controller_configuration.isValid() auf Gültigkeit geprüft werden. Falls true zurückgegeben wird, kann mit dem nächsten Schritt fortgefahren werden. Wenn nicht lohnt es sich debug_output auf true zu setzen und rauszufinden was schief läuft.
Nun da eine Gültige Konfiguration vorhanden ist, kann diese an die init Funktion des sakurajin::LedController Objekts übergeben werden. Nun können sakurajin::LedController.setRow und sakurajin::LedController.setSegment verwendet werden um Daten an die Matrix zu senden.
setSegment sets a whole segment but the segment can be specified through coordinates or the index. sakurajin::LedController.setSegment setzt ein ganzes Segment, allerdings kann das Segment über Nummer und Koordinaten angegeben werden.
Der folgende Codeschnipsel sollte funktionieren und zeigt wie ein Led initialisiert mit hardware SPI wird und auf einigen Segmenten Daten angezeigt werden.
Nun wo die Grundlagen verstanden sind kann man sich den fortgeschrittenen Themen wie dem Verwenden mehrerer Zeilen oder dem Bewegen der angezeigten Daten widmen.