- Materials necessaris:
- Conèixer el mòdul de pantalla LCD TFT:
- Calibració de la pantalla TFT LCD per a pantalla tàctil:
- Connexions LCD TFT amb Arduino:
- Programació del vostre Arduino per a LCD TFT:
- Treball:
Arduino sempre ha ajudat a construir projectes fàcilment i a fer-los més atractius. Programar una pantalla LCD amb opció de pantalla tàctil pot semblar una tasca complicada, però les biblioteques i els escuts Arduino ho han fet molt fàcil. En aquest projecte utilitzarem una pantalla TFT LCD Arduino de 2,4 polzades per construir la nostra pròpia calculadora de pantalla tàctil Arduino que pugui realitzar tots els càlculs bàsics com Suma, Resta, Divisió i Multiplicació.
Materials necessaris:
- Arduino Uno
- Pantalla LCD TFT de 2,4 ”
- Bateria de 9V.
Conèixer el mòdul de pantalla LCD TFT:
Abans d’endinsar-nos en el projecte, és important saber com funciona aquest mòdul TFT LCD de 2,4 ” i quins són els tipus que s’hi presenten. Vegem els pinouts d’aquest mòdul de pantalla LCD TFT de 2,4 ”.

Com podeu veure, hi ha 28 pins que s’adapten perfectament a qualsevol placa mega Arduino Uno / Arduino. A la taula següent es dóna una petita classificació d’aquests pins.

Com es pot veure els passadors es poden classificar en quatre classificacions principals com ara el Comando LCD Pins de dades LCD Pins, targeta SD perns i Poder Pins, no necessitem saber molt sobre el funcionament detallat d'aquests pins, ja que serà tenir cura de la nostra biblioteca Arduino.
També podeu trobar una ranura per a targetes SD a la part inferior del mòdul que es mostra més amunt, que es pot utilitzar per carregar una targeta SD amb fitxers d'imatge bmp, i aquestes imatges es poden mostrar a la nostra pantalla LCD TFT mitjançant el programa Arduino.
Una altra cosa important a tenir en compte és la vostra interfície IC. Hi ha molts tipus de mòduls TFT disponibles al mercat, des del mòdul TFT LCD original Adafruit fins a clons xinesos econòmics. És possible que un programa que funcioni perfectament per al vostre escut d'Adafruit no funcioni de la mateixa manera per a les taules xineses. Per tant, és molt important saber quins tipus de pantalla LCD teniu a la mà. Aquest detall s’ha d’obtenir al proveïdor. Si teniu un clon barat com el meu, probablement utilitzeu el controlador IC ili9341. Podeu seguir aquest tutorial d'interfície TFT LCD amb Arduino per provar alguns exemples bàsics de programes i sentir-vos còmode amb la pantalla LCD. Consulteu també els nostres altres projectes TFT LCD amb Arduino aquí:
- Com utilitzar NeoPixel LED Strip amb Arduino i TFT LCD
- Bloqueig de codi digital controlat per telèfon intel·ligent mitjançant Arduino
Calibració de la pantalla TFT LCD per a pantalla tàctil:
Si teniu previst utilitzar la funció de pantalla tàctil del mòdul TFT LCD, haureu de calibrar-la perquè funcioni correctament. Una pantalla LCD sense calibratge pot funcionar poc probable, per exemple, es pot tocar en un lloc i el TFT pot respondre si es toca en un altre lloc. Aquests resultats de calibratge no seran similars per a tots els taulers i, per tant, us quedareu sols per fer-ho.
La millor manera de calibrar és fer servir el programa d’exemple de calibratge (que inclou la biblioteca) o fer servir el monitor sèrie per detectar l’error. Tanmateix, per a aquest projecte, ja que la mida dels botons és gran, el calibratge no hauria de ser un gran problema i també explicaré com podeu calibrar la pantalla a la secció de programació següent.
Connexions LCD TFT amb Arduino:
La pantalla TFT LCD de 2,4 polzades és un Arduino Shield perfecte. Podeu prémer directament la pantalla LCD que es troba a la part superior de l’Arduino Uno i que coincidirà perfectament amb els pins i es desplaçarà. Tot i això, pel que fa a qüestions de seguretat, cobreix el terminal de programació del vostre Arduino UNO amb una petita cinta d’aïllament, per si el terminal entra en contacte amb la pantalla LCD TFT. La pantalla LCD muntada a UNO tindrà un aspecte semblant a continuació.

Programació del vostre Arduino per a LCD TFT:
Estem utilitzant la biblioteca SPFD5408 per fer funcionar aquest codi de calculadora arduino. Es tracta d’una biblioteca modificada d’Adafruit i pot funcionar perfectament amb el nostre mòdul TFT LCD. Podeu consultar el programa complet al final d’aquest article.
Nota: És molt important que instal·leu aquesta biblioteca al vostre IDE Arduino o aquest programa per compilar-lo sense cap error.
Per instal·lar aquesta biblioteca, només cal que feu clic a l’enllaç superior que us portarà a una pàgina de Github. Allà feu clic a clona o descarregueu i seleccioneu "Descarregar ZIP". Es descarregarà un fitxer zip.
Ara, obriu Arduino IDE i seleccioneu Sketch -> Include Librarey -> Add.ZIP library. S'obrirà una finestra del navegador, aneu al fitxer ZIP i feu clic a "D'acord". Si heu tingut èxit, haureu de notar "Biblioteca afegida a les vostres biblioteques" a l'extrem inferior esquerre d'Arduino. Es proporciona una guia detallada per fer el mateix al Tutorial d’interfaces.
Ara podeu utilitzar el codi següent al vostre IDE Arduino i penjar-lo al vostre Arduino UNO perquè funcioni la calculadora de pantalla tàctil. Més avall, he explicat el codi en petits segments.
Necessitem tres biblioteques perquè funcioni aquest programa; totes aquestes tres biblioteques es van donar al fitxer ZIP que heu descarregat de l'enllaç proporcionat anteriorment. Simplement els he inclòs al codi com es mostra a continuació.
#incloure
Com s’ha dit anteriorment, cal calibrar la pantalla LCD perquè funcioni com s’esperava, però no us preocupeu, els valors que es donen aquí són gairebé universals. Les variables TS_MINX, TS_MINY, TS_MAXX i TS_MAXY decideixen el calibratge de la pantalla. Podeu jugar al seu voltant si creieu que el calibratge no és satisfactori.
#define TS_MINX 125 #define TS_MINY 85 #define TS_MAXX 965 #define TS_MAXY 905
Com sabem, la pantalla TFT LCD pot mostrar molts colors, tots aquests colors s’han d’introduir en valor hexadecimal. Per fer-la més llegible per humans, assignem aquests valors a una variable com es mostra a continuació.
#define BLANC 0x0000 // Negre-> Blanc #define GROC 0x001F // Blau-> Groc #define CYAN 0xF800 // Red-> Cyan #define PINK 0x07E0 // Green-> Pink #define RED 0x07FF // Cyan -> Red #define VERD 0xF81F // Rosa -> Verd #define BLAU 0xFFE0 // Groc-> Blau #define NEGRE 0xFFFF // Blanc-> Negre
Molt bé, ara podem entrar a la part de programació. Aquest programa inclou tres seccions. Un és crear una interfície d’usuari d’una calculadora amb botons i pantalla. A continuació, detectar els botons en funció del tacte dels usuaris i finalment calcular els resultats i mostrar-los. Passem-los un a un.
1. Creació d'una interfície d'usuari de la calculadora:
Aquí és on podeu utilitzar molta de la vostra creativitat per dissenyar la interfície d’usuari de la calculadora. Simplement he fet un disseny bàsic d’una calculadora amb 16 botons i una pantalla. Heu de construir el disseny de la mateixa manera que dibuixareu alguna cosa sobre pintura MS. Les biblioteques afegides us permetran dibuixar línies, rectangles, cercles, caràcters, cordes i molt més de qualsevol color preferit. Podeu entendre les funcions disponibles en aquest article.
He utilitzat les habilitats de dibuix de línies i caixes per dissenyar una interfície d’usuari que s’assembla molt a la calculadora dels anys 90. Cada caixa té una amplada i una alçada de 60 píxels.

// Dibuixa el quadre de resultats tft.fillRect (0, 0, 240, 80, CYAN); // Dibuixa la primera columna tft.fillRect (0,260,60,60, VERMELL); tft.fillRect (0,200,60,60, NEGRE); tft.fillRect (0,140,60,60, NEGRE); tft.fillRect (0,80,60,60, NEGRE); // Dibuixa la tercera columna tft.fillRect (120.260,60,60, VERD); tft.fillRect (120.200,60,60, NEGRE); tft.fillRect (120.140,60,60, NEGRE); tft.fillRect (120,80,60,60, NEGRE); // Dibuixa la columna secunda i quarta per a (int b = 260; b> = 80; b- = 60) {tft.fillRect (180, b, 60,60, BLAU); tft.fillRect (60, b, 60,60, NEGRE);} // Dibuixa línies horitzontals per a (int h = 80; h <= 320; h + = 60) tft.drawFastHLine (0, h, 240, BLANC); // Dibuixa línies verticals per a (int v = 0; v <= 240; v + = 60) tft.drawFastVLine (v, 80, 240, BLANC); // Mostra les funcions del teclat per a (int j = 0; j <4; j ++) {per a (int i = 0; i <4; i ++) {tft.setCursor (22 + (60 * i), 100 + (60 * j)); tft.setTextSize (3); tft.setTextColor (BLANC); tft.println (símbol);
2. Detecció dels botons:
Una altra tasca difícil és detectar el tacte de l'usuari. Cada vegada que l'usuari toqui algun lloc, podrem saber com és la posició X i Y del píxel que va tocar. Aquest valor es pot mostrar al monitor sèrie mitjançant la impressió println, tal com es mostra a continuació.
TSPoint p = waitTouch (); X = py; Y = px; Serial.print (X); Serial.print (','); Serial.println (Y); // + "" + Y);
Ja que hem dissenyat la caixa amb una amplada i una alçada de 60 píxels cadascuna i tenim quatre files i per a columnes a partir de (0,0). La posició de cada quadre es pot predir tal com es mostra a la imatge següent.

Però, en el cas pràctic, aquest no serà el resultat. Hi haurà una gran diferència entre el valor esperat i el real, a causa del problema de calibratge.
Per tant, per predir la posició exacta del quadre, heu de fer clic a la línia i comprovar-ne la posició corresponent al monitor sèrie. Pot ser que aquesta no sigui la manera més professional de fer-ho, però tot i així funciona perfectament. Vaig mesurar la posició de totes les línies i vaig obtenir els valors següents.

Ara, ja que sabem la posició de totes les caixes. Quan un usuari toca qualsevol lloc, podem predir on ha tocat comparant els seus valors (X, Y) amb el valor de cada quadre, tal com es mostra a continuació.
if (X <105 && X> 50) // Detecció de botons a la columna 2 {if (Y> 0 && Y <85) {Serial.println ("Botó 0"); // Es prem el botó 0 si (Nombre == 0) Nombre = 0; else Nombre = (Nombre * 10) + 0; // Es prem dues vegades} if (Y> 85 && Y <140) {Serial.println ("Botó 2"); if (Nombre == 0) Nombre = 2; else Nombre = (Nombre * 10) + 2; // Prement dues vegades}
3. Visualització de números i càlcul del resultat:
El pas final és calcular el resultat i mostrar-los a la pantalla TFT LCD. Aquesta calculadora arduino només pot realitzar operacions amb 2 números. Aquests dos números es denominen com a variables "Num1" i "Num2". La variable "Nombre" dóna i pren valor de Num1 i Num2 i també dóna el resultat.
Quan un ús prem un botó, s'afegeix un dígit al número. Quan es prem un altre botó, el dígit anterior es multiplica per 10 i s'hi afegeix el nou número. Per exemple, si premem 8 i després premem 5 i després premem 7. A continuació, primer la variable mantindrà 8 després (8 * 10) + 5 = 85 després (85 * 10) +7 = 857. Per tant, finalment la variable tindrà el valor 857 amb ell.
if (Y> 192 && Y <245) {Serial.println ("Botó 8"); if (Nombre == 0) Nombre = 8; else Nombre = (Nombre * 10) + 8; // tornat a prémer}
Quan realitzem qualsevol operació com l'addició, quan els usuaris premen el botó d'addició, el valor de Number es transferirà a Num1 i, a continuació, Number es farà zero per tal que es prepari per prendre l'entrada per al segon número.
Quan es prem Equal, el valor de Nombre s'enviarà a Num2 i es farà el càlcul corresponent (en aquest cas, addició) i el resultat es tornarà a emmagatzemar a la variable "Nombre".
Finalment, aquest valor es mostrarà a la pantalla LCD.
Treball:
El funcionament d'aquesta calculadora de pantalla tàctil Arduino és senzill. Heu de carregar el codi que es mostra a continuació al vostre Arduino i activar-lo. La calculadora es mostra a la pantalla LCD.

Ara podeu introduir qualsevol número i realitzar els vostres càlculs. Es limita a només dos operands i únic operador per ara. Però podeu modificar el codi perquè tingui moltes opcions.
Heu de prémer la tecla "C" per esborrar el valor de la pantalla cada vegada després de realitzar un càlcul. Espero que hagueu entès el projecte i us hagi agradat construir alguna cosa similar. Si teniu dubtes, no dubteu a publicar-los als fòrums o a la secció de comentaris que hi ha a continuació. Ens veiem la propera vegada amb un altre projecte interessant fins aleshores feliç informàtica !!
Consulteu també el vídeo de demostració següent.
