Jetzt eine kleine Routine, die einfach die aufbereiteten Steuersignale für das LED an das Shiftregister sendet.
void Ausgabe(byte wert)
{
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, wert);
digitalWrite(latchPin, HIGH);
}
In dem Sketch in der Arduinosoftware werden nun in der setup-Funktion die genutzen Pins gesetzt.
void setup()
{
// Pins für den 595 setzen
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}
Jetzt zum eigentlichen Programmteil in der Loop Funktion.
Schematisch baut sich das Programm so auf:
- Nehme ein Zeichen aus dem Vorrat.
- Nimm dir jede Zeile des Zeichen nacheinander vor und merke dir die Zeilennummer.
- Nimm dir nacheinander alle 4 Punkte der Zeile vor und merke dir die Position und ob die LED an oder aus ist.
- Sende das Ergebnis, Zeilennummer, Position und LED ein/aus mit der Ausgabe(..) Funktion an das Shiftregister.
Hier sende ich auch eine „0“, also ausgeschaltet, damit jeder Pixel gleichlang angesprochen wird. So erscheint der Buchstabe gleichmäßiger. Sonst würde ein „A“ mit vielen angeschalteten LED länger dargestellt werden, als ein „I“, Das macht dann den Lesefluss ungleichmäßiger, besonders bei Laufschriften.
- Lege nach jeder Ausgabe eine kleine Pause ein.
Die Pause ist notwendig, damit die Darstellung nicht so schnell wird. Das Multiplexen täuscht ja nur einen kompletten Buchstabe vor, es leuchtet aber immer nur eine LED. Passiert der Wechsel zu schnell, kommt das Auge nicht mehr mit.
- Nimm das nächste Zeichen. Ist das letzte erreicht, dann fange mit dem ersten wieder an.
Und nun der der ganze Sketch auf der dritten Seite.