Smart IC Tester
Come sempre, mai una volta che qualcosa mi funzioni al primo colpo.
Erano mesi e mesi che avevo pronti i PCB per realizzare questo progettino e alla fine ho deciso di metterci mano, convinto, di portarlo a termine in circa mezz’ora….ma come al solito, anche in progetti apparentemente semplici, c’ho perso circa 8 ore per risolvere tutti i problemi che si sono susseguiti.
Partiamo dal progetto originale. Trovate tutto in questi due link
Nel primo le istruzioni nel secondo i sorgenti su github.
Scaricato il tutto e preparato il circuito, in teoria, sarebbe sufficiente fare l’upload del codice sull’arduino e tutto dovrebbe funzionare.
Invece sono incappato subito in una bella schermata bianca, quindi ho dedotto o che l’LCD fosse guasto o che le librerie per l’LCD TFT non erano corrette. E qui casca il primo asino. Come verifico il tipo di LCD che ho? In teoria doveva essere un LCD con controller ILI9341, ma non ne avevo la certezza.
Allora mi sono messo alla ricerca di un qualcosa che mi permettesse di testare la funzionalità dello schermo e poi di identificare il tipo di controller. E alla fine ho trovato questo sketch, che permette di effettuare entrambe le operazioni. Il tipo di controller si può leggere aprendo il monitor seriale dell’Arduino IDE, dopo aver effettuato l’upload del codice.
/* TFT LCD – TFT Simple driving modified on 21 Feb 2019 by Saeed Hosseini
Serial.begin(9600); #ifdef USE_ADAFRUIT_SHIELD_PINOUT tft.reset(); uint16_t identifier = tft.readID(); if (identifier == 0x9325) { tft.begin(identifier); Serial.println(F(“Benchmark Time (microseconds)”)); Serial.print(F(“Screen fill “)); tft.setTextColor(YELLOW); return t; |
Ok, dopo aver effettuato il test e identificato il controller ILI9341, dovevo ancora risolvere il problema della schermata bianca.
Dopo ore di test con varie librerie di adafruit (specifiche per l’ILI9341 e non) e verifiche delle corrispondenze delle piedinature con quanto riportato sulla libreria, ho trovato la soluzione utilizzando la libreria SPFD5408.
La potete trovare QUI
Scaricatela e copiatela nella cartella library dell’arduino IDE
Aprite lo sketch e nella prima tab modificate quanto segue
//TFT //#include <Adafruit_GFX.h> // Core graphics library //#include <Adafruit_TFTLCD.h> // Hardware-specific library //#include <TouchScreen.h> //Touch Screen Library #include <pin_magic.h> #include <registers.h> #include <SPFD5408_Adafruit_GFX.h> #include <SPFD5408_Adafruit_TFTLCD.h> #include <SPFD5408_TouchScreen.h> #include <SPFD5408_Util.h> |
Su github della libreria SPFD5408 fa riferimento ai pin
—- Pinout XM XP, must be: #define YP A1 // must be an analog pin, use “An” notation! |
ma per far funzionare il circuito bisogna lasciare invariate le assegnazioni date in origine dal progetto, altrimenti il touch non funzionerà
#define YP A3 // must be an analog pin, use “An” notation! #define XM A2 // must be an analog pin, use “An” notation! #define YM 9 // can be a digital pin #define XP 8 // can be a digital pin |
Effettuato nuovamente l’upload, magicamente il display ha funzionato correttamente ma aveva il touch che non funzionava perfettamente, in quanto il punto di pressione dello schermo, non corrispondeva all’effettivo punto in cui ci si aspettava la pressione. In pratica era completamene scalibrato.
Per risolvere anche questo problema, ho modificato il codice come segue
Nel tab TFT impostare
tft.setRotation(5); anzichè tft.setRotation(3); come di default
Andrà modificata anche la mappa nel tab principale ic_tester p.x = map(p.x, TS_MINX, TS_MAXX, 0, tft.height()); anzichè p.x = map(p.x, TS_MINX, TS_MAXX, tft.height(), 0); p.y = map(p.y, TS_MINY, TS_MAXY, tft.width(), 0);
Andrà modificato anche sotto la tab keypad altrimenti i numeri verranno premuti specchiati sull’asse X |
Fatto tutto questo, adesso il tester funziona come dovrebbe funzionare. Mi sono divertito anche a tradurlo in italiano.
Lascio sotto tutto il materiale che ho utilizzato per questo progetto
- Progetto originale : https://www.instructables.com/Smart-IC-Tester/
- Pagina ufficiale : https://github.com/akshaybaweja/Smart-IC-Tester
- Libreria SPFD5408 : https://github.com/JoaoLopesF/SPFD5408 o scaricala direttamente SPFD5408_library
- Altre librerie necessarie : SD_library e FastLED_library
Bellissimo progetto, vorrei realizzarlo, potresti inviarmi schema elettrico e file hex per la realizzazione. Grazie
Ciao, trovi tutti i link in fondo alla pagina. Per quanto riguarda il file hex, ti consiglio di compilartelo da solo, perchè il problema principale è la libreria per la gestione del display e la sua configurazione dipende tutto da quale TFT hai sotto mano.
Ottimo approccio per realizzare, nel tempo libero, qualcosa che può ritornare utile nei lavoretti di verifica di apparecchi elettronici con componenti discreti. Proverò anche io a costruirlo, magari con qualche modifica oppure no. Vi aggiorno appena possibile. Continua a postare realizzazioni, fa bene alla salute.
Hi there, I have the white screen problem. I dont know how to fix it and i cannot understand Italian. would be great if you could help.
It’s definitely an LCD library problem. You need to be sure what controller your LCD panel has. Create a new sketch and paste the first part I entered (it’s called TFT LCD – TFT Simple driving), you should be able to detect what type it is. Then you will have to look for the suitable library
Ciao. Congratulazioni per il risultato! Vengo dalla Romania e mi piacerebbe realizzare questo tester da solo. Ho tutto il materiale, ma sfortunatamente non riesco a programmarlo affatto. Dico che sono un principiante con Arduino. Potresti aiutarmi passo dopo passo passo cosa devo fare? ripristinare l’archivio con lo sketch e gli altri file che hai realizzato e caricarli da qualche parte oppure inviarmelo tramite email Grazie in anticipo?