Go Down

Topic: Disegnare immagini .bmp sul display lcd tft (Read 7583 times) previous topic - next topic

mgaproduction

Ciao, nel progetto che sto pian piano realizzando (http://forum.arduino.cc/index.php?topic=241181.0) sto incontrando delle difficoltà.

Per ri-prendere dimestichezza con la programmazione, stavo usando lo sketch che visualizza il logo arduino sul display e ho semplicemente aggiunto nella sd-card 3 immagini .bmp che sono queste :







Le ho prese in rete, caricate su Paint, ridotte a 80x45 pixel e sono da 2KB quindi molto meno del logo di arduino.
Purtroppo però non viene visualizzato nulla e non mi segnala nessun errore.
Non ho fatto altro che sostituire nel codice dello sketch la riga dove scrive il logo arduino cambiando il nome e mettendo quello di tutte e 3 le immagini, ma nessuna viene visualizzata. Schermo bianco...

Sapete aiutarmi?




ratto93

E' banale ma sei sicuro che l'estenzione sia davvero .bmp ? a volte windows ti dice che ha un estensione quando ne ha un altra.. Poi se puoi pubblica il codice e dicci che hardware usi e magari possiamo aiutarti in maniera più sostanziale, ciao
Se corri veloce come un fulmine, ti schianterai come un tuono.

mgaproduction

#2
Jun 07, 2014, 09:14 pm Last Edit: Jun 07, 2014, 09:17 pm by mgaproduction Reason: 1
Uso Leonardo con il display lcd tft sempre di arduino.

Il codice è questo :

Code: [Select]
// include the necessary libraries
#include <SPI.h>
#include <SD.h>
#include <TFT.h>  // Arduino LCD library



// pin definition for the Leonardo
#define sd_cs  8
#define lcd_cs 7
#define dc     0
#define rst    1  

TFT TFTscreen = TFT(lcd_cs, dc, rst);

// this variable represents the image to be drawn on screen
PImage logo;


void setup() {
 // initialize the GLCD and show a message
 // asking the user to open the serial line
 TFTscreen.begin();
 TFTscreen.background(255, 255, 255);

 TFTscreen.stroke(255,0,0);
 TFTscreen.println();
 TFTscreen.println("Arduino prove lettura A0 A1");
 TFTscreen.stroke(255,0l, 0);
 TFTscreen.println("Open serial monitor");
 TFTscreen.println("to run the sketch");

 // initialize the serial port: it will be used to
 // print some diagnostic info  
 Serial.begin(9600);
 // while (!Serial) {};
 delay (3000);

 // clear the GLCD screen before starting
 TFTscreen.background(255, 255, 255);
 
 // try to access the SD card. If that fails (e.g.
 // no card present), the setup process will stop.
 Serial.print("Initializing SD card...");
 if (!SD.begin(sd_cs)) {
   Serial.println("failed!");
   return;
 }
 Serial.println("OK!");
 
 // initialize and clear the GLCD screen
 TFTscreen.begin();
 TFTscreen.background(255, 255, 255);

 // now that the SD card can be access, try to load the
 // image file.
 logo = TFTscreen.loadImage("arduino.bmp");
 if (!logo.isValid()) {
   Serial.println("error while loading arduino.bmp");
 }
}

void loop() {
 // don't do anything if the image wasn't loaded correctly.
 if (logo.isValid() == false) {
   return;
 }
 
 Serial.println("drawing image");

 // get a random location where to draw the image.
 // To avoid the image to be draw outside the screen,
 // take into account the image size.
 //int x = random(TFTscreen.width() - logo.width());
 //int y = random(TFTscreen.height() - logo.height());
 
 int x = random(1,128);
 int y = random(1,160);

 // draw the image to the screen
 TFTscreen.image(logo, x, y);

 // wait a little bit before drawing again
 delay(1500);
 TFTscreen.background(255, 255, 255);
}


Nella riga  logo = TFTscreen.loadImage("arduino.bmp"); vado a sostituire il file . Quando metto arduino.bmp questao viene visualizzato, quando metto un altro file no.
Non ti saprei dire se è un vero .bmp ma credo proprio di si : l'estensione è corretta. Di più non saprei. Ho espressamente detto a Paint di salvarla come bitmap


leo72

I file che hai allegato sono con estensione .jpg.

nid69ita

Duplica arduino.bmp, poi prova a modificare quello con paint. Quel logo è 48x48 per 6966 byte
my name is IGOR, not AIGOR

leo72


mgaproduction

Fatta la rinomina ma non funziona neanche così. Sempre schermo bianco.
A me esplora risorse dice che sono bitmap. Forse risultano jpeg perchè caricate su picasa. Potrebbe essere?

Proverò anche GIMP ma non mi ci ero mai trovato bene



leo72


Fatta la rinomina ma non funziona neanche così. Sempre schermo bianco.
A me esplora risorse dice che sono bitmap. Forse risultano jpeg perchè caricate su picasa. Potrebbe essere?

Non so. Io ho solo cliccato su una di quelle immagini e sono Jpeg.

Quote

Proverò anche GIMP ma non mi ci ero mai trovato bene

Usa un qualunque programma di tuo  gradimento. Ho suggerito GIMP perché è gratuito e completo.

mgaproduction

Gimp non mi da la possibilità di salvare in .bmp
A parte questa cosa che mi sembra assurda, la domanda ora è : Arduino può usare solo foto .bmp o anche .jpg o altre estensioni?


uwefed


Gimp non mi da la possibilità di salvare in .bmp
A parte questa cosa che mi sembra assurda, la domanda ora è : Arduino può usare solo foto .bmp o anche .jpg o altre estensioni?

Non dipende dalle estensioni ma del modo come viene memorizzato l' immagine.
bmp ha 3 valori di rosso verde blu per ogni pixel, mentre gli altri modi di memmorizzare immagini li elaborano per diminuire lo spazio neccessario.
Per visualizzare un immagine memorizzata in formato jpg devi decompresarla. Arduino non ha la memoria e il codice per farlo.

Ciao Uwe

uwefed


Gimp non mi da la possibilità di salvare in .bmp
A parte questa cosa che mi sembra assurda, la domanda ora è : Arduino può usare solo foto .bmp o anche .jpg o altre estensioni?


http://it.wikipedia.org/wiki/Windows_bitmap
Il formato bildmapp non é compresso come altri formati per esempio GIF o jpg. Per questo Arduino riesce a gestirlo.
Ciao Uwe

mgaproduction

Supponevo che non potesse proprio per i motivi che hai esposto.
Quindi foto solo .bmp.

Non che voglia fare chissà quali cose; mi servono giusto solo dei simboletti come quelli di cui sopra.

Ora devo quindi però cercare di capire perchè quelle foto non me le visualizza.
Vi posto qui il link di dropbox https://www.dropbox.com/sh/rii3peg9532v4m6/AAD_XtoSeXkMh7egAsSgGmXRa dove ci sono le foto che sto usando. Qualcuno riesce per caso a scoprire che cos'hanno che non va? Ce ne sono 6 ; ovviamente quelle che uso sono quelle con le dimensioni più piccole.

testato

- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

nid69ita

#13
Jun 08, 2014, 11:51 am Last Edit: Jun 08, 2014, 12:05 pm by nid69ita Reason: 1

Fatta la rinomina ma non funziona neanche così. Sempre schermo bianco.


Cioè?
Scusa ma io intendo farti fare la cosidetta prova dello "scemo" (non rivolto a te, giuro)  :smiley-mr-green:
Se il demo funziona con arduino.bmp di 48x48, allora fatti una copia di backup di quel file, poi modifichi arduino.bmp con paint incollandoci una parte del tuo disegno. Se così funziona, allora può essere un problema di dimensioni (ma non credo) oppure del nome del file quando lo cambi.
Se invece non funziona allora paint modifica in qualche modo il file bmp che non è più come prima.
Ti allego file arduino.bmp modificato con paint. (win Xp)

P.S. tra l'altro le tue img da 80x45 affermi siano 2K, mentre il arduino.bmp è circa 7K ma è solo 48x48, come fa ad essere più grosso? Se passi da un gif, quello che diventa un bmp allora è a 256 colori e non a 24milioni di colori (profondità colore).
my name is IGOR, not AIGOR

leo72


Gimp non mi da la possibilità di salvare in .bmp
A parte questa cosa che mi sembra assurda,

Non te ne offendere, ma non sai usare il programma. Apri un qualunque file JPG, poi clicchi su "File/Esporta come.." e scegli il nome e dai l'estensione .bmp e GIMP te lo salva in automatico in quel formato. Alternativamente, puoi solo mettere il nome e poi scegliere dal menu a tendina più sotto il formato con cui vuoi salvare.

Go Up