Advertisement
Drakkheen

Untitled

Mar 25th, 2021
728
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. char meinText[] = "HEL[LO[WORLD[";                               // Variable mit dem anzuzeigenden Text
  2. const int Geschwindigkeit = 500;                          // 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. {0b000111000, 0b001000100, 0b011000110, 0b011000110, 0b011111110, 0b011111110, 0b011000110, 0b011000110, 0b011000110},        //A
  10. {0b001111100, 0b001100010, 0b001100010, 0b001100010, 0b001111100, 0b001111100, 0b001100010, 0b001100010, 0b001111100},        //B
  11. {0b000111000, 0b001111100, 0b001100100, 0b001100000, 0b001100000, 0b001100000, 0b001100100, 0b001111100, 0b000111000},        //C
  12. {0b001111100, 0b001100010, 0b001100010, 0b001100010, 0b001100010, 0b001100010, 0b001100010, 0b001100010, 0b001111100},        //D
  13. {0b001111100, 0b001100000, 0b001100000, 0b001100000, 0b001111100, 0b001111100, 0b001100000, 0b001100000, 0b001111100},        //E
  14. {0b001111100, 0b001100000, 0b001100000, 0b001100000, 0b001111000, 0b001111000, 0b001100000, 0b001100000, 0b001100000},        //F
  15. {0b000111000, 0b001111100, 0b001100100, 0b001100000, 0b001101100, 0b001100100, 0b001100100, 0b001111100, 0b000111000},        //G
  16. {0b011000110, 0b011000110, 0b011000110, 0b011000110, 0b011111110, 0b011000110, 0b011000110, 0b011000110, 0b011000110},        //H
  17. {0b000111000, 0b000010000, 0b000010000, 0b000010000, 0b000010000, 0b000010000, 0b000010000, 0b000010000, 0b000111000},        //I
  18. {0b001100000, 0b001100000, 0b001100000, 0b001100000, 0b001100000, 0b001100100, 0b001100100, 0b001111100, 0b000111000},        //J
  19. {0b001100010, 0b001100110, 0b001101100, 0b001111000, 0b001110000, 0b001111000, 0b001101100, 0b001100110, 0b001100010},        //K
  20. {0b001100000, 0b001100000, 0b001100000, 0b001100000, 0b001100000, 0b001100000, 0b001100000, 0b001111100, 0b001111100},        //L
  21. {0b010000010, 0b011000110, 0b011101110, 0b011010110, 0b011010110, 0b011000110, 0b011000110, 0b011000110, 0b011000110},        //M
  22. {0b010000110, 0b011000110, 0b011100110, 0b011110110, 0b011011110, 0b011001110, 0b011000110, 0b011000110, 0b011000110},        //N
  23. {0b001111100, 0b011000110, 0b011000110, 0b011000110, 0b011000110, 0b011000110, 0b011000110, 0b011000110, 0b001111100},        //O
  24. {0b011111000, 0b011000100, 0b011000100, 0b011000100, 0b011000100, 0b011111000, 0b011000000, 0b011000000, 0b011000000},        //P
  25. {0b001111100, 0b011000110, 0b011000110, 0b011000110, 0b011000110, 0b011010110, 0b011001110, 0b011000100, 0b001111010},        //Q
  26. {0b011111000, 0b011000100, 0b011000100, 0b011000100, 0b011000100, 0b011111000, 0b011001000, 0b011000100, 0b011000100},        //R
  27. {0b001111100, 0b010000010, 0b010000000, 0b010000000, 0b001111100, 0b000000010, 0b000000010, 0b010000010, 0b001111100},        //S
  28. {0b011111110, 0b000010000, 0b000010000, 0b000010000, 0b000010000, 0b000010000, 0b000010000, 0b000010000, 0b000010000},        //T
  29. {0b011000110, 0b011000110, 0b011000110, 0b011000110, 0b011000110, 0b011000110, 0b011000110, 0b011000110, 0b001111100},        //U
  30. {0b011000110, 0b011000110, 0b011000110, 0b011000110, 0b011000110, 0b001000100, 0b001101100, 0b000111000, 0b000010000},        //V
  31. {0b011000110, 0b011000110, 0b011000110, 0b011000110, 0b011010110, 0b011010110, 0b001010100, 0b001010100, 0b000111000},        //W
  32. {0b010000010, 0b011000110, 0b001000100, 0b001111100, 0b000111000, 0b001111100, 0b001000100, 0b011000110, 0b010000010},        //X
  33. {0b010000010, 0b011000110, 0b001000100, 0b001101100, 0b000111000, 0b000010000, 0b000010000, 0b000010000, 0b000010000},        //Y
  34. {0b011111110, 0b000000010, 0b000000100, 0b000001000, 0b000010000, 0b000100000, 0b001000000, 0b010000000, 0b011111110},        //Z
  35. {0b000000000, 0b000000000, 0b000000000, 0b000000000, 0b000000000, 0b000000000, 0b000000000, 0b000000000, 0b000000000},        //[
  36. };
  37.  
  38. const byte firstChar = 'A';                               // mit welchem Zeichen beginnt die Buchstabentabelle
  39. unsigned long LastAction = 0;                             // Variable zur Messung der Zeit zwischen zwei Buchstaben
  40. unsigned long CurrentTime = 0;                            // Variable zur Messung der Zeit zwischen zwei Buchstaben
  41.  
  42. void setup() {
  43.   Serial.begin(9600);
  44.  
  45.   for (int i = 0; i < 9; i++) {                          // zählt von 0 bis 8
  46.     pinMode(zeile[i], OUTPUT);                                   // setzt den PIN auf Ausgang
  47.     pinMode(spalte[i], OUTPUT);                                   // setzt den PIN auf Ausgang
  48.   }
  49. }
  50.  
  51. void loop() {
  52.   wort(meinText, sizeof(meinText) - 1);                   // ruft die Unterfunktion zur "Textzerlegung" auf
  53. }
  54.  
  55. // Unterfunktion zum Zerlegen des Textes in einzelne Buchstaben
  56. void wort(char *toPrint, size_t len)
  57. {
  58.   static size_t i = 0;
  59.   CurrentTime = millis();                                 // Timer initialisieren
  60.  
  61.   // wandelt den Buchstaben in eine Indexvariable für die Buchstabentabelle um
  62.   byte myIndex = toPrint[i] - firstChar;                  // ASCII minus erstem Zeichen somit 0 für das erste Zeichen in der Buchstabentabelle
  63.  
  64.   if (CurrentTime - LastAction > Geschwindigkeit) {       // Timer Funktion Anfang
  65.     i++;                                                  // erhöht den Zähler für die Buchstaben in wort()
  66.     if (i == len) {                                       // wenn der Zähler gleich ist mit der Wortlänge
  67.       i = 0;                                              // wird er wieder auf 0 gesetzt
  68.     }
  69.     LastAction = CurrentTime;                             // Timer aktualisieren
  70.   }
  71.   zeige(charTable[myIndex]);                              // ruft die Funktion zeige() zum Anzeigen des Buchstaben auf
  72. }
  73.  
  74. // Unterfunktion zur Ausgabe eines Buchstaben an die 9x9 LED Matrix
  75. void zeige(const byte buffer2[]) {
  76.   for (int a = 0; a < 9; a++) {
  77.  //   Serial.print("Zeilenpin=");
  78.  //   Serial.println(zeile[a]);
  79.     digitalWrite(zeile[a], 1);
  80.     for (int i = 0; i < 9; i++) {
  81.  //     Serial.print("Spaltenpin=");
  82.  //     Serial.println(spalte[i]);
  83.       digitalWrite(spalte[i], bitRead (buffer2[a], i));
  84.       digitalWrite(spalte[i], 0);
  85.     }
  86.     digitalWrite(zeile[a], 0);
  87.   }
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement