LED Matrix MAX7219 8x8 an Arduino will nicht.

Gast #4508597
Lesenswert?

Hallo,

ich versuche gerade solche 8x8 Matrix zum Laufen zu bringen und habe mir 
auf die schnelle mal einen Shetch aus dem Netz gefischt.
Dieser bricht aber mit Fehler ab und nach Internetsuche soll das wohl 
mit einer zu neuen IDE zusammnehängen. Ich habe die Version Arduino 
1.6.7.
Fehler:

sketch_mar15a:24: error: 'prog_uchar' does not name a type

 PROGMEM prog_uchar CH[] = {

         ^

C:\Users\Egon\Documents\Arduino\sketch_mar15a\sketch_mar15a.ino: In 
function 'void printCharWithShift(char, int)':

sketch_mar15a:182: error: 'CH' was not declared in this scope

   memcpy_P(buffer, CH + 7*c, 7);

                    ^

exit status 1
'prog_uchar' does not name a type

Angehangen habe ich mal den vollständigen Sketch.
Meine eigenen Versuche bringen aber eher mehr Fehler wenn ich den Hilfen 
aus dem Netz dazu folge. Demnach wäre "prog_char" mit "const char" zu 
ersetzen, aber das funktioniert eher weniger.
Wäre nett wenn mir Jemand helfen würde ich es richtig machen muß.
Danke, Egon
Angehängte Dateien:
Gast #4508809
Lesenswert?

das sieht dann so aus:

sketch_mar15a:24: error: 'prog_uchar' does not name a type

 prog_uchar CH[] PROGMEM = {...}

 ^

sketch_mar15a:26: error: expected unqualified-id before numeric constant

 3, 8, B00000000, B00000000, B00000000, B00000000, B00000000, // space

 ^

sketch_mar15a:121: error: expected declaration before '}' token

 };

 ^

exit status 1
'prog_uchar' does not name a type
Gast #4522676
Lesenswert?

Einfach dann 90° verdreht schieben. Der Max oder das Display hat keinen 
"Klatsch" weg. Ich gehe davon aus das das Display Common Kathode ist, 
statt Common Anode - das resultiert dann in einem 90° gedrehtem Ausgang 
des Max zu den LEDs.

Das Problem dabei ist, du musst dir deine Routine für den Max dann 
selbst schreiben, ist aber kein großes Hexenwerk. Und da lernst du 
wirklich viel - vor allem wie der Max an sich arbeitet.

Das ist halt der Nachteil bei der Arduino Geschichte, Solange alles 
"Standart" ist, funktioniert das Zeugs (Sketches nennt ihr das oder?!) 
aber sobald etwas anders ist, funktioniert nix mehr und die "Maker" 
wissen sich nicht mehr selbst zu helfen.

Nimm dir das Datenblatt zum Max... schau wie die Timings und I2C 
Reihenfolge sind und los gehts!
Gast #4523007
Lesenswert?

Ach und noch was:
1
  while (Serial.available() > 0){
2
    byte c = Serial.read();
3
    Serial.println(c, DEC);
4
    printCharWithShift(c, 100);
5
  }
6
  delay(100);

Überdenke dir das obige nochmal, mach dir ein Ablaufdiagramm und gehe 
schritt für Schritt durch:

Du sendest ein UART String vom Rechner zu µC: "Hallo Welt!"... einmal in 
der Sekunde z.b. (Und das ist schon verdammt lang).

Deine "Routine" zum auslesen des UART Buffers läuft in einer While 
Schleife solange der Buffer leer ist. Das ist schonmal richtig so. Wobei 
man das in einer Interrupt Routine macht (Es sei denn es ist ein 
Mega32u4 etc... welche über USB keinen Interrupt bereitstellen).

Jedoch blockst du diese Routine mit "printCharWithShift(c,100)" jedesmal 
um 100ms. Der String hat nun 11 Zeichen, das sind 1100ms - über eine 
Sekunde in dem du die Routine blockst. Kommt jetzt aber in der nächsten 
Sekunde der nächste String, verhasptüdelt sich alles.

Nach der Uart-Routine hast du nochmal ein "delay(100);" - lass das doch 
weg, den brauchst du garnicht - lass ihn doch gleich wieder prüfen ob 
ein Zeichen im UART ist. Ob ein µC nun mit nem "nop" beschäftigt ist 
oder auf nen Zeichen prüft ist im Rille, aber Zeichen prüfen macht mehr 
Sinn. ;)

Was nun "m.ShiftLeft(bool, bool)" ist, weiß ich nicht, aber ich denke 
das ist ne Setup Einstellung, und gehört damit in die Init Routine.

Welcher µC steckt denn im Arduino?!
#5009297
Lesenswert?

Hi

Wenn der Sketch für eine ältere Arduino-Version gedacht war - was 
spricht gegen einen Versuch mit einer 'älteren Arduino-Umgebung'?
Diese müsste den Sketch ja korrekt compilieren.
Ausnahme: Die ältere Umgebung kann mit dem neueren Arduino Nichts 
anfangen - dann hättest Du aber zumindest ein brennbares File für einen 
der älteren Chips - vll. auch eine Überlegung wert.

MfG

PS: Ja, den roten Text hatte ich gesehen ;)
#5009418
Lesenswert?

Peter schrieb:
> Gibt es inzwischen eine Lösung für das Problem?


Für die Arduino-IDE  und diese 8x8 Matrix-Module mit MAX7219 und roten 
LEDs gibt es im Internet reihenweise Codes, das Internet ist voll davon.

Wenn ein Sketch mal nicht funktioniert, bzw. mit Deiner IDE-Version 
nicht funktioniert, dann nimmst Du eben den nächsten. Der ist im 
Zweifelsfall genau einmal Googeln weit entfernt.

Wo ist das Problem?

Hast Du irgendwelche speziellen Wünsche, was Du auf dem Modul anzeigen 
möchtest?

ASCII-Zeichen? Eigene Muster? Laufschrift?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren