sabato 16 luglio 2011

Laboratorio: l'evoluzione dei display

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);
    }
 
    /* skip header */
    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);
        }
    }
 
    fclose(fdesc);
    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