- Materiali richiesti:
- Conoscere il modulo schermo LCD TFT:
- Calibrazione dello schermo LCD TFT per il touch screen:
- Connessioni LCD TFT con Arduino:
- Programmazione del tuo Arduino per LCD TFT:
- Lavorando:
Arduino ha sempre contribuito a creare facilmente progetti e renderli più attraenti. La programmazione di uno schermo LCD con l'opzione touch screen potrebbe sembrare un'attività complicata, ma le librerie e gli scudi di Arduino lo hanno reso davvero semplice. In questo progetto utilizzeremo uno schermo LCD TFT Arduino da 2,4 " per costruire la nostra calcolatrice touch screen Arduino in grado di eseguire tutti i calcoli di base come addizione, sottrazione, divisione e moltiplicazione.
Materiali richiesti:
- Arduino Uno
- Schermo LCD TFT da 2,4 "
- Batteria 9V.
Conoscere il modulo schermo LCD TFT:
Prima di immergerci realmente nel progetto è importante sapere come funziona questo Modulo LCD TFT da 2,4 ” e quali sono i tipi presenti in esso. Diamo uno sguardo alle piedinature di questo modulo con schermo LCD TFT da 2,4 pollici.
Come puoi vedere ci sono 28 pin che si adatteranno perfettamente a qualsiasi scheda Arduino Uno / Arduino Mega. Una piccola classificazione di questi pin è fornita nella tabella sottostante.
Come puoi vedere, i pin possono essere classificati in quattro classificazioni principali come LCD Command Pins, LCD Data Pins, SD Card Pins e Power Pins, non abbiamo bisogno di sapere molto sul funzionamento dettagliato di questi pin poiché saranno curati da la nostra libreria Arduino.
È inoltre possibile trovare uno slot per schede SD nella parte inferiore del modulo mostrato sopra, che può essere utilizzato per caricare una scheda SD con file di immagine bmp, e queste immagini possono essere visualizzate nel nostro schermo LCD TFT utilizzando il programma Arduino.
Un'altra cosa importante da notare è il tuo CI di interfaccia. Esistono molti tipi di moduli TFT disponibili sul mercato a partire dal modulo LCD TFT originale Adafruit fino ai cloni cinesi economici. Un programma che funziona perfettamente per il tuo shield Adafruit potrebbe non funzionare allo stesso modo per le schede breakout cinesi. Quindi, è molto importante sapere quali tipi di display LCD hai in mano. Questo dettaglio deve essere ottenuto dal venditore. Se hai un clone economico come il mio, molto probabilmente sta usando il driver IC ili9341. Puoi seguire questo interfaccia TFT LCD con il tutorial di Arduino per provare alcuni programmi di esempio di base e familiarizzare con lo schermo LCD. Dai un'occhiata anche ai nostri altri progetti LCD TFT con Arduino qui:
- Come utilizzare la striscia LED NeoPixel con Arduino e LCD TFT
- Serratura a codice digitale controllata da smartphone utilizzando Arduino
Calibrazione dello schermo LCD TFT per il touch screen:
Se si prevede di utilizzare la funzione touch screen del modulo LCD TFT, è necessario calibrarlo per farlo funzionare correttamente. Uno schermo LCD senza calibrazione potrebbe funzionare in modo improbabile, ad esempio potresti toccare in un punto e il TFT potrebbe rispondere per un tocco in un altro punto. I risultati di queste calibrazioni non saranno simili per tutte le schede e quindi sarai lasciato solo a farlo.
Il modo migliore per calibrare è utilizzare il programma di esempio di calibrazione (fornito con la libreria) o utilizzare il monitor seriale per rilevare l'errore. Tuttavia, per questo progetto, poiché la dimensione dei pulsanti è grande, la calibrazione non dovrebbe essere un grosso problema e spiegherò anche come calibrare lo schermo nella sezione di programmazione di seguito.
Connessioni LCD TFT con Arduino:
Lo schermo LCD TFT da 2,4 "è un perfetto Arduino Shield. Puoi spingere direttamente lo schermo LCD sulla parte superiore di Arduino Uno e si abbinerà perfettamente ai pin e scivolerà dentro. Tuttavia, per questioni di sicurezza, copri il terminale di programmazione del tuo Arduino UNO con un piccolo nastro isolante, nel caso in cui il terminale entri in contatto con lo schermo LCD TFT. Il display LCD assemblato su UNO avrà un aspetto simile a questo di seguito.
Programmazione del tuo Arduino per LCD TFT:
Stiamo usando la libreria SPFD5408 per far funzionare questo codice della calcolatrice arduino. Questa è una libreria modificata di Adafruit e può funzionare perfettamente con il nostro modulo LCD TFT. Puoi controllare il programma completo alla fine di questo articolo.
Nota: è molto importante per te installare questa libreria nel tuo IDE Arduino o questo programma per compilare senza errori.
Per installare questa libreria, puoi semplicemente fare clic sul collegamento sopra che ti porterà a una pagina Github. Lì fai clic su clona o scarica e seleziona "Scarica ZIP". Verrà scaricato un file zip.
Ora apri l'IDE di Arduino e seleziona Sketch -> Includi libreria -> Aggiungi libreria.ZIP. Si aprirà una finestra del browser, accedere al file ZIP e fare clic su "OK". Dovresti notare "Libreria aggiunta alle tue librerie" nell'angolo in basso a sinistra di Arduino, in caso di successo. Una guida dettagliata per fare lo stesso è fornita nel Tutorial sull'interfacciamento.
Ora puoi utilizzare il codice riportato di seguito nel tuo IDE Arduino e caricarlo su Arduino UNO per far funzionare la calcolatrice touch screen. Più in basso, ho spiegato il codice in piccoli segmenti.
Abbiamo bisogno di tre librerie per far funzionare questo programma; tutte queste tre librerie sono state fornite nel file ZIP scaricato dal collegamento fornito sopra. Li ho semplicemente inclusi nel codice come mostrato di seguito.
#includere
Come detto in precedenza, dobbiamo calibrare lo schermo LCD per farlo funzionare come previsto, ma non preoccuparti, i valori qui forniti sono quasi universali. Le variabili TS_MINX, TS_MINY, TS_MAXX e TS_MAXY decidono la calibrazione dello schermo. Puoi giocarci intorno se ritieni che la calibrazione non sia soddisfacente.
#define TS_MINX 125 #define TS_MINY 85 #define TS_MAXX 965 #define TS_MAXY 905
Poiché sappiamo che lo schermo LCD TFT può visualizzare molti colori, tutti questi colori devono essere inseriti in valore esadecimale. Per renderlo più leggibile dall'uomo, assegniamo questi valori a una variabile come mostrato di seguito.
#define WHITE 0x0000 // Black-> White #define YELLOW 0x001F // Blue-> Yellow #define CYAN 0xF800 // Red-> Cyan #define PINK 0x07E0 // Green-> Pink #define RED 0x07FF // Cyan -> Red #define GREEN 0xF81F // Pink -> Green #define BLUE 0xFFE0 // Yellow-> Blue #define BLACK 0xFFFF // White-> Black
Ok ora, possiamo entrare nella parte di programmazione. Ci sono tre sezioni coinvolte in questo programma. Uno sta creando un'interfaccia utente di una calcolatrice con pulsanti e display. Quindi, rilevare i pulsanti in base al tocco degli utenti e infine calcolare i risultati e visualizzarli. Vediamoli uno per uno.
1. Creazione di un'interfaccia utente di Calcolatrice:
È qui che puoi utilizzare gran parte della tua creatività per progettare l'interfaccia utente della calcolatrice. Ho semplicemente creato un layout di base di una calcolatrice con 16 pulsanti e un'unità display. Devi costruire il disegno proprio come disegnerai qualcosa sulla vernice MS. Le librerie aggiunte ti permetteranno di disegnare linee, rettangoli, cerchi, caratteri, stringhe e molto altro di qualsiasi colore preferito. Puoi capire le funzioni disponibili da questo articolo.
Ho utilizzato le capacità di disegno di linee e riquadri per progettare un'interfaccia utente molto simile alla calcolatrice degli anni '90. Ogni casella ha una larghezza e un'altezza di 60 pixel.
// Disegna la casella dei risultati tft.fillRect (0, 0, 240, 80, CYAN); // Disegna la prima colonna tft.fillRect (0,260,60,60, RED); tft.fillRect (0,200,60,60, NERO); tft.fillRect (0,140,60,60, NERO); tft.fillRect (0,80,60,60, NERO); // Disegna la terza colonna tft.fillRect (120,260,60,60, GREEN); tft.fillRect (120,200,60,60, NERO); tft.fillRect (120,140,60,60, NERO); tft.fillRect (120,80,60,60, NERO); // Disegna seconda e quarta colonna per (int b = 260; b> = 80; b- = 60) {tft.fillRect (180, b, 60,60, BLUE); tft.fillRect (60, b, 60,60, BLACK);} // Disegna linee orizzontali per (int h = 80; h <= 320; h + = 60) tft.drawFastHLine (0, h, 240, WHITE); // Disegna linee verticali per (int v = 0; v <= 240; v + = 60) tft.drawFastVLine (v, 80, 240, WHITE); // Visualizza le etichette della tastiera per (int j = 0; j <4; j ++) {per (int i = 0; i <4; i ++) {tft.setCursor (22 + (60 * i), 100 + (60 * j)); tft.setTextSize (3); tft.setTextColor (BIANCO); tft.println (simbolo);
2. Rilevamento dei pulsanti:
Un altro compito impegnativo è rilevare il tocco dell'utente. Ogni volta che l'utente tocca un punto, saremo in grado di sapere come ha toccato la posizione X e Y del pixel. Questo valore può essere visualizzato sul monitor seriale utilizzando println come mostrato di seguito.
TSPoint p = waitTouch (); X = py; Y = px; Serial.print (X); Serial.print (','); Serial.println (Y); // + "" + Y);
Dal momento che abbiamo progettato il box con larghezza e altezza di 60 pixel ciascuno e abbiamo quattro righe e per colonne a partire da (0,0). La posizione di ciascuna casella può essere prevista come mostrato nell'immagine sottostante.
Ma nel caso pratico, questo non sarà il risultato. Ci sarà una grande differenza tra il valore previsto e quello effettivo, a causa del problema di calibrazione.
Quindi, per prevedere la posizione esatta della scatola, è necessario fare clic sulla riga e verificare la sua posizione corrispondente sul monitor seriale. Questo potrebbe non essere il modo più professionale per farlo, ma funziona comunque perfettamente. Ho misurato la posizione di tutte le linee e ho ottenuto i valori seguenti.
Ora, poiché conosciamo la posizione di tutte le scatole. Quando un utente tocca un punto qualsiasi, possiamo prevedere dove ha toccato confrontando i suoi valori (X, Y) con il valore di ciascuna casella come mostrato di seguito.
if (X <105 && X> 50) // Rilevamento pulsanti sulla colonna 2 {if (Y> 0 && Y <85) {Serial.println ("Button 0"); // Il pulsante 0 viene premuto se (Numero == 0) Numero = 0; altro Numero = (Numero * 10) + 0; // Premuto due volte} if (Y> 85 && Y <140) {Serial.println ("Button 2"); se (Numero == 0) Numero = 2; altro Numero = (Numero * 10) + 2; // Premuto due volte}
3. Visualizzazione dei numeri e calcolo del risultato:
Il passaggio finale è calcolare il risultato e visualizzarlo sullo schermo LCD TFT. Questa calcolatrice arduino può eseguire operazioni con solo 2 numeri. Questi due numeri sono denominati come variabili "Num1" e "Num2". La variabile "Numero" dà e prende valore da Num1 e Num2 e porta anche il risultato.
Quando un utente preme un pulsante, una cifra viene aggiunta al numero. Quando si preme un altro pulsante, la cifra precedente viene moltiplicata per 10 e il nuovo numero viene aggiunto con essa. Ad esempio, se premiamo 8 e poi 5 e poi 7. Quindi prima la variabile manterrà 8 poi (8 * 10) + 5 = 85 poi (85 * 10) +7 = 857. Quindi alla fine la variabile avrà il valore 857 con esso.
if (Y> 192 && Y <245) {Serial.println ("Button 8"); se (Numero == 0) Numero = 8; altro Numero = (Numero * 10) + 8; // Premuto di nuovo}
Quando eseguiamo un'operazione come l'addizione, quando l'utente preme il pulsante di aggiunta, il valore da Number verrà trasferito a Num1 e quindi Number verrà azzerato in modo che sia pronto a prendere l'input per il secondo numero.
Quando si preme Equal il valore in Number verrà inviato a Num2 e quindi verrà effettuato il rispettivo calcolo (in questo caso l'addizione) e il risultato sarà nuovamente memorizzato nella variabile “Number”.
Infine questo valore verrà visualizzato sullo schermo LCD.
Lavorando:
Il funzionamento di questa calcolatrice touch screen Arduino è semplice. Devi caricare il codice indicato di seguito sul tuo Arduino e accenderlo. La calcolatrice viene visualizzata sullo schermo LCD.
Ora puoi inserire qualsiasi numero ed eseguire i tuoi calcoli. Per ora è limitato a solo due operandi e solo operatore. Ma puoi modificare il codice per fargli avere molte opzioni.
È necessario premere la "C" per cancellare il valore sullo schermo ogni volta dopo aver eseguito un calcolo. Spero che tu abbia capito il progetto e ti sia piaciuto costruire qualcosa di simile. Se hai dei dubbi sentiti libero di pubblicarli sui forum o nella sezione commenti qui sotto. Alla prossima con un altro progetto interessante fino ad allora felice informatica !!
Controlla anche il video dimostrativo qui sotto.