Embedded Display TFT Ilitek ILI9341
Introduzione
Questo schermo TFT di tipo embedded è basato sul chipset Ilitek ILI9341 ed è compatibile con
l'interfaccia seriale SPI. Questo schermo TFT ha una risoluzione di 240x320 pixel e 262K colori. Una particolarità di questo schermo è che viene venduto
anche con un controller Touch Screen basato sul chipset XPTEK XPT2046. Questo permette, con le opportune librerie, di gestire il display tramite comandi
touch. Per semplicità andremo a collegare questo schermo alla scheda di
sviluppo FTDI FT232H, di cui esiste una pagina dedicata su questo sito - fare riferimento alla suddetta
pagina per l'installazione.
Collegamento via SPI
Questo schermo deve essere collegato alla scheda di sviluppo FTDI FT232H tramite il protocollo SPI.
I connettori di collegamento sono elencati qui di seguito:
Immagine |
Scheda FT232H |
Schermo ILI9341 |
Touch XPT2046 |
|
AD0 |
SCK |
T_CLK |
AD1 |
SDI (MOSI) |
T_DIN |
AD2 |
SDO (MISO) |
T_OUT |
AD3 |
CS |
------ |
AD4 |
------ |
T_CS |
AD5 |
D/C |
------ |
AD6 |
RESET |
------ |
AD7 |
------ |
T_IRQ |
+3.3V |
LED |
------ |
+5V |
VCC |
------ |
GND |
GND |
------ |
La seguente libreria Python permette di gestire 3 pin ausiliari, "Reset", "Touch IRQ" e
"Retroilluminazione Schermo". Poiché i pin disponibili sono solo 2 (da AD6 a AD7), la retroilluminazione (pin "LED") è collegata al "+3.3V"
della scheda di sviluppo FTDI FT232H. In realtà è possibile controllare la retroilluminazione via software invertendo i collegamenti tra il pin "RESET"
e il pin "LED", ovvero collegando il pin "RESET" dello schermo al "+3.3V" della
scheda di sviluppo e collegando
il pin "LED" dello schermo al pin "AD6" della scheda di sviluppo. Questo perché il display funziona solo quando il suo pin "RESET"
viene messo in modalità "High" (ovvero con presenza di corrente), pertanto il pin "RESET" dello schermo deve essere collegato o al pin "+3.3V"
oppure ad un pin disponibile sulla scheda di sviluppo.
L'uso del pin "T_IRQ" è facoltativo nella seguente libreria Python, poiché si usa soltanto per specificare un metodo "handler" per il recupero
delle informazioni "touch". Normalmente la libreria Python non richiede di specificare questo pin, poiché la lettura del touch può essere sempre
effettuata in tempo reale (vedere gli esempi inclusi con la libreria Python).
Librerie Python
Per gestire questo schermo, possiamo usare la libreria Python denominata
"ILI9341 FTDI". Questa libreria richiede solo la presenza della
libreria "PyFTDI" ed è stata creata partendo dalle seguenti librerie Python su Internet:
- Per lo schermo
- Per il touch
Questa libreria presenta le seguenti peculiarità:
- Durante l'inizializzazione della classe "ILI9341", il passaggio del parametro "dc" (relativo al pin "D/C" dello schermo) è obbligatorio, poiché esso viene usato dalla libreria per inviare dati o
comandi allo schermo.
- Durante l'inizializzazione della classe "ILI9341", il passaggio del parametro "rst" (relativo al pin "RESET" dello schermo) è
facoltativo, poiché il suddetto pin può essere collegato direttamente al pin "+3.3V" della scheda di sviluppo (vedere precedente paragrafo).
- Durante l'inizializzazione della classe "ILI9341", il passaggio del parametro "rotation" è
facoltativo, poiché il valore predefinito è "0" (lo schermo è impostato in modalità nativa, ovvero in modalità "portrait" o verticale). La libreria
supporta, sia per lo schermo sia per il touch, i valori "0", "90", "180" e "270".
- Durante l'inizializzazione della classe "ILI9341", il passaggio dei parametri "int_pin" e "int_handler" è
facoltativo, poiché il valore predefinito per entrambi è "None". Se con il parametro "int_pin" viene passato il pin "T_IRQ" e
con il parametro "int_handler" viene passato un metodo "handler", la libreria userà un "thread" apposito per recuperare le informazioni "touch".
- Durante l'inizializzazione della classe "ILI9341", il passaggio del parametro "usepillow" è
facoltativo, poiché il valore predefinito è "True". Questo indica che la libreria userà la libreria PIL (o il suo fork "Pillow") in modalità predefinita. Se
si vogliono usare invece i comandi integrati, derivati dal codice "MicroPython", allora bisognerà impostare questo parametro a "False".
Bisogna comunque tenere presente che la gestione integrata della rotazione dello schermo (vedere il suddetto parametro "rotation") funziona solo se
questo parametro è impostato su "True" (se
è "False", sarà a carico dell'utente la gestione della rotazione sia dello schermo sia del touch).
- Durante l'inizializzazione della classe "ILI9341", il passaggio del parametro "backlight" è
facoltativo, poiché il valore predefinito è "None". Se con questo parametro viene specificato un pin della scheda di sviluppo che fornisce
la corrente di retroilluminazione allo schermo (pin "LED"), allora la gestione della retroilluminazione verrà gestita dall'utente via software
tramite il metodo "enable_backlight".
- Nel file compresso vengono forniti degli esempi sia per lo schermo sia per il touch.
- Tutti i file il cui nome inizia con "demo" rappresentano i file scritti con il codice "MicroPython" e non richiedono la libreria
PIL (o il suo fork "Pillow"). Questi file di esempio scrivono direttamente sullo schermo senza usare un buffer video,
questo decisamente rallenta il disegno su schermo di figure complesse.
- Tutti i file il cui nome inizia con "test" rappresentano i file che richiedono la libreria PIL (o il suo fork "Pillow"). Questi file di esempio scrivono sullo schermo
usando un buffer video,
il che rende il disegno su schermo di figure complesse abbastanza veloce.