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.
Seit Vesion 2.0.0 kann mit einem sakurajin::LedController Objekt mehr als eine Zeile gesteuert werden. Diese Einführung erklärt alles was man wissen muss um mehrere Zeilen verwenden zu können
Das Bild beschreibt die Datenstruktur der Segmente bei einer Matrix. Jedes Quadrat steht für ein Segment und in diesem Beispiel gibt es insgesamt 8 Segmente mit 4 Segmenten pro Reihe. (Kleine Übersetzungshinweis: Row heißt Zeile, Column heißt Splate)
Wie man sehen kann ist die 0 in der Ecke unten links (außer man sreht die Matrix). Wenn ein neues sakurajin::LedController objekt erstellt wird, müssen die Dimensionen der matrix angegeben werden, also die Zahl der Zeilen und Spalten. In diesem Beispiel wäre der Datentyp des sakurajin::LedController sakurajin::LedController<4,2>
, da es 4 Splaten und 2 Zeilen hat. Die Dimensionen können beliebig groß sein, solang man genug Arbeitsspeicher und Hardware besitzt.
Das Beispiel sakurajin::LedControllerDemoRocketMulti wird genutzt um zu zeigen wie man mehrere Zeilen nutzt.
Falls man verschiedene CS pins für die einzelnen Zeilen verwenden möchte, dann muss man eine eigene sakurajin::controller_configuration erstellen, welche die selben Dimensionen hat wie der sakurajin::LedController. Standardmäßig wird angenommen, dass alle Segment in Reihe der Indexe angeschlossen sind.
If you want each row to be connected to a different SPI pin you need to set row_SPI_CS to the correct values. row_SPI_CS[0]
should be set to the pin of row 0 and row_SPI_CS[1]
to the pin of row 1. You have to set the pin of each row to a unique value or you might encounter issues!** You also have to set SPI_CS to 0 or virtual_multi_row to false. One of those two is enough but setting both makes sure that virtual_multi_row is disabled.
Falls man jede Reihe an ein eigenen CS pin anschließen will muss row_SPI_CS auf den richtigen Wert gesetzt werden. row_SPI_CS[0]
sollte auf den pin von Zeile 0 und row_SPI_CS[1]
auf den pin von Zeile 1 gesetzt werden. Jede Zeile sollte einen einzigartigen Wert besitzen ansonsten kommt es zu Problemen! Außerdem müssen SPI_CS auf 0 und/oder virtual_multi_row auf false gesetzt werden. Eins der beiden reicht theoretisch aus, aber sicher ist sicher.
Hier ist ein Beispiel wie eine gültige sakurajin::controller_configuration für dieses Beispiel aussehen könnte.
Falls virtual_multi_row (alle Segmente in Reihe geschaltet) verwendet werden soll, dann muss SPI_CS auf den gewünschten CS pin gesetzt werden und virtual_multi_row muss true sein (was der Standardwert ist). Solange diese beiden Bedingungen erfüllt sind wird der Wert von row_SPI_CS ignoriert.
Schau die sakurajin::controller_configuration Seite für die Details über die anderen Felder an.
Nun können Daten wie in usage information beschreiben mit setSegment
mit den Koordinaten des Segments angezeigt werden. getConfig().getSegmentNumber
kann verwendet werden um die Segmentnummer zu bestimmen, welche mitunter für sakurajin::LedController.setRow und sakurajin::LedController.setColumn benötigt wird.