Orientierung bei max7290

Hallo zusammen,

ich habe auf http://www.instructables.com/id/Led-Matrix-Arduino-Clock/#comment eine tolle Uhr gesehen die ich gerne nachbauen würde.

Nachdem alle Bauteile bestellt waren habe ich mit dem Projekt begonnen. Leider stimmt die Ausrichtung der einzelnen Panels nicht (Bild anbei), hat jemand eine Idee wie ich das “quick&dirty” korrigiert bekomme ohne den kompletten Code umzuschreiben?

Hier der verwendete Code: http://blog.ouiaremakers.com/wp-content/uploads/formidable/ClockLedMatrix16x24.ino

Vielen Dank vorab.

Hallo,

sieht ja aus als wenn jedes individuell verdreht wäre. Du müßtest nun für jeden Matrixblock das Anzeigebitmuster rausfischen und auch individuell spiegeln etc. Kommste nicht wirklich besser alle runterzulöten und richtig einzulöten?

Du hast für diesen Code die falsche Hardware. Von Deinem mittleren Doppelpack müsste der obere Teil unter den linken Teil, der untere auf den rechten.

Ich sehe leider nicht, wie die Module gekoppelt sind, aber wenn Du alle Module 90° gegen die Uhr drehen kannst und dann von oben nach unten das linke, das mittlere und das rechte Modul vom Bild nimmst, dann solte die folgende _PLOT-Routine hoffentlich das gewünschte Ergebnis liefern.

void _PLOT (int x, int y, int color) {
  _DISPBUFFER [x][y] = (boolean) color;
  int matrix, i, j;
  matrix = (y >> 2) & 0xfe + x >> 3;
  i = 7 - (y % 8);
  j = 7 - (x % 8);
  lc.setLed(matrix, i, j, (boolean) color);
}

Ohne Garantie, ich kenne die Hardware nicht, sondern habe einfach vom Code und der Ausgabe auf dem Bild auf die Anordnung der 8x8-Matrizen geschlossen.

Hier mal die Rückseite der Matrix-Modulen …

Hätte gedacht es wäre einfacher eine Art “Umsetzer” in die Plot-Methode zu basteln … wenn die LED 0,0 angesprochen wird ist es hault zB. 4,6 usw usw.

Hätte gedacht es wäre einfacher eine Art "Umsetzer" in die Plot-Methode zu basteln ... wenn die LED 0,0 angesprochen wird ist es hault zB. 4,6 usw usw.

Äh, das ist doch genau das, was ich gemacht habe, ich habe einfach die dämlichen ifs durch kurze und schnelle Berechnungen ersetzt.

Und mit der Hardware sollte die Lösung, die ich skizziert habe, machbar sein.

Ich sehe kein Problem das mittelere Doppelfeld zu teilen und es zu den anderen 2 anzufügen und so nicht 3 - 2er-Module zu haben sondern 2 3-er-Module.
Dann stimmt alles.
Grüße Uwe

ihmSelbst:
Leider stimmt die Ausrichtung der einzelnen Panels nicht (Bild anbei), hat jemand eine Idee wie ich das “quick&dirty” korrigiert bekomme ohne den kompletten Code umzuschreiben?

Ich habe Dein Foto mal etwas bearbeitet, und schon scheint es zu passen:

MAX7290_Panels.png

Wenn Du die Module mechanisch anders anordnest, solltest Du die Lösung haben.

pylon:
Äh, das ist doch genau das, was ich gemacht habe, ich habe einfach die dämlichen ifs durch kurze und schnelle Berechnungen ersetzt.

Und mit der Hardware sollte die Lösung, die ich skizziert habe, machbar sein.

Hey,

um ehrlich zu sein habe ich Deinen Code zwar gesehen, aber nicht im Ansatz verstanden :o)
Habe jedenfalls mal die entsprechende Stelle abgeändert, aber irgendwie scheint da noch ein Fehler zu sein. Anbei sende ich mal ein Bild was nun angezeigt wird.

Da der Code ja die Zahlen seitlich "reinschiebt", sehe ich nach Deiner änderung, dass nur die zwei untersten Panels angesprochen werden, die oberen gar nicht. Habe zwar mal mit den Zahlen in deiner Funktion rumgespielt aber ohne Erfolg. Ich erkenne die 4 und die 5 wie auch den Strich, der anzeigt wie weit die Minute fortgeschritten ist.

Vielleicht ist es für Dich eine kleinigkeit, aber ich kann offen gesagt nichts mit deinem Code anfangen.

Trotzdem danke ich Dir vorab für Deine unterstützung.

Anbei sende ich mal ein Bild was nun angezeigt wird.

Das scheint nicht im Forum angekommen zu sein :-).

Da der Code ja die Zahlen seitlich "reinschiebt", sehe ich nach Deiner änderung, dass nur die zwei untersten Panels angesprochen werden, die oberen gar nicht.

