Go Down

Topic: SD Image Daten auf's 3.2 TFT  (Read 975 times) previous topic - next topic

Epae

Habe Schwierigkeiten eine c. Datei von der SD Card auf das 3.2 TFT zubringen.
Als Unterdatei klappt dies Problemlos, nur eben nicht von der SD Card gelesen.
Unten mein (kläglicher) Versuch. Bin halt immer noch Anfänger.

 #include <SD.h>
 #include <UTFT.h>
 #include <avr/pgmspace.h>
 UTFT myGLCD(ITDB32S,38,39,40,41);
 const int chipSelect = 53;
 extern unsigned int bildchen[0x1FA4];
 void setup()
 {
 pinMode(53, OUTPUT);
 File dataFile = SD.open("bildchen.c");
 myGLCD.InitLCD(LANDSCAPE);
 myGLCD.fillScr(255, 255, 255);
 myGLCD.drawBitmap (110, 70, 90, 90, bildchen, 1);
 dataFile.close();
 }   
 void loop() { }

Verwende die UTFT Library.
Würde mich sehr freuen wenn jemand gleich die passenden Änderungen machen könnte.

Die 90x90 Pixel Bildchen fänden Anwendung in einer von mir gemachten Touchscreen
Steuerung. Sie existiert, funktioniert und ist sehr umfangreich. Leider sind meine Touch-Symbole
bisher zu abstrakt, und werden nicht verstanden. Bilder wären besser, leider auch Umfangreicher.

Gruß EPAE 

michael_x

#1
Nov 23, 2014, 11:57 am Last Edit: Nov 23, 2014, 12:38 pm by michael_x Reason: Nachtrag bmp
Quote
extern unsigned int bildchen[0x1FA4];
16200 Byte Ram sind nicht auf jedem Arduino verfügbar, ist nur extern deklariert, und wird auch nie beschrieben.
Quote
Als Unterdatei klappt dies Problemlos
Dann zeig mal wie das aussieht. Vermutlich mit PROGMEM.  ;)

Ausserdem solltest du den Quelltext  bildchen.c in ein binäres Format (.bmp) ändern, damit du es auf dem Arduino leichter mit dem einlesen hast.
SD.open() alleine macht nichts, ausser die Datei auf der SD suchen.

Nachtrag:
Wenn du Platz im RAM hast, musst du dich nur noch um das richtige bitmap Format kümmern, damit es zu deiner Funktion myGLCD.drawBitmap  passt. -> Header der .bmp Dateien überlesen, eine Datei für drawBitmap auf mehrere Blöcke verteilen ...



Serenifly

16200 Byte Ram sind nicht auf jedem Arduino verfügbar, ist nur extern deklariert, und wird auch nie beschrieben. Dann zeig mal wie das aussieht.
Das kommt auch nicht ins RAM, sondern wird in einer Datei mit PROGMEM deklariert und ins Flash geschrieben.

Dateien von SD zu lesen geht mit UTFT nicht ohne die Library zu modifzieren

Epae

Dank an Euch!
Zunächst, SD ist nötig da ich 12 Bildchen brauche. 12 x 16.2KB !!! Verwende den Mega.
Lässt sich nicht vielleicht jeweils ein Bild in den Flash laden und dann mit
   myGLCD.drawBitmap   ausführen und dann wieder löschen oder überschreiben ?
Mein Problem ist, dass ich das nicht hinkriege!
Währt Ihr so nett ein Paar Programmzeilen zu schreiben?
 

Serenifly

#4
Nov 23, 2014, 02:08 pm Last Edit: Nov 23, 2014, 02:09 pm by Serenifly
Quote
Lässt sich nicht vielleicht jeweils ein Bild in den Flash laden und dann mit myGLCD.drawBitmap   ausführen und dann wieder löschen oder überschreiben ?
Nein. Das Flash wird einmal beim Programmieren geschrieben.

Du müsstest die drawBitmap() Methode selbst anpassen!! Wie soll das denn sonst gehen? drawBitmap() liest Daten die im Flash stehen. Das heißt du müsstest eine alternative Version der Methode schreiben, die die Daten von der SD Karte liest.

In der Methode gibt es so Zeilen wie das hier:
Code: [Select]

col=pgm_read_word(&data[tc]);

Das liest einen 16 Bit Wert aus dem Flash aus. Hier müsste man statt dessen von der SD Karte lesen


Das ist machbar, aber übersteigt deine Fähigkeiten sicherlich bei weitem, wenn du nicht mal verstehst, dass du nicht einfach ein Arduino Programm schreiben kannst, wenn die Library nicht das unterstützt was du möchtest.

Go Up