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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.