Metainformationen zur Seite
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
computer:basteln:led-matrix-max7219 [2017/04/04 21:07] gaubes [Laufschrift] |
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 |
// define max7219 registers | // define max7219 registers | ||
Zeile 106: | Zeile 107: | ||
</code> | </code> | ||
- | ==== Laufschrift ==== | ||
- | Im Folgenden ist ein Code, der eine Laufschrift auf die Matrizen projizieren kann. Wie man diesen Anpassen kann, findet man dadrunter beschrieben. | ||
- | <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[0] = 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[] ={...} </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. 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> | ||
- | |||
- | |||
- | Hinweis: Code wird noch überarbeitet | ||
==== 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 nachfolgende 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: | ||
Zeile 566: | Zeile 408: | ||
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> | ||
+ | |||
+ |