Monthly Archives: August 2015

Ho aggiunto il pulsante per salvare in PDF

Prendendo iniziativa da quanto letto sul blog di Roberto Rossi qui

Come salvare i PDF degli articoli?

ho aggiunto anche io il pulsante per salvare in PDF le pagine interessanti.

Advertisements

Mcufriend LCD TFT shield con ILI9325: Test librerie

An English version of this post is HERE! Updated with link to a solution for bitmap colours.

Articolo aggiornato con il link al post sulla soluzione del problema dei bitmap con colori sballati.

Aggiunta l’ottima libreria di David Prentice.

Ho comprato recentemente uno shield con LCD TFT su Ebay, questo:

Alcune caratteristiche dichiarate erano:

  • 4-wire resistive touchscreen
  •  spfd5408 controller with built in video RAM buffer
  • 8 bit digital interface, plus 4 control lines

Lo schermo che mi è arrivato è però diverso

E’ evidentemente diverso. La scritta ili in basso a destra e la stampa 9325 a sinistra inducono a credere che il controllore sia un ILI9325 invece dell’SPFD5408.

Il sito mcufriend è giù da mesi, forse qualche anno. E’ presente su Archive.org ma i driver non sono stati archiviati.

Sono qunindi andato su questo sito http://misc.ws/2015/01/24/lcd-touch-screen-information/ da dove ho scaricato un programma di test, LCD_ID_Reader Version 1.2 che ho scaricato e provato usando un Arduino UNO R3 e l’IDE 1.6.5. Ho così avuto conferma che il controllore è un ILI9325 e visualizzato una schermata tutta rossa che dovrebbe significare che la libreria di Justin, l’autore del post, dovrebbe funzionare. E così è stato con l’eccezione della visualizzazione delle immagini bitmap. Io ho ottenuto questo

I colori sono sballati. Da esperimenti fatti sembra che ciò sia dovuto a qualche registro non configurato correttamente perché i colori Rosso Verde e Blu puri vengono visualizzati correttamente. (Edit: 08/09/2015 soluzione qui.)

La libreria Adafruit per questi schermi ad interfaccia parallela identifica correttamente lo schermo ma non visualizza nulla, ottengo il classico schermo bianco.

Cercando sul forum forum.arduino.cc ho trovato questo post www.mcufriend.com working in arduino uno and arduino mega scritto da buhosoft il quale pubblica una libreria Adafruit modificata. Tale libreria funziona solo che occupa il doppio dello spazio di quella originale Adafruit e l’esempio che visualizza immagini bmp su una UNO non ci entra.

Allora ho eliminato da tale libreria tutta la roba che non riguardasse l’ILI9325 ottenendo che l’unica differenza rispetto alla libreria originale Adafruit erano alcune righe nella routine di reset nel file cpp della libreria.

Le righe originali

*******************ORIGINAL ADAFRUIT******************

#ifdef USE_ADAFRUIT_SHIELD_PINOUT

 digitalWrite(5, LOW);

 delay(2);

 digitalWrite(5, HIGH);

#else

 if(_reset) {

 /*

   digitalWrite(_reset, LOW);

   delay(2);

   digitalWrite(_reset, HIGH);

   */

   digitalWrite(_reset, HIGH);

   delay(50);

   digitalWrite(_reset, LOW);

   delay(100);

   digitalWrite(_reset, HIGH);

   delay(50);

CS_ACTIVE;

RD_ACTIVE;

WR_ACTIVE;

delay(10);

 }

#endif

Vanno sostituite con queste

*****************MODIFIED BUHOSOFT*******************

#ifdef USE_ADAFRUIT_SHIELD_PINOUT

 digitalWrite(5, LOW);

 delay(2);

 digitalWrite(5, HIGH);

#else

 if (_reset) {

   digitalWrite(_reset, LOW);

   delay(2);

   digitalWrite(_reset, HIGH);

 }

#endif

Effettuando questa modifica alla libreria Adafruit funziona tutto tranne daccapo la visualizzazione dei bitmap.

Ho quindi provato la libreria di Smoke and Wires. http://www.smokeandwires.co.nz che si trova su GitHub https://github.com/Smoke-And-Wires/TFT-Shield-Example-Code. Funziona ma ho sempre il problema dei bitmap.

Ho poi provato la libreria di samuraijap. Funziona ma con errori, le immagini e i disegni appaiono nel posto sbagliato come se l’indirizzamento della memoria fosse errato.

Ho quindi provato la libreria di ruelj2. Anche questa funziona ma durante la scrittura dei dati compaiono delle righe bianche sullo schermo che poi scompaiono cessata la comunicazione.

L’altra libreria provata è stata quella di goltermc che ha funzionato.

Aggiungo la libreria di David Prentice
http://forum.arduino.cc/index.php?topic=286790.msg2477797#msg2477797
Ho eseguito il test solo con l’esempio graphictest_kbv ma ha funzionato perfettamente.
Quelle provate ma che non hanno funzionato sono:

  • Libreria di andreword
  • Libreria di JoaoLopes
  • Libreria di acharis
  • Libreria di SeedStudio, una vecchia versione per SPFD5408A che sembra essere compatibile con l’ILI9325

Non ho provato la libreria UTFT in quanto i pin per la comunicazione parallela sono diversi, usa i primi 8 pin compresi quelli della seriale.

Molte librerie sono vecchie e per funzionare sull’IDE 1.6.5 bisogna aggiungere un const davanti a tutte le righe che iniziano per static unsigned char  font[] PROGMEM = { nel file glcdfont.c

Negli sketch di esempio per i bitmap va inoltre aggiunta la riga #include <SPI.h>

An English version of this post is HERE!