Bild darstellen an einem 128*160 tft

Gast #3326634
Lesenswert?

Guten Abend zusammen,

Ich versuche ein Bild an einem 1.8"TFT 
(http://blog.simtronyx.de/arduino-nano-mit-1-8-zoll-tft-display/) 
darzustellen, aber irgenden wie bekomme ich das nicht hin. Bei dem Code 
der in der ZIP funktioniert die darstellung, wenn ich ein eigens bild 
als bitmap anlege, bekomme ich nur punkte(wenn überhaut). Die Funktion 
zur darstellung sieht vollgnermassen aus:
1
prog_uint16_t test[0xBB8] PROGMEM ={
2
0x000........BITMAP
3
};
4

5
void drawPixel(int16_t x, int16_t y, uint16_t color) {
6
    if((x < 0) ||(x >= _width) || (y < 0) || (y >= _height)) return;
7

8
    setAddrWindow(x,y,x+1,y+1);
9

10
    RSPORT |= (1 << RS);
11

12
    spiwrite(color >> 8);
13
    spiwrite(color);
14

15
}
16

17
//const uint16_t *bitmap war vorher const uint8_t *bitmap
18
void drawBitmap(int16_t x, int16_t y, const uint16_t *bitmap,
19
        int16_t w,
20
        int16_t h,
21
        uint16_t color) {
22
int16_t i, j, byteWidth = (w + 7) / 8;
23
 for(j=0; j<h; j++) {
24
  for(i=0; i<w; i++ ) {
25
   if(pgm_read_byte(bitmap + j * byteWidth + i / 8) & (128 >> (i & 7))) {
26
        drawPixel(x+i, y+j, color);
27
            }
28
        }
29
    }
30
}
31
int main(void){
32
// init the 1.8 lcd display
33
init();
34
constructor(_width,_height);
35
fillScreen(ST7735_BLACK);
36
while(1){
37
setRotation(0);
38
// FLASH
39
drawBitmap(25,25,test,60,50,test);
40
myDelay(500);    
41
invertDisplay(1);
42
myDelay(500);
43
invertDisplay(0);
44
myDelay(1000);
45
    }
46

47
    return 0;
48
}

Hoffe jemand kann mir da helfen,

MfG Rolf
Angehängte Dateien:
Gast #3326704
Lesenswert?

>Hoffe jemand kann mir da helfen,

drawBitmap(25,25,test,60,50,test);

Das ist eine Funktion zum anzeigen einer einfarbigen
Bitmap aus einem Array vom Typ
1
uint8_t *bitmap
. Nur weil
du da ein
1
uint16_t *bitmap
 draus machst kannst du dein
Array damit noch lange nicht anzeigen.

Und den Pointer auf die Bitmap als Farbe zu übergeben ist
wohl auch falsch.
Gast #3328936
Lesenswert?

Danke für den Hinweiss, habe mir eine eigene Funktion geschrieben und 
sie Funktioniert.

Da der Speicher vom m16 begrenzt ist und und ich die bilder nicht in 
voller Auflösung sehen kann. Wollte ich das gerne noch durch eine 
SD-Card erweitern. Ich weiss aber nicht wie ich an die Sache ran gegehen 
soll?

Kann mir jemand ein raht bzw. Tipp geben?

MfG Rolf
#3328988
Lesenswert?

@ Rolf (Gast)

>Die Lib habe ich gefunden bin da auch am durchlesen, worum es mir geht.

Satzbau?

>Wie lade ich die Bilder von der Karte bzw.

Datei öffnen, Datei blockweise lesen, dekodieren und auf das LCD 
schreiben. BMP ist am einfachsten, braucht aber viel Speicher. Ok, bei 
den heutigen GB Monstern ist das egal. JPG ist kompakt, braucht aber 
eine komplexe Dekodierung. Die gibt ea aber auch als fertige Lib bei ELM 
CHAN.

> als was hinterlege ich die bilder als C-file?

Gar nicht, man nimmt eines der gängigen Bildformate.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren