Forum: Mikrocontroller und Digitale Elektronik Arduino IKEA Coffee table hack


von Tobias .. (thefloe)


Lesenswert?

Hallo,

nachdem ich mein Projekt unter 
Beitrag "Re: Zeigt her Eure Kunstwerke !" vorgestellt habe, 
geht es mir jetzt darum die Ansteuerung zu optimieren (um nicht in dem 
Thread weiter zu diskutieren). Ich verwende ein Arduino Board mit 
ATMega328@20MHz und 3 Display Board von Sureelectronics 
(http://www.sureelectronics.net/goods.php?id=147).
Ein Display besteht aus 64x32 bicolor LEDs und wird über 4 row select 
pins A,B,C,D (=16 Reihen), R1 (Rot obere Display-Hälfte), R2 (untere 
Hälfte), G1, G2 und EN, CLK und LATCH (für die 74HC595 Schieberegister) 
angesteuert.

Zu Beginn habe ich die Display's kaskadiert. Dies ergibt 2x16 Reihen a 
192 bit pro refresh. Die erzielte Frame Rate war gering. Dann habe ich 
A,B,C,D sowie EN, CKL und LATCH gemeinsam verbunden und R1...G2 pro 
Display einzeln angesteuert (19 pins!). Frame rate war gering höher aber 
immer noch nicht top. Im Thread kam der Vorschlag R1...G2 gemeinsam zu 
verbinden und EN & LATCH pro Display einzeln anzusteuern. Ich erkenne 
hier jetzt noch keinen Vorteil, werde es aber mal testen.

Die meiste Zeit geht sowieso bei der Umrechnung des Display Buffers auf 
die Display Hardware drauf. Da ich den Buffer als 96x64 bit ausgelegt 
habe, das Display aber anders herum beladen werden muss. Eine 
Möglichkeit ist die Umrechnung nicht bei der Display-Refresh Methode 
durchzuführen sondern in den setPixel Funktionen, dann ist jedoch ein 
direktes Schreiben in den Buffer nicht mehr möglich.

Wie würdet ihr die Ansteuerung lösen?

Danke für Ideen und Vorschläge,
Tobias

von Hauke R. (lafkaschar) Benutzerseite


Lesenswert?

In den buffer wird doch wesentlich seltener geschrieben als davon 
gelesen (refresh) daher macht es doch sinn, den buffer so aufzubauen, 
dass es möglichst einfach ist ihn auszulesen. Aber sehr schickes 
Projekt! Vielleicht könntest du auch auf XMega umsteigen, da 32MHz und 
Eventsystem etc. Das könnte das ganze etwas schneller machen.

von Tobias .. (thefloe)


Lesenswert?

Habe jetzt eine kleine Animation auf dem Display am Laufen. 64x64 Pixel 
mit 6 Frames von einer GIF Animation exportiert.

http://www.youtube.com/watch?v=gubQbWLMAnI

von Tobias .. (thefloe)


Angehängte Dateien:

Lesenswert?

Habe jetzt die setPixel Funktionen und das schreiben auf das Display 
optimiert. Somit schaffe ich ca. 50 Bilder pro Sekunde vom 
Flash-Speicher auf das Display zu schreiben. Werde nach kleinen 
Anpassungen auch mein Python Skript veröffentlichen mit dem ich die GIF 
Bilder exportierte.

Habe mir auch alte NES Controller besorgt und ein kleines Snake 
programmiert. Video gibts hier: 
http://tobiscorner.floery.net/projects/avr/arduino-ikea-coffee-table-hack-–-snake/232

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
Noch kein Account? Hier anmelden.