Advertisement
Drakkheen

Untitled

Mar 25th, 2021
955
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. char meinText[] = "A";                               // Variable mit dem anzuzeigenden Text
  2. const int Geschwindigkeit = 100;                          // Buchstabenwechsel nach xx Millisekunden
  3.  
  4. const byte zeile[9] = {2, 3, 4, 5, 6, 7, 8, 9, 10};             // PINs für die Zeilen der Matrix (GND)
  5. const byte spalte[9] = {19, 18, 17, 16, 15, 14, 13, 12, 11}; // PINs für die Spalten der Matrix (VCC)
  6.  
  7. // Buchstabentabelle
  8. const byte charTable[][9] = {
  9.   {0b111111111, 0b111111111, 0b111111111, 0b111111111, 0b111111111, 0b111111111, 0b111111111, 0b111111111, 0b111111111},        //[
  10. };
  11.  
  12. const byte firstChar = 'A';                               // mit welchem Zeichen beginnt die Buchstabentabelle
  13. unsigned long LastAction = 0;                             // Variable zur Messung der Zeit zwischen zwei Buchstaben
  14. unsigned long CurrentTime = 0;                            // Variable zur Messung der Zeit zwischen zwei Buchstaben
  15.  
  16. void setup() {
  17.   Serial.begin(9600);
  18.  
  19.   for (int i = 0; i < 9; i++) {                          // zählt von 0 bis 8
  20.     pinMode(zeile[i], OUTPUT);                                   // setzt den PIN auf Ausgang
  21.     pinMode(spalte[i], OUTPUT);                                   // setzt den PIN auf Ausgang
  22.   }
  23. }
  24.  
  25. void loop() {
  26.   wort(meinText, sizeof(meinText) - 1);                   // ruft die Unterfunktion zur "Textzerlegung" auf
  27. }
  28.  
  29. // Unterfunktion zum Zerlegen des Textes in einzelne Buchstaben
  30. void wort(char *toPrint, size_t len)
  31. {
  32.   static size_t i = 0;
  33.   CurrentTime = millis();                                 // Timer initialisieren
  34.  
  35.   // wandelt den Buchstaben in eine Indexvariable für die Buchstabentabelle um
  36.   byte myIndex = toPrint[i] - firstChar;                  // ASCII minus erstem Zeichen somit 0 für das erste Zeichen in der Buchstabentabelle
  37.  
  38.   if (CurrentTime - LastAction > Geschwindigkeit) {       // Timer Funktion Anfang
  39.     i++;                                                  // erhöht den Zähler für die Buchstaben in wort()
  40.     if (i == len) {                                       // wenn der Zähler gleich ist mit der Wortlänge
  41.       i = 0;                                              // wird er wieder auf 0 gesetzt
  42.     }
  43.     LastAction = CurrentTime;                             // Timer aktualisieren
  44.   }
  45.   zeige(charTable[myIndex]);                              // ruft die Funktion zeige() zum Anzeigen des Buchstaben auf
  46. }
  47.  
  48. // Unterfunktion zur Ausgabe eines Buchstaben an die 9x9 LED Matrix
  49. void zeige(const byte buffer2[]) {
  50.   for (int a = 0; a < 9; a++) {
  51.  //   Serial.print("Zeilenpin=");
  52.  //   Serial.println(zeile[a]);
  53.     digitalWrite(zeile[a], 1);
  54.     for (int i = 0; i < 9; i++) {
  55.  //     Serial.print("Spaltenpin=");
  56.  //     Serial.println(spalte[i]);
  57.       digitalWrite(spalte[i], bitRead (buffer2[a], i));
  58.       digitalWrite(spalte[i], 0);
  59.     }
  60.     digitalWrite(zeile[a], 0);
  61.   }
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement