Verständnis Problem mit Arduino "C" Programm

OP #2035157
Lesenswert?
• ▲
▼
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
#2035407
Lesenswert?
• ▲
▼
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.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.