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
Dann versuch doch mal
1 | prog_uchar CH[] PROGMEM = {...} |
Was sagt er da?!
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
Dann mach es einfach so:
1 | const unsigned char CH[] PROGMEM = {...} |
Das muss dann aber funktionieren, ansonsten wirf deine Arduino Umgebung an die Wand :D
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!
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?!
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 ;)
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?
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.