UTFT Buttons als Bitmaps von SD-Karte

Hallo,

ich will für mein Projekt ein Touch-Diplay Menuführung. Dazu hab ich mir ein Arduiono Mega 2560 mit 3.2" Display geholt.

Meine ersten Gehversuche mit den Arduiono sind soweit geglückt, dank der Libs von Henning Karlsen.
Seine Libs funktionieren meist ganz gut und schnell. Daher würde ich gerne mit fertigen Libs weiter arbeiten.

Es gibt ja fertige Beispiele um Bitmaps von SD-Karten zu lesen.

Mit:
myFiles.loadBitmap(0, 13, 40, 40, Bilder[variable]);
...
krige ich das auch hin.

und mit:
but1 = myButtons.addButton( 10, 10, 40, 40, Bilder);
...
bekomme ich auch Bilder als Buttons vom Atmel auf das Display.

Aber wie bekomme ich jetzt die Bilder von der SD-Karte in die Buttons?

Mit:
but1 = myButtons.addButton( 10, 10, 40, 40, Bilder[variable] );
...
bekomme ich aber nur die Namen der Bilder in den Buttons angezeigt.

Ich bin mit der Syntax von Arduino noch nicht sehr vertraut, daher weiß ich nicht wie ich das richtig übergeben muss, damit das Verstanden wird.

Wenn ich mehr Code anhängen soll, dann kann ich das gerne machen.

Ich hoffe ihr könnt mir ein paar Tipps geben.

Das geht so generell nicht. UTFT_Buttons kann nur Bilder aus dem Flash verarbeiten die dort als Byte Array vorliegen

Um Bilder von SD zu lesen gibt es UTFT_tinyFAT, das du glaube ich schon gefunden hast. Du kannst mit UTFT_Buttons einen Button zeichnen und dann darüber ein Bitmap legen. Also in zwei getrennten Schritten.

Eine Macke dabei ist, dass man da nicht so einfach Buttons ohne Umrandung (das geht nur mit BUTTON_BITMAP) oder einem vollen Rechteck, statt einem gerundeten zeichnen kann. Da könnte man aber die Library anpassen.

Hallo,

das ist ja schade, das das nicht geht, aber das mit dem überlagern ist ein wenn auch sehr un elegante art das zulösen, danke.

Mit den Bibliotheken hab ich aber auch noch so meine Probleme. Ich suche für die I²C Schnittstelle die Definitionen der einzelnen Register für das Setup
also sowas wie:
TWBR=...; TWAR=...;

und in der Interruptroutiene suche ich die Statusabfrage was jetzt aktuell auf dem Bus los ist, da gibt es ja auch ein Hardware Register für, wenn ich mich nicht irre.

Hardware Register werden im Datenblatt des Prozessors aufgelistet und erklärt. Das ist aber ein völlig anderes Thema.

Ja nee, genau deswegen ja, die Bits müssen doch irgendwo gesetzt werden, von irgend einem, da ich es nicht gemacht habe muss es ja der Compiler irgendwo machen.
Aber so verschwenderisch, wie die Bibliotheken hier mit dem Speicher umgehen, schreibe ich mir das glaube lieber alles selbst, sonst ist der riesige Speicher des Atmel doch gleich voll.

Aber danke für die Info :wink:

Mit einem Mega musst du dich da schon sehr anstrengen. Im Gegensatz zu AVR C braucht die Arduino Software zwar einiges an Speicher, aber mit 256kB Flash und 8kB RAM kann man ne Menge machen.

Die Low Level I2C Funktionen sind in x:\Arduino\hardware\arduino\avr\libraries\Wire\utility\twi.c