Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- char meinText[] = "A"; // Variable mit dem anzuzeigenden Text
- const int Geschwindigkeit = 100; // Buchstabenwechsel nach xx Millisekunden
- const byte zeile[9] = {2, 3, 4, 5, 6, 7, 8, 9, 10}; // PINs für die Zeilen der Matrix (GND)
- const byte spalte[9] = {19, 18, 17, 16, 15, 14, 13, 12, 11}; // PINs für die Spalten der Matrix (VCC)
- // Buchstabentabelle
- const byte charTable[][9] = {
- {0b111111111, 0b111111111, 0b111111111, 0b111111111, 0b111111111, 0b111111111, 0b111111111, 0b111111111, 0b111111111}, //[
- };
- const byte firstChar = 'A'; // mit welchem Zeichen beginnt die Buchstabentabelle
- unsigned long LastAction = 0; // Variable zur Messung der Zeit zwischen zwei Buchstaben
- unsigned long CurrentTime = 0; // Variable zur Messung der Zeit zwischen zwei Buchstaben
- void setup() {
- Serial.begin(9600);
- for (int i = 0; i < 9; i++) { // zählt von 0 bis 8
- pinMode(zeile[i], OUTPUT); // setzt den PIN auf Ausgang
- pinMode(spalte[i], OUTPUT); // setzt den PIN auf Ausgang
- }
- }
- void loop() {
- wort(meinText, sizeof(meinText) - 1); // ruft die Unterfunktion zur "Textzerlegung" auf
- }
- // Unterfunktion zum Zerlegen des Textes in einzelne Buchstaben
- void wort(char *toPrint, size_t len)
- {
- static size_t i = 0;
- CurrentTime = millis(); // Timer initialisieren
- // wandelt den Buchstaben in eine Indexvariable für die Buchstabentabelle um
- byte myIndex = toPrint[i] - firstChar; // ASCII minus erstem Zeichen somit 0 für das erste Zeichen in der Buchstabentabelle
- if (CurrentTime - LastAction > Geschwindigkeit) { // Timer Funktion Anfang
- i++; // erhöht den Zähler für die Buchstaben in wort()
- if (i == len) { // wenn der Zähler gleich ist mit der Wortlänge
- i = 0; // wird er wieder auf 0 gesetzt
- }
- LastAction = CurrentTime; // Timer aktualisieren
- }
- zeige(charTable[myIndex]); // ruft die Funktion zeige() zum Anzeigen des Buchstaben auf
- }
- // Unterfunktion zur Ausgabe eines Buchstaben an die 9x9 LED Matrix
- void zeige(const byte buffer2[]) {
- for (int a = 0; a < 9; a++) {
- // Serial.print("Zeilenpin=");
- // Serial.println(zeile[a]);
- digitalWrite(zeile[a], 1);
- for (int i = 0; i < 9; i++) {
- // Serial.print("Spaltenpin=");
- // Serial.println(spalte[i]);
- digitalWrite(spalte[i], bitRead (buffer2[a], i));
- digitalWrite(spalte[i], 0);
- }
- digitalWrite(zeile[a], 0);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement