Hier erkläre ich nun wie ich auf die 4*4 LED Matrix Buchstaben oder Zeichen darstelle. Hier kommt die LED Platine von mir zum Einsatz.
Die LED der Platine werden mit dem Shiftregister 74595 betrieben, also deklariere ich erst, wie der 74595 angeschlossen wird.
//Pin verbunden mit dem ST_CP vom 74HC595 const int latchPin = 12; //Pin verbunden mit dem SH_CP vom 74HC595 const int clockPin = 11; //Pin verbunden mit dem DS vom 74HC595 const int dataPin = 13;
Die Zuordnung der Pins muss geändert werden, wenn die LED-Platine an einem Port auf meiner Erweiterungsplatine gesteckt wird.
Als nächstes kommt der Zeichenvorrat, den ich darstellen will:
byte zeichen[][4] = { {0b0110, 0b1001, 0b1111, 0b1001}, // A {0b1111, 0b1000, 0b1000, 0b1111}, // C {0b1110, 0b1001, 0b1001, 0b1110}, // D {0b1111, 0b1000, 0b1100, 0b1000}, // F {0b0010, 0b0101, 0b0101, 0b0010}, // 0 {0b0000, 0b0000, 0b0000, 0b0000}, // Leerzeichen {0b1001, 0b0000, 0b1001, 0b0110} // Smilie };
Wir brauchen noch die Zeichenanzahl. Natürlich kann man die Zeichen durchzählen, bei 3 oder 4 sollte das auch so gehen. Bei einem sehr großen Zeichensatz kommt Zählen nicht in Frage.
Dafür können wir jedoch die Funktion strln() nutzen:
byte zeichenanzahl = strlen(zeichen);
Schauen wir uns diese Zahlenkolonnen mal an. Jedes Zeichen besteht aus 4 Zeilen mit 4 LED.
Bei dem A steht B0110, B1001, B1111, B1001
. Jede dieser vier Blöcke steht für eine Zeile. Eine „1“ bedeutet: LED leuchtet, die „0“ heißt LED ist aus. Untereinander sieht man dann das „A“:
X | X | ||
X | X | ||
X | X | X | X |
X | X |
Ich habe hier nur die LED markiert,die angeschaltet werden. Analog kann jedes Zeichen so gebaut werden, dass man mit 4*4 Punkten darstellen kann.