Hmmh, dann muss ich mir das doch aufzeiichnen, wahrscheinlich hat mein Dreher im Kopf etwas falsch herum gedreht.

Wenn ich das Bild habe, versuche ich den Code zu korrigieren.

Hier noch das Bild…

Ich glaube, da ist mir wieder mal ein alter Fehler gelungen: Operator Precedence. Mit den richtigen Klammern sollte es hoffentlich funktionieren:

void _PLOT (int x, int y, int color) {
  _DISPBUFFER [x][y] = (boolean) color;
  int matrix, i, j;
  matrix = ((y >> 2) & 0xfe) + (x >> 3);
  i = 7 - (y % 8);
  j = 7 - (x % 8);
  lc.setLed(matrix, i, j, (boolean) color);
}

Die Hardware-Anordnung für meinen Code wäre übrigens so gedacht, dass das Modul mit den Kabel-Eingängen vom Arduino zuoberst wäre, die Zuleitungen müssten aber weiterhin von links kommen. Ich hoffe, das war verständlich.

Hey pylon,

wir nähern uns.. :slight_smile:
Sieht (fast) gut aus... Das mit der Drehung hat schonmal funktioniert...

Hier ein Video: - YouTube vom aktuellen Stand

Nur müsste die unteren 2 Panels mit den oberen 2 getauscht werden, dann wäre es perfekt :slight_smile:

Jetzt ist nur noch die Reihenfolge falsch. Das Modul mit den Kabeln vom Arduino muss zuoberst hin, dasjenige, das jetzt zuoberst ist, muss zuunterst hin, allerdings ohne dass Du die Module wieder drehst. Dann ist es korrekt. Müsste eigentlich gehen, auch wenn die Drähte hinten wahrscheinlich überkreuz kommen.

Herzlichen Dank!!

Hab wohl vom ganzen Weihnachtsshoppen ein Brett vor'm Kopf...

Manchmal sind es die einfachen Dinge die einen verzweifeln lassen :wink:

pylon:
Jetzt ist nur noch die Reihenfolge falsch.

Meine Fotomontage sollte zeigen, daß durch Ändern der Reihenfolge eine Lösung auch ohne Softwareanpassung möglich ist. Das Samenkorn dieses Hinweises fiel leider nicht auf fruchtbaren Boden.

Meine Fotomontage sollte zeigen, daß durch Ändern der Reihenfolge eine Lösung auch ohne Softwareanpassung möglich ist. Das Samenkorn dieses Hinweises fiel leider nicht auf fruchtbaren Boden.

Das Samenkorn war leider nicht fruchtbar, weil diese Anordnung mit der Hardware, die der OP verwendet, nicht möglich ist. Es sind keine Einzel-8x8-Module, sondern immer 2 sind fix zusammen, so dass nicht einfach ein Doppel-Modul geteilt werden kann. Wenn Du das Bild aus Post 3 ansiehst, wird es Dir wahrscheinlich klar.

Laut Bild in #3 haben die Doppelplatinen eine Sollbruchstelle und 6 Brücken die die Signale von einer zur nächsten Hälfte weiterleiten.
Mit etwas Geschick ist das zu machen.
Grüße Uwe

Laut Bild in #3 haben die Doppelplatinen eine Sollbruchstelle und 6 Brücken die die Signale von einer zur nächsten Hälfte weiterleiten.
Mit etwas Geschick ist das zu machen.

Ist zu machen, zugegeben. Ich bin trotzdem der Meinung, dass die Software-Änderung deutlich einfacher war :-).

pylon:
Ist zu machen, zugegeben. Ich bin trotzdem der Meinung, dass die Software-Änderung deutlich einfacher war :-).

Das bezweifle ich nicht. Aber auch die Hardwareänderung ist nicht schwierig oder arbeitsintensiv.

Grüße Uwe

pylon:
Es sind keine Einzel-8x8-Module, sondern immer 2 sind fix zusammen, so dass nicht einfach ein Doppel-Modul geteilt werden kann. Wenn Du das Bild aus Post 3 ansiehst, wird es Dir wahrscheinlich klar.

Ich habe mir das Bild angesehen und so wie Uwe eine mechanische und elektrische Trennstelle entdeckt. Es war ja eine "quick&dirty" Lösung angefragt und spätestetens die mechanische Trennung hätte schmutzig werden können.

pylon:
Ich bin trotzdem der Meinung, dass die Software-Änderung deutlich einfacher war :-).

Solche Einschätzungen sind immer sehr vom eigenen Wissensstand abhängig. Bei meinem MP3-Player habe ich auch eine Drehung versucht, aus Zeitgründen dann aber verworfen.

Du hast es ja aber toll gelöst, daher stimme ich Dir einfach mal zu :slight_smile: