Schönen guten Morgen, ich habe in den letzten Tagen versucht mir eine LED-Matrix zu programmieren. Da ich leider noch nicht so fit bin habe ich erstmal geschaut wie man das Programm so schreibt. Da habe ich eins gefunden und dazu habe ich ein paar Fragen. // definiere Zeilen und Spalten als Array vom Typ uint8_t uint8_t rows[7] = {1, 2, 3, 4, 5, 6, 7}; uint8_t columns[5] = {8, 9, 10, 11, 12}; void setup() { for (int i = 0; i < 7; i++) { pinMode(rows[i], OUTPUT); } for (int i = 0; i < 5; i++) { pinMode(columns[i], OUTPUT); } } void loop() { showMatrix(); } // Definiere eine 7x5-Matrix. uint8_t ist eine vorzeichenlose 8- // Bit-Integer-Variable. Setze das Muster so, dass eine Diagonale // angezeigt wird. uint8_t matrix[7][5] = { { 1, 0, 0, 0, 0}, { 0, 1, 0, 0, 0}, { 0, 1, 0, 0, 0}, { 0, 0, 1, 0, 0}, { 0, 0, 1, 0, 0}, { 0, 0, 0, 1, 0}, { 0, 0, 0, 0, 1}, }; void showMatrix() { // durchlaufe alle fünf Spalten for (int x = 0; x < 5; x++) { // setze vorherige Zeile auf 0 // für jede Zeile setze den Wert der Matrix auf den //entsprechenden Pin for (int y = 0; y < 7; y++) { digitalWrite(rows[y], !matrix[y][x]); } // setze aktuelle Spalte auf 1 digitalWrite(columns[x], 1); delay(1); // Lösche aktuelle Spalte digitalWrite(columns[x], 0); } } mich würde interessieren was dieses "uint8_t" für ne Bedeutung hat?_? Eig ist es ja ne definietion, aber diesen Befehl kenn ich garnicht und finden tu ich den auch nicht. Und was ich auch noch gerne wisen würde, wie mich jetz nen 2. Buchstaben einfügen kann ( halt nen weiteres Bild ) und wie das dann z.B. zum Blinken gebracht werden kann?.^^ Hab schon ein wenig mit dem Programm gespielt, aber noch nicht weit gekommen. Wäre nett wenn ihr mir Helfen könnt. Gruss
uint8_t ist ein Typdefinition. Statt uint8_t könnte man auch "byte" schreiben. Also byte rows[7] = {1, 2, 3, 4, 5, 6, 7}; uint8_t ist aber wesentlich genauer definiert: die Abkürzung heißt unsigned integer 8bit type
Hallo, wie muss ich das machen, wenn ich mehrere Buchstaben oder Zeichen anzeigen will? Iwie klappt das bei mir nicht?_?
Du solltest sinnvollerweise das ganze Konzept ändern. Die Anzeige der Matrix selber, also das was jetzt in showMatrix passiert, müsste man umbauen und die Anzeige selber in eine ISR verlagern. Das ist die sinnvolle Variante. Die pragmatische Variante ist es, einfach nacheinander das Array matrix mit jeweils einer anderen Belegung zu versehen und dann jedesmal showMatrix eine gewisse Anzahl mal aufzurufen und so eine Anzeigedauer zu erreichen. Danach dann den nächsten Buchstaben, etc. in etwa so
1 | uint8_t bild1[7][5] = { |
2 | { 0, 0, 0, 0, 0}, |
3 | { 0, 0, 0, 0, 0}, |
4 | { 0, 0, 0, 0, 0}, |
5 | { 0, 0, 0, 0, 0}, |
6 | { 0, 0, 0, 0, 0}, |
7 | { 0, 0, 0, 0, 0}, |
8 | { 1, 0, 0, 0, 0}, |
9 | };
|
10 | |
11 | uint8_t bild2[7][5] = { |
12 | { 0, 0, 0, 0, 0}, |
13 | { 0, 0, 0, 0, 0}, |
14 | { 0, 0, 0, 0, 0}, |
15 | { 0, 0, 0, 0, 0}, |
16 | { 0, 0, 0, 0, 0}, |
17 | { 1, 0, 0, 0, 0}, |
18 | { 0, 0, 0, 0, 0}, |
19 | };
|
20 | |
21 | uint8_t bild3[7][5] = { |
22 | { 0, 0, 0, 0, 0}, |
23 | { 0, 0, 0, 0, 0}, |
24 | { 0, 0, 0, 0, 0}, |
25 | { 0, 0, 0, 0, 0}, |
26 | { 1, 0, 0, 0, 0}, |
27 | { 0, 0, 0, 0, 0}, |
28 | { 0, 0, 0, 0, 0}, |
29 | };
|
30 | |
31 | uint8_t bild4[7][5] = { |
32 | { 0, 0, 0, 0, 0}, |
33 | { 0, 0, 0, 0, 0}, |
34 | { 0, 0, 0, 0, 0}, |
35 | { 1, 0, 0, 0, 0}, |
36 | { 0, 0, 0, 0, 0}, |
37 | { 0, 0, 0, 0, 0}, |
38 | { 0, 0, 0, 0, 0}, |
39 | };
|
40 | |
41 | |
42 | void copy( uint8_t what[7][5] ) |
43 | {
|
44 | memcpy( matrix, what, 7*5*sizeof(uint8_t) ); |
45 | }
|
46 | |
47 | void display( uint8_t what[7][5] ) |
48 | {
|
49 | uint8_t i; |
50 | |
51 | copy( what ); |
52 | for( i = 0; i < 200; ++i ) |
53 | showMatrix(); |
54 | }
|
55 | |
56 | void loop() |
57 | {
|
58 | display( bild1 ); |
59 | display( bild2 ); |
60 | display( bild3 ); |
61 | display( bild4 ); |
62 | display( bild3 ); |
63 | display( bild2 ); |
64 | }
|
Aber wie gesagt: Das ist im Grunde alles nicht tragfähig. Das ganze Konzept gehört geändert. Und das fängt schon mal damit an, dass das matrix Array so wie es jetzt ist, Schwachsinn ist.
Ah okey danke. Ja wie gesagt ich bin in der ganzen Geschichte noch net so fit. Das hab ich auch net selber geschrieben, sondern als beispiel genommen, um das ganze erst einmal zu verstehen, wie man dort ne Matrix ansteuert. Gruss
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.