Metainformationen zur Seite
  •  

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
computer:basteln:led-matrix-max7219 [2017/04/04 15:05]
gaubes [Pong]
computer:basteln:led-matrix-max7219 [2018/03/16 21:11] (aktuell)
Zeile 6: Zeile 6:
  
 ==== Initialisierung im Arduino Code ==== ==== Initialisierung im Arduino Code ====
 +Je nachdem, wie viele Matrizen man anschließen möchte, muss man ggf. die Variable '​maxInUse'​ auf die entsprechende Zahl anpassen.
 <code cpp> <code cpp>
 // ***************** ​  ​Beginn Initialisierung Matrix ​  ​************************ // ***************** ​  ​Beginn Initialisierung Matrix ​  ​************************
Zeile 13: Zeile 14:
 int clock = 4; int clock = 4;
  
-int maxInUse = 4;    //change this variable to set how many MAX7219'​s you'll use +int maxInUse = 3;    //change this variable to set how many MAX7219'​s you'll use
- +
-int e = 0;           // just a varialble+
  
 // define max7219 registers // define max7219 registers
Zeile 96: Zeile 95:
   maxAll(max7219_reg_shutdown,​ 0x01); ​   // not in shutdown mode   maxAll(max7219_reg_shutdown,​ 0x01); ​   // not in shutdown mode
   maxAll(max7219_reg_displayTest,​ 0x00); // no display test   maxAll(max7219_reg_displayTest,​ 0x00); // no display test
-  for (e = 1; e <= 8; e++) { // empty registers, turn all LEDs off+  for (int e = 1; e <= 8; e++) { // empty registers, turn all LEDs off
     maxAll(e, 0);     maxAll(e, 0);
   }   }
Zeile 108: Zeile 107:
 </​code>​ </​code>​
  
-==== Laufschrift ==== 
  
 ==== Pong ==== ==== Pong ====
-Um ein Pongspiel mit zwei Spielern auf ebenfalls zwei Led-Matrizen zu realiesieren,​ die man mit zwei Tasten steuert, kann man hinter die Initialisierung ​folgende ​Code-Zeilen setzen:+Um ein Pongspiel mit zwei Spielern auf ebenfalls zwei Led-Matrizen zu realiesieren,​ die man mit zwei Tasten steuert, kann man hinter die Initialisierung ​nachfolgende ​Code-Zeilen setzen: 
 + 
  
 <code cpp> <code cpp>
Zeile 384: Zeile 384:
  
 </​code>​ </​code>​
 +
 +In diesem Codebeispiel sind die Zahlen der Spielstände in eine extra Header-Datei ausgelagert,​ um den Code übersichtlicher zu machen. Um eine Header-Datei im Code zu includieren fügt man als erste Zeile des Codes
 +<code cpp>
 +#include "​HeaderDateiName.h" ​
 +</​code>​
 +ein.
 +
 +Die Header-Datei hat in unserem Beispiel folgenden Inhalt:
 +<code cpp>
 + #​define nul     127, 65, 127, 0       //4
 + #​define eins    0, 0, 127, 0          //4
 + #​define zwei    121, 73, 79, 0        //4
 + #​define drei    73, 73, 127, 0        //4
 + #​define vier    15, 8, 127, 0         //4
 + #​define fuenf   79, 73, 121, 0        //4
 + #​define sechs   127, 73, 121, 0       //4
 + #​define sieben ​ 1, 1, 127, 0          //4
 + #​define acht    127, 73, 127, 0       //4
 + #​define neun    79, 73, 127, 0        //4
 +</​code>​
 +
 +Anmerkung zur 0: Da null bereits durch die C++Syntax belegt ist, wurde hier statt dem Wort null, das Wort nul als Variable gesetzt.
  
 Hinweis: Das Pongspiel lässt sich auch mit einem schöneren und kürzeren Code realisieren. Obiger Code wird daher demnächst noch ersetzt. Hinweis: Das Pongspiel lässt sich auch mit einem schöneren und kürzeren Code realisieren. Obiger Code wird daher demnächst noch ersetzt.
 +
 +
 +==== Laufschrift ====
 +Im Folgenden ist ein Code, der eine Laufschrift auf die Matrizen projizieren kann. Wie man diesen Anpassen kann, findet man dadrunter beschrieben.
 +Vor diesem Code ist der Initialisierungscode einzufügen.
 +
 +<code cpp>
 +int txt = 6;
 +
 +unsigned long prev = 0;
 +const long interval = 200;        //​Durchlaufgeschwindigkeit ​                   ​
 +
 +int z[] = {
 +           ​Initialisieren,​
 +           R, A, T, S, G, Y, M, N, A, S, I, U, M, _,
 +           P, E, I, N, E
 +           };
 +           
 +int x = 119;          // Zustände in z[]   --- siehe Buchstaben.h
 +
 +int h[] = {24,​23,​22,​21,​20,​19,​18,​17,​16,​15,​14,​13,​12,​11,​10,​9,​8,​7,​6,​5,​4,​3,​2,​1};​
 +
 +
 +void loop () {
 +  ​
 +  unsigned long cur = millis();
 +  ​
 +  if(cur - prev >= interval){
 +    for (int i = 0; i < 24; i++){
 +      h[i]++;
 +    }
 +    prev = cur;
 +  }
 +  ​
 + for (int i = 0; i < 24; i++){
 +   ​if(h[i] == x){
 +     h[i] = 0;
 +   ​} ​
 + ​} ​
 +
 +  maxOne(1,​8,​z[h[0]]);​
 +  maxOne(1,​7,​z[h[1]]);​
 +  maxOne(1,​6,​z[h[2]]);​
 +  maxOne(1,​5,​z[h[3]]);​
 +  maxOne(1,​4,​z[h[4]]);​
 +  maxOne(1,​3,​z[h[5]]);​
 +  maxOne(1,​2,​z[h[6]]);​
 +  maxOne(1,​1,​z[h[7]]);​
 +  maxOne(2,​8,​z[h[8]]);​
 +  maxOne(2,​7,​z[h[9]]);​
 +  maxOne(2,​6,​z[h[10]]);​
 +  maxOne(2,​5,​z[h[11]]);​
 +  maxOne(2,​4,​z[h[12]]);​
 +  maxOne(2,​3,​z[h[13]]);​
 +  maxOne(2,​2,​z[h[14]]);​
 +  maxOne(2,​1,​z[h[15]]);​
 +  maxOne(3,​8,​z[h[16]]);​
 +  maxOne(3,​7,​z[h[17]]);​
 +  maxOne(3,​6,​z[h[18]]);​
 +  maxOne(3,​5,​z[h[19]]);​
 +  maxOne(3,​4,​z[h[20]]);​
 +  maxOne(3,​3,​z[h[21]]);​
 +  maxOne(3,​2,​z[h[22]]);​
 +  maxOne(3,​1,​z[h[23]]);​
 +
 +}
 +
 +</​code>​
 +Um eine eigene Schrift anzeigen zu lassen, ist lediglich notwendig in <code cpp>​int ​ z[] ={ Initialisieren,​...};​ </​code>​ hinter "​Initialisieren"​ die gewollten Buchstaben einzufügen. Anschließend muss die Länge der Nachricht in <code cpp> int x =...;</​code>​ angepasst werden. Hierzu werden 32 Zeichen für die Initialisierung benötigt und die restlichen Zahlen, die noch drauf addiert werden sollen, ist die Anzahl der Zeichen der jeweiligen Buchstaben, bzw. die Zahl, die in der "​Buchstaben.h"​ Datei als Kommentar hinter dem jeweiligen Buchstaben finden lassen. \\
 +Bei Ratsgymnasium Peine ist daher der Wert 119.
 +\\
 +\\
 +Schließlich muss hier noch die Header-Datei "​Buchstaben.h"​ noch includiert werden.
 +<code cpp> ​
 +#include "​Buchstaben.h"​
 +</​code>​
 +Damit der Compiler die Header-Datei finden kann, muss sie im gleichen Ordner gespeichert sein, wie das gesamte Projekt. Die Arduino-Entwicklungsumgebung hilft dabei, indem man im Fenster mit dem geöffneten Code einen Tab hinzufügt und diese Datei entsprechend "​Buchstaben.h"​ nennt und anschließen den zugehörigen Inhalt hinzufügt.\\
 +Der Inhalt dieser Datei ist folgender:
 +<code cpp>
 +// Alphabet Definition
 +
 + #​define A  126, 17, 17, 126, 0        //5
 + #​define B  127, 73, 73, 54, 0         //5
 + #​define C  62, 65, 65, 65, 0          //5
 + #​define D  127, 65, 65, 62, 0         //5
 + #​define E  127, 73, 73, 65, 0         //5
 + #​define F  127, 9, 9, 1, 0            //5
 + #​define G  62, 65, 81, 50, 0          //5
 + #​define H  127, 8, 8, 127, 0          //5
 + #​define I  65, 127, 65, 0             //4
 + #​define J  65, 65, 63, 0              //4
 + #​define K  127, 20, 34, 65, 0         //5
 + #​define L  127, 64, 64, 0             //4
 + #​define M  127, 2, 12, 2, 127, 0      //6
 + #​define N  127, 4, 8, 16, 127, 0      //6
 + #​define O  62, 65, 65, 62, 0          //5
 + #​define P  127, 9, 9, 6, 0            //5
 + #​define Q  62, 65, 81, 33, 94, 0      //6
 + #​define R  127, 25, 41, 70, 0         //5
 + #​define S  38, 73, 73, 50, 0          //5
 + #​define T  1, 1, 127, 1, 1, 0         //6
 + #​define U  63, 64, 64, 63, 0          //5
 + #​define V  31, 32, 64, 32, 31, 0      //6
 + #​define W  127, 32, 28, 32, 127, 0    //6
 + #​define X  99, 20, 8, 20 ,99, 0       //6
 + #​define Y  3, 4, 120, 4, 3, 0         //6
 + #​define Z  97, 81, 73, 69 ,67, 0      //6
 + 
 + #​define AK  32, 84, 84, 120, 0        //5
 + #​define BK  63, 72, 72, 48, 0         //5
 + #​define CK  48, 72, 72, 72, 0         //5
 + #​define DK  48, 72, 72, 127, 0        //5
 + #​define EK  56, 84, 84, 88, 0         //5
 + #​define FK  126, 9, 1, 0              //4
 + #​define GK  76, 146, 146, 124, 0      //5
 + #​define HK  127, 8, 8, 112, 0         //5
 + #​define IK  122, 0                    //2
 + #​define JK  64, 136, 122, 0           //4
 + #​define KK  127, 16, 40, 68, 0        //5
 + #​define LK  63, 64, 64, 0             //4
 + #​define MK  120, 8, 112, 8, 120, 0    //6
 + #​define NK  8, 112, 8, 8, 112, 0      //6
 + #​define OK  48, 72, 72, 48, 0         //5
 + #​define PK  252, 36, 36, 24, 0        //5                (Alternative:​ 248, 72, 72, 48, 0)
 + #​define QK  24, 36, 36, 252, 0        //5                (Alternative:​ 48, 72, 72, 248, 0)
 + #​define RK  8, 112, 8, 8, 0           //5
 + #​define SK  72, 84, 84, 36, 0         //5
 + #​define TK  8, 63, 72, 64, 0          //5
 + #​define UK  56, 64, 64, 56, 0         //5
 + #​define VK  24, 32, 64, 32, 24, 0     //6
 + #​define WK  56, 64, 48, 64, 56, 0     //6
 + #​define XK  72, 48, 48, 72, 0         //5
 + #​define YK  4, 8, 112, 8, 4, 0        //6                (Alternative:​ 24, 160, 160, 120, 0)
 + #​define ZK  72, 104, 88, 72, 0        //5
 + 
 + #​define nul     127, 65, 127, 0       //4
 + #​define eins    0, 0, 127, 0          //4
 + #​define zwei    121, 73, 79, 0        //4
 + #​define drei    73, 73, 127, 0        //4
 + #​define vier    15, 8, 127, 0         //4
 + #​define fuenf   79, 73, 121, 0        //4
 + #​define sechs   127, 73, 121, 0       //4
 + #​define sieben ​ 1, 1, 127, 0          //4
 + #​define acht    127, 73, 127, 0       //4
 + #​define neun    79, 73, 127, 0        //4
 + 
 + #​define Fragezeichen ​   2, 1, 89, 6, 0  //5
 + #​define Ausrufezeichen ​ 79, 0           //2
 + #​define Punkt           64, 0           //2
 + #​define Appostroph ​     5, 3, 0         //3
 + #​define Komma           160, 96, 0      //3
 + #​define _               0, 0            //2    (Leerzeichen)
 + 
 + #​define Plus    8, 8, 62, 8, 8, 0         //6
 + #​define Minus   8, 8, 8, 8, 8, 0          //6
 + #​define Mal     20, 8, 62, 8, 20, 0       //6
 + #​define Geteilt 32, 16, 8, 4, 2, 0        //6
 + #​define Gleich ​ 20, 20, 20, 20, 20, 0     //6
 + 
 + #​define Initialisieren 0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0, 0, 0  //24        Pro Matrix 8x 0 dazu
 +
 + #​define Herz  28, 62, 126, 252, 126, 62, 28, 0                           //8
 +
 +
 +</​code>​
 +
 +