- Materiale necesare:
- Cunoașterea modulului de ecran LCD TFT:
- Calibrarea ecranului LCD TFT pentru ecran tactil:
- Conexiuni TFT LCD cu Arduino:
- Programarea Arduino pentru TFT LCD:
- Lucru:
Arduino a ajutat întotdeauna să construiască proiecte cu ușurință și să le facă să pară mai atractive. Programarea unui ecran LCD cu opțiunea ecranului tactil ar putea suna ca o sarcină complicată, dar bibliotecile și ecranele Arduino au făcut-o foarte ușoară. În acest proiect vom folosi un ecran LCD TFT Arduino de 2,4 ” pentru a construi propriul nostru calculator cu ecran tactil Arduino care ar putea efectua toate calculele de bază, cum ar fi Adunarea, scăderea, divizarea și multiplicarea.
Materiale necesare:
- Arduino Uno
- Ecran LCD TFT de 2,4 ”
- Baterie de 9V.
Cunoașterea modulului de ecran LCD TFT:
Înainte de a ne arunca cu adevărat în proiect, este important să știm cum funcționează acest modul TFT LCD de 2,4 ” și care sunt tipurile prezente în acesta. Să aruncăm o privire asupra pinout-urilor acestui modul de ecran LCD TFT de 2,4 ”.
După cum puteți vedea, există 28 de pini care se vor potrivi perfect în orice placa Arduino Uno / Arduino Mega. O mică clasificare a acestor știfturi este dată în tabelul de mai jos.
După cum puteți vedea, pinii pot fi clasificați în patru clasificări principale, cum ar fi pinii de comandă LCD, pinii de date LCD, pinii cardului SD și pinii de alimentare. Biblioteca noastră Arduino.
Puteți găsi, de asemenea, un slot pentru card SD în partea de jos a modulului prezentat mai sus, care poate fi folosit pentru a încărca un card SD cu fișiere de imagine bmp, iar aceste imagini pot fi afișate pe ecranul nostru LCD TFT utilizând Programul Arduino.
Un alt lucru important de remarcat este IC-ul dvs. de interfață. Există multe tipuri de module TFT disponibile pe piață, începând de la modulul original Adafruit TFT LCD până la clone chinezești ieftine. Un program care funcționează perfect pentru scutul dvs. Adafruit s-ar putea să nu funcționeze la fel pentru plăcile chinezești. Deci, este foarte important să știți ce tipuri de afișaj LCD țineți în mână. Acest detaliu trebuie obținut de la furnizor. Dacă aveți o clonă ieftină ca a mea, atunci cel mai probabil se folosește IC-ul driverului ili9341. Puteți urma această interfață TFT LCD cu tutorialul Arduino pentru a încerca câteva exemple de programe de bază și pentru a vă simți confortabil cu ecranul LCD. De asemenea, verificați celelalte proiecte TFT LCD cu Arduino aici:
- Cum se folosește banda LED NeoPixel cu Arduino și TFT LCD
- Blocare cod digital controlat prin telefon inteligent folosind Arduino
Calibrarea ecranului LCD TFT pentru ecran tactil:
Dacă intenționați să utilizați funcția de ecran tactil a modulului TFT LCD, atunci trebuie să o calibrați pentru a funcționa corect. Este posibil ca un ecran LCD fără calibrare să funcționeze puțin probabil, de exemplu, puteți atinge într-un singur loc și TFT ar putea răspunde pentru o atingere în alt loc. Aceste rezultate ale calibrărilor nu vor fi similare pentru toate plăcile și, prin urmare, rămâneți singur pentru a face acest lucru.
Cel mai bun mod de calibrare este să folosiți exemplul de calibrare (vine cu bibliotecă) sau să utilizați monitorul serial pentru a vă detecta eroarea. Cu toate acestea, pentru acest proiect, deoarece dimensiunea butoanelor este mare calibrarea nu ar trebui să fie o mare problemă și vă voi explica, de asemenea, modul în care puteți calibra ecranul în secțiunea de programare de mai jos.
Conexiuni TFT LCD cu Arduino:
Ecranul LCD TFT de 2,4 ”este un Arduino Shield perfect. Puteți împinge direct ecranul LCD pe partea de sus a Arduino Uno și se va potrivi perfect cu pinii și se va strecura. Cu toate acestea, deoarece problemele de siguranță acoperă terminalul de programare al Arduino UNO cu o bandă mică de izolare, doar în cazul în care terminalul vine în contact cu ecranul LCD TFT. Ecranul LCD asamblat pe UNO va arăta cam așa mai jos.
Programarea Arduino pentru TFT LCD:
Folosim Biblioteca SPFD5408 pentru a funcționa acest cod de calculator arduino. Aceasta este o bibliotecă modificată a Adafruit și poate funcționa perfect cu modulul nostru LCD TFT. Puteți verifica programul complet la sfârșitul acestui articol.
Notă: Este foarte important pentru dvs. să instalați această bibliotecă în Arduino IDE sau în acest program pentru a compila fără nicio eroare.
Pentru a instala această bibliotecă, puteți pur și simplu să faceți clic pe linkul de mai sus, care vă va duce la o pagină Github. Acolo faceți clic pe clonare sau descărcare și selectați „Descărcați ZIP”. Va fi descărcat un fișier zip.
Acum, deschideți Arduino IDE și selectați Sketch -> Include Librarey -> Add.ZIP library. Se va deschide o fereastră de browser navigați la fișierul ZIP și faceți clic pe „OK”. Dacă aveți succes, ar trebui să observați „Biblioteca adăugată bibliotecilor dvs.” în colțul din stânga jos al Arduino. Un ghid detaliat pentru a face același lucru este dat în Tutorialul de interfațare.
Acum, puteți utiliza codul de mai jos în ID-ul dvs. Arduino și îl puteți încărca pe Arduino UNO pentru ca calculatorul cu ecran tactil să funcționeze. Mai jos, am explicat codul în segmente mici.
Avem nevoie de trei biblioteci pentru ca acest program să funcționeze; toate aceste trei biblioteci au fost date în fișierul ZIP pe care l-ați descărcat de pe linkul furnizat mai sus. Le-am inclus pur și simplu în cod așa cum se arată mai jos.
#include
Așa cum am spus mai devreme, trebuie să calibrăm ecranul LCD pentru a funcționa așa cum era de așteptat, dar nu vă faceți griji, valorile date aici sunt aproape universale. Variabilele TS_MINX, TS_MINY, TS_MAXX și TS_MAXY decid calibrarea ecranului. Puteți juca în jurul lor dacă considerați că calibrarea nu este satisfăcătoare.
#define TS_MINX 125 #define TS_MINY 85 #define TS_MAXX 965 #define TS_MAXY 905
După cum știm, ecranul TFT LCD poate afișa o mulțime de culori, toate aceste culori trebuie introduse în valoare hexagonală. Pentru a face mai ușor de citit de către oameni, atribuim aceste valori unei variabile așa cum se arată mai jos.
#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 VERDE 0xF81F // Roz -> Verde #define ALBASTRU 0xFFE0 // Galben-> Albastru #define NEGRU 0xFFFF // Alb-> Negru
Bine acum, putem intra în partea de programare. Există trei secțiuni implicate în acest program. Una este crearea unei interfețe UI a unui calculator cu butoane și afișaj. Apoi, detectarea butoanelor bazate pe atingerea utilizatorilor și în final calcularea rezultatelor și afișarea acestora. Să le trecem pe rând unul câte unul.
1. Crearea unei UI a calculatorului:
Aici puteți folosi o mulțime de creativitate pentru a proiecta interfața utilizator a calculatorului. Am realizat pur și simplu un aspect de bază al unui calculator cu 16 Butoane și o unitate de afișare. Trebuie să construiți designul așa cum veți desena ceva pe vopseaua MS. Bibliotecile adăugate vă vor permite să desenați linii, dreptunghi, cercuri, caractere, șiruri și multe altele din orice culoare preferată. Puteți înțelege funcțiile disponibile din acest articol.
Am folosit abilitățile de desenare a liniilor și a casetelor pentru a proiecta o interfață UI care seamănă foarte mult cu calculatorul anilor 90 Fiecare cutie are o lățime și o înălțime de 60 pixeli.
// Desenați caseta de rezultate tft.fillRect (0, 0, 240, 80, CYAN); // Desenați prima coloană tft.fillRect (0,260,60,60, RED); tft.fillRect (0,200,60,60, NEGRU); tft.fillRect (0,140,60,60, NEGRU); tft.fillRect (0,80,60,60, NEGRU); // Desenați a treia coloană tft.fillRect (120.260,60,60, VERDE); tft.fillRect (120.200,60,60, NEGRU); tft.fillRect (120,140,60,60, NEGRU); tft.fillRect (120,80,60,60, NEGRU); // Desenați coloana secundară și a patra pentru (int b = 260; b> = 80; b- = 60) {tft.fillRect (180, b, 60,60, ALBASTRU); tft.fillRect (60, b, 60,60, BLACK);} // Desenați linii orizontale pentru (int h = 80; h <= 320; h + = 60) tft.drawFastHLine (0, h, 240, WHITE); // Desenați linii verticale pentru (int v = 0; v <= 240; v + = 60) tft.drawFastVLine (v, 80, 240, WHITE); // Afișați tastele pentru (int j = 0; j <4; j ++) {pentru (int i = 0; i <4; i ++) {tft.setCursor (22 + (60 * i), 100 + (60 * j)); tft.setTextSize (3); tft.setTextColor (ALB); tft.println (simbol);
2. Detectarea butoanelor:
O altă sarcină dificilă este detectarea atingerii utilizatorului. De fiecare dată când utilizatorul atinge undeva vom putea afla cum se află poziția X și Y a pixelului pe care l-a atins. Această valoare poate fi afișată pe monitorul serial folosind println așa cum se arată mai jos.
TSPoint p = waitTouch (); X = py; Y = px; Serial.print (X); Serial.print (','); Serial.println (Y); // + "" + Y);
Deoarece am proiectat caseta cu lățimea și înălțimea de 60 pixeli fiecare și avem patru rânduri și pentru coloane începând de la (0,0). Poziția fiecărei cutii poate fi prezisă așa cum se arată în imaginea de mai jos.
Dar, în caz practic, acesta nu va fi rezultatul. Va exista o diferență mare între valoarea așteptată și cea reală, din cauza problemei de calibrare.
Deci, pentru a prezice poziția exactă a casetei, trebuie să faceți clic pe linie și să verificați poziția corespunzătoare pe monitorul serial. Este posibil să nu fie cel mai profesionist mod de a face acest lucru, dar totuși funcționează perfect. Am măsurat poziția tuturor liniilor și am obținut valorile de mai jos.
Acum, deoarece știm poziția tuturor cutiilor. Când un utilizator atinge oriunde, putem prezice unde a atins comparând valorile sale (X, Y) cu valoarea pentru fiecare casetă, așa cum se arată mai jos.
if (X <105 && X> 50) // Detectarea butoanelor de pe coloana 2 {if (Y> 0 && Y <85) {Serial.println ("Butonul 0"); // Butonul 0 este apăsat dacă (Număr == 0) Număr = 0; else Number = (Număr * 10) + 0; // Apăsat de două ori} if (Y> 85 && Y <140) {Serial.println ("Butonul 2"); if (Number == 0) Number = 2; else Number = (Număr * 10) + 2; // Apăsat de două ori}
3. Afișarea numerelor și calcularea rezultatului:
Ultimul pas este să calculați rezultatul și să le afișați pe ecranul TFT LCD. Acest calculator arduino poate efectua operații numai cu 2 numere. Aceste două numere sunt denumite variabile „Num1” și „Num2”. Variabila „Număr” dă și ia valoare de la Num1 și Num2 și, de asemenea, dă rezultatul.
Când o utilizare apasă un buton, o cifră este adăugată la număr. Când este apăsat un alt buton, cifra anterioară este înmulțită cu 10 și noul număr este adăugat cu acesta. De exemplu, dacă apăsăm 8 și apoi apăsăm 5 și apoi apăsăm 7. Apoi mai întâi variabila va ține 8 apoi (8 * 10) + 5 = 85 apoi (85 * 10) +7 = 857. Deci, în cele din urmă, variabila va avea valoarea 857 cu ea.
if (Y> 192 && Y <245) {Serial.println ("Butonul 8"); if (Număr == 0) Număr = 8; else Number = (Număr * 10) + 8; // Apăsat din nou}
Când efectuăm orice operațiune cum ar fi adăugarea, atunci când utilizatorii apasă butonul de adăugare, valoarea din Număr va fi transferată la Num1 și apoi Numărul va deveni zero, astfel încât să se pregătească să ia intrarea pentru al doilea număr.
Când se apasă Egal, valoarea din Număr va fi trimisă la Num2 și apoi se va face calculul respectiv (în acest caz adăugarea), iar rezultatul va fi din nou stocat în variabila „Număr”.
În cele din urmă, această valoare va fi afișată pe ecranul LCD.
Lucru:
Funcționarea acestui calculator cu ecran tactil Arduino este simplă. Trebuie să încărcați codul de mai jos pe Arduino și să îl declanșați. Calculatorul este afișat pe ecranul LCD.
Acum, puteți introduce orice număr și puteți efectua calculele. Deocamdată este limitat la doar doi operandi și la unicul operator. Dar, puteți modifica codul pentru a face să aibă o mulțime de opțiuni.
Trebuie să apăsați „C” pentru a șterge valoarea de pe ecran de fiecare dată după efectuarea unui calcul. Sper că ați înțeles proiectul și v-a plăcut să construiți ceva similar. Dacă aveți îndoieli, nu ezitați să le postați pe forumuri sau în secțiunea de comentarii de mai jos. Ne vedem data viitoare cu un alt proiect interesant până atunci calcule fericite !!
De asemenea, verificați videoclipul demonstrativ de mai jos.