Go Down

Topic: funzioni varie per GLCD ST7565 (Read 4201 times) previous topic - next topic

ƎR

Sep 21, 2012, 12:50 am Last Edit: Oct 13, 2012, 04:16 pm by ?R Reason: 1
io ho questo GLCD 128x64: http://www.robot-italy.com/it/graphic-st7565-negative-lcd-128x64-with-rgb-backlight.html
l'ho provato e va tutto bene, anche se è un po' lento nell'aggiornare le immagini... ora io volevo fare in modo di creare un'immagine a tutto schermo con il mio logo e mi chiedevo se c'era qualche soluzione migliore del disegnarlo pixel per pixel, per esmpio convertendo un file immagine in bianco e nero... voi come fareste?
grazie mille a tutti in anticipo! ;)
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

pelletta

Crei l'immagine con il logo in bianco e nero con la stessa risoluzione del display.
Scrivi un'applicazioncina in processing dove importi l'immagine e analizzi i pixel: dove c'è bianco ti fai restituire 0, dove è nero 1.
Disponi i dati ottenuti manipolandoli come più ti aggrada (byte, bin, hex, ecc) su diversi array. Esporti i dati su serial monitor o su file,
copia/incolla e voilà, il display è sistemato.
C'est bon? Ca va bien?  ;)

ƎR

si avevo pensato anch'io qualcosa del genere riducendo la risoluzione dell'immagine a 128x64, anche se poi processing non l'ho mai usato e non saprei come fare...
sinceramente speravo che ci fosse qualche SW già fatto, mi piace trovare la pappa pronta :P
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

pelletta

Non preoccuparti, analizzare l'immagine è davvero facile, un annetto fa ho fatto questa cosa per un display lcd; funzionava alla grande ma immagina che schifezza di risoluzione su un lcd 16x2 (l'immagine era di soli 80x16 pixel!) :smiley-eek-blue: Ho accantonato il progetto  :)
Comunque su processing devi usare poche funzioni, vedi loadImage, loadPixels e pixels[]. Se vedi le reference di processing hanno diversi esempi. La parte più rognosa secondo me consiste nell'elaborazione dei dati, alla fine devi codificarli come richiede la libreria che usa il tuo glcd. Se mi ritrovo quello che ho scritto te lo posto per prenderne l'idea.

ƎR

#4
Sep 21, 2012, 02:25 pm Last Edit: Sep 29, 2012, 12:15 am by ?R Reason: 1
ok grazie mille, ma sto avendo problemi anche nella riduzione della risoluzione dell'immagine perchè vengono anche delle parti grige e se aumento il contrasto si mescola tutto e non si legge più niente =(
l'immagine sarebbe questa:
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

Lucailvec

bhe se è proprio indispensabile questa immagine e il problema è il grigio potresti modificare la scala di grigi con un programma a parte per poi caricarla ad esempio credo che addirittura paint lo faccia, se però ne hai più di una allora mi dispiace ma non ne ho idea..

ƎR

#6
Sep 29, 2012, 12:12 am Last Edit: Sep 29, 2012, 12:22 am by ?R Reason: 1
no l'immagine è sono quella lì, però mi sto chiedendo come funziona la mappatura in esadecimale, perchè sugli esempi della libreria c'è un piccolo logo 16x16, un fiore dell'adafruit, ed è scritto così:
Code: [Select]
static unsigned char __attribute__ ((progmem)) logo16_glcd_bmp[]={
0x30, 0xf0, 0xf0, 0xf0, 0xf0, 0x30, 0xf8, 0xbe, 0x9f, 0xff, 0xf8, 0xc0, 0xc0, 0xc0, 0x80, 0x00,
0x20, 0x3c, 0x3f, 0x3f, 0x1f, 0x19, 0x1f, 0x7b, 0xfb, 0xfe, 0xfe, 0x07, 0x07, 0x07, 0x03, 0x00, };

perchè è scritto in 32 byte? :smiley-roll-sweat:
volevo creare il carattere "Ǝ" visto che non c'è, sarebbe un 7x5, ma non so come scriverlo...
grazie a tutti per l'aiuto ;)
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

dancol90


no l'immagine è sono quella lì, però mi sto chiedendo come funziona la mappatura in esadecimale, perchè sugli esempi della libreria c'è un piccolo logo 16x16, un fiore dell'adafruit, ed è scritto così:
<cut>
perchè è scritto in 32 byte? :smiley-roll-sweat:


dovrebbe essere che per ad ogni bit di ogni byte corrisponde un pixel acceso/spento sullo schermo, quindi avendo ogni byte 8 bit ed essendo l'immagine 16x16pixel, una riga (o colonna, dipende come funziona la lib) prende due byte, che moltiplicati per il numero di colonne (o righe), fa 32!

ƎR



no l'immagine è sono quella lì, però mi sto chiedendo come funziona la mappatura in esadecimale, perchè sugli esempi della libreria c'è un piccolo logo 16x16, un fiore dell'adafruit, ed è scritto così:
<cut>
perchè è scritto in 32 byte? :smiley-roll-sweat:


dovrebbe essere che per ad ogni bit di ogni byte corrisponde un pixel acceso/spento sullo schermo, quindi avendo ogni byte 8 bit ed essendo l'immagine 16x16pixel, una riga (o colonna, dipende come funziona la lib) prende due byte, che moltiplicati per il numero di colonne (o righe), fa 32!

non ne capisco molto il senso, mi sembra che ci siano più dati del necessario... però se è così, come devo fare per creare il carattere "?"?
grazie ancora ;)
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

dancol90


non ne capisco molto il senso, mi sembra che ci siano più dati del necessario... però se è così, come devo fare per creare il carattere "?"?
grazie ancora ;)


dati in più non ce ne sono: 16x16pixel fa 256pixel totali, 8bit*32byte totali fa ancora 256, essendo che 1bit=1pixel, i conti tornano  :)

Per il carattere, devi trattarlo come una bitmap 5x7: disegnalo su paint in bianco e nero, salvalo in bmp 1bpp e dallo in pasto a questo programma
http://en.radzio.dxp.pl/bitmap_converter/
che ti sputerà fuori un'array di byte da usare come bitmap con la lib. Gioca un po' con le impostazioni per trovare quelle giuste per la tua lib!  :)

ƎR



non ne capisco molto il senso, mi sembra che ci siano più dati del necessario... però se è così, come devo fare per creare il carattere "?"?
grazie ancora ;)

dati in più non ce ne sono: 16x16pixel fa 256pixel totali, 8bit*32byte totali fa ancora 256, essendo che 1bit=1pixel, i conti tornano  :)

ahn si vero! avevo sbagliato i conti :smiley-sweat:


Per il carattere, devi trattarlo come una bitmap 5x7: disegnalo su paint in bianco e nero, salvalo in bmp 1bpp e dallo in pasto a questo programma
http://en.radzio.dxp.pl/bitmap_converter/
che ti sputerà fuori un'array di byte da usare come bitmap con la lib. Gioca un po' con le impostazioni per trovare quelle giuste per la tua lib!  :)

più tardi provo, grazie mille ;)
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

ƎR

sembra funzionare! :) anche se non ho sotto mano il display e quindi non posso provare...
grazie mille! ;)
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

ƎR

sto provando ora, sto provando tutte le combinazioni con il programma che mi hai dato, ma nessuna sembra andare bene :(
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

dancol90


sto provando ora, sto provando tutte le combinazioni con il programma che mi hai dato, ma nessuna sembra andare bene :(


Prova con:

Byte orientation: Vertical
Size: Width=5, Height=7
Include size: no
Size endianness: indifferente, visto che non usi "include size"
Pixel/byte: 7

Dovrebbe funzionare :)

ƎR

funziona!! :D grazie ancora! ;)
ma perchè 7 pixel/byte?
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

Go Up