Carissimi,
oggi, voglio parlarvi di come le nostre applicazioni elettroniche, pervasive, comunicano con noi umani. Naturalmente stimolano i nostri sensi e, la vista, è uno di quelli maggiormente sviluppati nella nostra specie, evolutasi mediante la raccolta, diurna, delle risorse spontaneamente presenti sul nostro Pianeta.
Pertanto, la rappresentazione a colori delle immagini, rappresenta uno dei nostri metodi, privilegiati, di comunicazione!
Guardiamo insieme il video che ho preparato per Voi e, poi, parleremo dei componenti e delle tecniche hardware/software, per realizzare i nostri "liberi" progetti con i Display TFT.
Ok, avrete apprezzato la qualità delle immagini a colori e, sono sicuro, non vi accontenterete più dei soliti display LED a 7-Segmenti oppure dei Moduli LCD.
Prima di abbandonare definitivamente le tecnologie più mature, è opportuno ricordare che i display a 7-Segmenti hanno il grande vantaggio di essere completamente allo stato solido e di poter operare in un'ampia gamma di temperature (es. -55°C, +125°C) e che i Moduli LCD Transflettivi restano egualmente visibili sia in piena luce solare e sia al buio, grazie alla presenza del circuito di retroilluminazione a LED o fluorescente. Mentre, i Display TFT, devono essere scelti in funzione dell'ambiente nel quale dovranno operare, sia in termini di temperatura e sia di luminosità dell'ambiente circostante.
Vi ricordo che il Display TFT è stato comandato dal nostro sistema tuttofare Linux-ToolBox che ho già descritto qui.
Nella seguente figura vengono riportati i segnali utilizzati per la comunicazione con il modulo Display TFT.
Mentre, nel seguito, potete vedere il diagramma temporale con cui la CPU trasferisce i dati al display.
Qui vi riporto un frammento di codice per leggere il contenuto di un file Bitmap di 320x240 pixel. Cosa sono i pixel? Quarda questo link su Wikipedia!
void read_file(char* name)
{
int x, y;
unsigned char color_r, color_g, color_b;
FILE* fdesc;
/* show test bitmap */
fdesc = fopen(name,"r");
if (fdesc == (void*) -1) {
printf("File open error.\n");
fflush(stdout);
exit(0);
}
int x, y;
unsigned char color_r, color_g, color_b;
FILE* fdesc;
/* show test bitmap */
fdesc = fopen(name,"r");
if (fdesc == (void*) -1) {
printf("File open error.\n");
fflush(stdout);
exit(0);
}
/* skip header */
for (x=0; x<54; x++) {
color_r = fgetc(fdesc);
}
for (x=0; x<54; x++) {
color_r = fgetc(fdesc);
}
/* read rgb color from file */
for (y=0; y<240; y++) {
for (x=0; x<320; x++) {
color_b = fgetc(fdesc);
color_g = fgetc(fdesc);
color_r = fgetc(fdesc);
qvga_buffer[x][239-y] = rgb(color_r, color_g, color_b);
}
}
for (y=0; y<240; y++) {
for (x=0; x<320; x++) {
color_b = fgetc(fdesc);
color_g = fgetc(fdesc);
color_r = fgetc(fdesc);
qvga_buffer[x][239-y] = rgb(color_r, color_g, color_b);
}
}
fclose(fdesc);
printf("QVGA buffer write complete.\n");
return;
}
printf("QVGA buffer write complete.\n");
return;
}
Qui Pianeta Terra (non vivo mica su Saturno, Mimas o Titano!), a presto.
Nessun commento:
Posta un commento