Bisher habe ich in den beiden ersten Teilen die Hard- und Software zum Erstellen einer LED Matrix erklärt. Eine LED Matrix kann aber nicht nur einzelne Buchstaben nacheinander darstellen, eine Laufschrift ist besser zu lesen. Auch hier benutze ich mein Erweiterungsboard.
Der Code setzt sich aus ähnlichen Bausteinen zusammen, wie der aus dem zweiten Teil. Ich definiere die Pins, an denen das Shiftregister angeschlossen wird, den Zeichenvorrat und den Laufschrifttext. Ich verwende auch den Inhalt der loop() Funktion des ersten Teils wieder, dieser „verschwindet“ jetzt in einer Funktion. Die triviale Funktion Ausgabe() verwende ich auch weiter.
void Ausgabe(byte wert) { digitalWrite(latchPin, LOW); shiftOut(dataPin, clockPin, LSBFIRST, wert); digitalWrite(latchPin, HIGH); } void multiplexen(byte symbol[]) { byte ausgabe; byte counter; for (byte i = 0; i < 40; i++) { for (byte zeile = 0; zeile < 4; zeile++) { if ( zeile == 0 ) counter = 0b1000; ausgabe = symbol[zeile]; for (byte led = 0; led < 4; led++) { byte pin; if ( led == 0 ) pin = 0b0001; Ausgabe(counter << 4 | (ausgabe & pin)); delayMicroseconds(150); pin = pin << 1; } counter = counter >> 1; } } }
Die Funktion multiplexen() funktioniert wie der loop() in Teil 2. Es wird ein 4*4 Array mit den LED- Informationen übergeben, welches dann in multiplexen() LED für LED angezeigt wird.
Die Laufschrift wird nun in der loop() Funktion erzeugt, in dem immer zwei Zeichen aus dem anzuzeigenden Text genommen werden, so entsteht eine 8*4 Matrix.
Nun kopiere ich die ersten 4 Spalten und stelle diese in der Funktion multiplexen() dar.
Dann wird einfach jede Zeile der 8*4 um ein Bit nach links geschoben und wieder die ersten vier Spalten dargestellt. Nach vier mal Schieben entnehme ich das nächste Zeichen aus dem Anzeigetext.
Wenn der letzte Buchstabe erreicht ist, dann wird wieder der erste Buchstabe genommen.
Seiten: 1 2