Advertisement
Drakkheen

Untitled

Mar 11th, 2021
837
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. char meinText[] = "TEST_]";                               // Variable mit dem anzuzeigenden Text
  2. const int Geschwindigkeit = 400;                          // Buchstabenwechsel nach xx Millisekunden
  3.  
  4. const byte zeile[] = {8, 7, 6, 5, 4};                     // PINs für die Zeilen der Matrix (GND)
  5. const byte spalte[] = {9, 10, 11, 12, 13};                // PINs für die Spalten der Matrix (VCC)
  6.  
  7. // Buchstabentabelle
  8. const byte charTable[][5] = {
  9.   {0b01100, 0b10010, 0b11110, 0b10010, 0b10010},          //A
  10.   {0b11100, 0b10010, 0b11110, 0b10010, 0b11100},          //B
  11.   {0b01110, 0b10000, 0b10000, 0b10000, 0b01110},          //C
  12.   {0b11100, 0b10010, 0b10010, 0b10010, 0b11100},          //D
  13.   {0b11110, 0b10000, 0b11100, 0b10000, 0b11110},          //E
  14.   {0b11110, 0b10000, 0b11100, 0b10000, 0b10000},          //F
  15.   {0b01110, 0b10000, 0b10110, 0b10010, 0b11110},          //G
  16.   {0b10010, 0b10010, 0b11110, 0b10010, 0b10010},          //H
  17.   {0b00100, 0b00100, 0b00100, 0b00100, 0b00100},          //I
  18.   {0b00100, 0b00100, 0b00100, 0b10100, 0b11100},          //J
  19.   {0b10010, 0b10100, 0b11000, 0b10100, 0b10010},          //K
  20.   {0b10000, 0b10000, 0b10000, 0b10000, 0b11110},          //L
  21.   {0b10001, 0b11011, 0b10101, 0b10001, 0b10001},          //M
  22.   {0b10010, 0b11010, 0b10110, 0b10010, 0b10010},          //N
  23.   {0b01100, 0b10010, 0b10010, 0b10010, 0b01100},          //O
  24.   {0b11100, 0b10010, 0b10010, 0b11100, 0b10000},          //P
  25.   {0b01110, 0b10001, 0b10101, 0b10010, 0b01101},          //Q
  26.   {0b11100, 0b10010, 0b11100, 0b10010, 0b10010},          //R
  27.   {0b11110, 0b10000, 0b11110, 0b00010, 0b11110},          //S
  28.   {0b11111, 0b00100, 0b00100, 0b00100, 0b00100},          //T
  29.   {0b10010, 0b10010, 0b10010, 0b10010, 0b01100},          //U
  30.   {0b10001, 0b10001, 0b10001, 0b01010, 0b00100},          //V
  31.   {0b10001, 0b10001, 0b10101, 0b10101, 0b01110},          //W
  32.   {0b10010, 0b10010, 0b01100, 0b10010, 0b10010},          //X
  33.   {0b10001, 0b10001, 0b01110, 0b00100, 0b00100},          //Y
  34.   {0b11110, 0b00010, 0b00100, 0b01000, 0b11110},          //Z
  35.   {0b10001, 0b00100, 0b00000, 0b01110, 0b10001},          // [ => frown
  36.   {0b00000, 0b00000, 0b00000, 0b00000, 0b00000},          // <== don't use \ kicks you out
  37.   {0b01010, 0b00000, 0b00100, 0b10001, 0b01110},          // ] => smile
  38.   {0b11111, 0b11111, 0b11111, 0b11111, 0b11111},          // ^ => full
  39.   {0b00000, 0b00000, 0b00000, 0b00000, 0b00000},          // _ => space
  40. };
  41.  
  42. const byte firstChar = 'A';                               // mit welchem Zeichen beginnt die Buchstabentabelle
  43. unsigned long LastAction = 0;                             // Variable zur Messung der Zeit zwischen zwei Buchstaben
  44. unsigned long CurrentTime = 0;                            // Variable zur Messung der Zeit zwischen zwei Buchstaben
  45.  
  46. void setup() {    
  47.   for (int i = 4; i < 14; i++) {                          // zählt von 4 bis 13
  48.     pinMode(i, OUTPUT);                                   // setzt den PIN auf Ausgang
  49.   }
  50. }
  51.  
  52. void loop() {
  53.   wort(meinText, sizeof(meinText) - 1);                   // ruft die Unterfunktion zur "Textzerlegung" auf
  54. }
  55.  
  56. // Unterfunktion zum Zerlegen des Textes in einzelne Buchstaben
  57. void wort(char *toPrint, size_t len)
  58. {
  59.   static size_t i = 0;          
  60.   CurrentTime = millis();                                 // Timer initialisieren
  61.  
  62.   // wandelt den Buchstaben in eine Indexvariable für die Buchstabentabelle um
  63.   byte myIndex = toPrint[i] - firstChar;                  // ASCII minus erstem Zeichen somit 0 für das erste Zeichen in der Buchstabentabelle
  64.  
  65.   if (CurrentTime - LastAction > Geschwindigkeit) {       // Timer Funktion Anfang
  66.     i++;                                                  // erhöht den Zähler für die Buchstaben in wort()
  67.     if (i == len) {                                       // wenn der Zähler gleich ist mit der Wortlänge
  68.       i = 0;                                              // wird er wieder auf 0 gesetzt
  69.     }
  70.     LastAction = CurrentTime;                             // Timer aktualisieren
  71.   }
  72.   zeige(charTable[myIndex]);                              // ruft die Funktion zeige() zum Anzeigen des Buchstaben auf
  73. }
  74.  
  75. // Unterfunktion zur Ausgabe eines Buchstaben an die 5x5 LED Matrix
  76. void zeige(const byte buffer2[]) {
  77.   for (int a = 0; a <= 4; a++) {
  78.     digitalWrite(zeile[a], 1);
  79.     for (int i = 0; i < 5; i++) {
  80.       digitalWrite(spalte[i], bitRead (buffer2[a], i));
  81.       digitalWrite(spalte[i], 0);
  82.     }
  83.     digitalWrite(zeile[a], 0);
  84.   }
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement