- Potrebni materijali:
- Upoznavanje modula TFT LCD zaslona:
- Kalibracija TFT LCD zaslona za dodirni zaslon:
- TFT LCD veze s Arduinom:
- Programiranje vašeg Arduina za TFT LCD:
- Radno:
Arduino je uvijek pomagao u jednostavnoj izgradnji projekata i činili ih privlačnijima. Programiranje LCD zaslona s opcijom zaslona osjetljivog na dodir moglo bi zvučati kao složen zadatak, ali Arduino knjižnice i štitovi učinili su to zaista jednostavnim. U ovom projektu koristit ćemo 2,4-inčni Arduino TFT LCD zaslon za izradu vlastitog Arduino računala osjetljivog na dodir koji bi mogao izvoditi sve osnovne izračune poput zbrajanja, oduzimanja, dijeljenja i množenja.
Potrebni materijali:
- Arduino Uno
- Štit od 2,4 ”TFT LCD zaslona
- 9V baterija.
Upoznavanje modula TFT LCD zaslona:
Prije nego što zapravo zaronimo u projekt, važno je znati kako funkcionira ovaj 2,4-inčni TFT LCD modul i koje su vrste u njemu prisutni. Pogledajmo izglede ovog 2,4-inčnog TFT LCD zaslona.

Kao što vidite, postoji 28 pinova koji će se savršeno uklopiti u bilo koju Arduino Uno / Arduino Mega ploču. Mala klasifikacija ovih pribadača data je u donjoj tablici.

Kao što vidite, igle se mogu svrstati u četiri glavne klasifikacije, kao što su LCD naredbene igle, LCD podaci, SD i SD kartice, ne moramo znati puno o detaljnom radu ovih pinova, jer će o njima voditi računa naša Arduino knjižnica.
Također možete pronaći utor za SD karticu na dnu gore prikazanog modula, koji se može koristiti za učitavanje SD kartice u BMP slikovne datoteke, a te slike mogu se prikazati na našem TFT LCD zaslonu pomoću programa Arduino.
Još jedna važna stvar koju treba imati na umu je IC vašeg sučelja. Na tržištu su dostupne mnoge vrste TFT modula, počevši od originalnog Adafruit TFT LCD modula do jeftinih kineskih klonova. Program koji savršeno odgovara vašem štitniku Adafruit možda neće raditi isto za kineske probojne ploče. Dakle, vrlo je važno znati koje vrste LCD zaslona držite u ruci. Ovaj detalj mora se dobiti od dobavljača. Ako imate jeftini klon poput mog, onda najvjerojatnije koristi upravljački program ili9341. Možete slijediti ovo TFT LCD povezivanje s Arduinoovim uputstvom da biste isprobali neke osnovne primjere programa i ugodno se osjećali s LCD zaslonom. Ovdje pogledajte i druge naše TFT LCD projekte s Arduinom:
- Kako koristiti NeoPixel LED traku s Arduinom i TFT LCD zaslonom
- Zaključavanje digitalnog koda upravljano pametnim telefonom pomoću Arduina
Kalibracija TFT LCD zaslona za dodirni zaslon:
Ako planirate koristiti funkciju dodirnog zaslona vašeg TFT LCD modula, tada ga morate kalibrirati kako bi ispravno radio. LCD zaslon bez kalibracije možda neće raditi, na primjer, možete dodirnuti na jednom mjestu, a TFT može reagirati na dodir na nekom drugom mjestu. Ovi rezultati kalibracije neće biti slični za sve ploče i stoga vam je preostalo da to učinite sami.
Najbolji način kalibracije je upotreba primjera programa kalibracije (dolazi s knjižnicom) ili serijski monitor za otkrivanje vaše pogreške. Međutim, za ovaj projekt, budući da je veličina gumba velika kalibracija, ne bi trebao predstavljati veliki problem, a također ću objasniti kako možete kalibrirati zaslon u odjeljku za programiranje u nastavku.
TFT LCD veze s Arduinom:
2,4-inčni TFT LCD zaslon savršen je Arduino Shield. Možete izravno gurnuti LCD zaslon na vrh Arduino Uno-a i on će se savršeno podudarati s iglama i provući. Međutim, iz sigurnosnih razloga pokrijte programski terminal vašeg Arduino UNO malom izolacijskom trakom, za svaki slučaj ako terminal dođe u kontakt s vašim TFT LCD zaslonom. LCD sastavljen na UNO-u izgledat će otprilike ovako u nastavku.

Programiranje vašeg Arduina za TFT LCD:
Koristimo knjižnicu SPFD5408 da bi ovaj arduino kalkulator radio. Ovo je izmijenjena biblioteka Adafruit i može neometano raditi s našim LCD TFT modulom. Kompletni program možete provjeriti na kraju ovog članka.
Napomena: Vrlo je važno da ovu biblioteku instalirate u svoj Arduino IDE ili ovaj program za kompajliranje bez ikakvih pogrešaka.
Da biste instalirali ovu biblioteku, jednostavno kliknite gornju vezu koja će vas odvesti na Github stranicu. Tamo kliknite na kloniraj ili preuzmi i odaberite "Preuzmi ZIP". Bit će preuzeta zip datoteka.
Sada otvorite Arduino IDE i odaberite Skica -> Uključi Librarey -> Dodaj.ZIP biblioteku. Otvorit će se prozor preglednika, pomaknite se do ZIP datoteke i kliknite "U redu". Ako uspijete, trebali biste primijetiti "Biblioteka dodana u vaše knjižnice" u donjem lijevom kutu Arduina. Detaljan vodič za to isto dat je u Vodiču za povezivanje.
Sada možete koristiti donji kod u svom Arduino IDE-u i prenijeti ga na svoj Arduino UNO kako bi kalkulator dodirnog zaslona radio. Dalje, objasnio sam kod na male segmente.
Za rad ovog programa trebaju nam tri knjižnice; sve su ove tri knjižnice date u ZIP datoteci koju ste preuzeli s gore navedene veze. Jednostavno sam ih uključio u kod kako je prikazano u nastavku.
#include
Kao što smo ranije rekli, moramo kalibrirati LCD zaslon kako bi mogao raditi kako se očekivalo, ali ne brinite da su ovdje dane vrijednosti gotovo univerzalne. Kalibracija zaslona odlučuju varijable TS_MINX, TS_MINY, TS_MAXX i TS_MAXY. Možete se igrati oko njih ako smatrate da kalibracija nije zadovoljavajuća.
#define TS_MINX 125 #define TS_MINY 85 #define TS_MAXX 965 #define TS_MAXY 905
Kao što znamo da TFT LCD zaslon može prikazati puno boja, sve te boje moraju se unijeti u hex vrijednosti. Da bismo ga učinili čitljivijim za ljude, dodijeljujemo ove vrijednosti varijabli kao što je prikazano u nastavku.
#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
Dobro, sad možemo ući u programski dio. Tri su odjeljka uključena u ovaj program. Jedan je stvaranje korisničkog sučelja kalkulatora s gumbima i zaslonom. Zatim, otkrivanje gumba na temelju dodira korisnika i konačno izračunavanje rezultata i prikaz. Prođimo ih jedan po jedan.
1. Izrada korisničkog sučelja kalkulatora:
Ovdje možete iskoristiti puno svoje kreativnosti za dizajn korisničkog sučelja kalkulatora. Jednostavno sam napravio osnovni izgled kalkulatora sa 16 tipki i jednom jedinicom zaslona. Morate konstruirati dizajn baš kao da ćete nacrtati nešto na MS boji. Dodane knjižnice omogućit će vam crtanje linija, pravokutnika, krugova, znakova, žica i još mnogo toga bilo koje željene boje. Dostupne funkcije možete razumjeti iz ovog članka.
Koristio sam sposobnosti crtanja linija i okvira za dizajn korisničkog sučelja koje izgleda vrlo slično kalkulatoru iz 90-ih. Svaki okvir ima širinu i visinu od 60 piksela.

// Nacrtajte okvir s rezultatima tft.fillRect (0, 0, 240, 80, CYAN); // Crtanje prvog stupca tft.fillRect (0,260,60,60, CRVENA); tft.fillRect (0,200,60,60, CRNA); tft.fillRect (0,140,60,60, CRNA); tft.fillRect (0,80,60,60, CRNA); // Crtanje treće kolone tft.fillRect (120,260,60,60, ZELENA); tft.fillRect (120,200,60,60, CRNA); tft.fillRect (120,140,60,60, CRNA); tft.fillRect (120,80,60,60, CRNA); // Crtanje sekunde i četvrtog stupca za (int b = 260; b> = 80; b- = 60) {tft.fillRect (180, b, 60,60, PLAVI); tft.fillRect (60, b, 60,60, CRNA);} // Crtanje vodoravnih linija za (int h = 80; h <= 320; h + = 60) tft.drawFastHLine (0, h, 240, BIJELO); // Crtanje okomitih linija za (int v = 0; v <= 240; v + = 60) tft.drawFastVLine (v, 80, 240, WHITE); // Prikaz oznaka tipkovnice za (int j = 0; j <4; j ++) {for (int i = 0; i <4; i ++) {tft.setCursor (22 + (60 * i), 100 + (60 * j)); tft.setTextSize (3); tft.setTextColor (BIJELO); tft.println (simbol);
2. Otkrivanje gumba:
Još jedan izazovan zadatak je otkrivanje korisničkog dodira. Svaki put kad korisnik negdje dodirne, moći ćemo odrediti gdje su X i Y položaj piksela koji je dodirnuo. Ova se vrijednost može prikazati na serijskom monitoru pomoću ispisa kao što je prikazano dolje.
TSPoint p = waitTouch (); X = py; Y = px; Serial.print (X); Serial.print (','); Serial.println (Y); // + "" + Y);
Budući da smo osmislili okvir širine i visine po 60 piksela i imamo četiri reda te za stupce počevši od (0,0). Položaj svakog okvira može se predvidjeti kako je prikazano na donjoj slici.

Ali u praktičnom slučaju to neće biti rezultat. Zbog problema s kalibracijom bit će velika razlika između očekivane i stvarne vrijednosti.
Dakle, da biste predvidjeli točan položaj okvira, morate kliknuti liniju i provjeriti odgovarajući položaj na serijskom monitoru. Ovo možda nije najprofesionalniji način izvođenja, ali svejedno djeluje savršeno. Izmjerio sam položaj svih linija i dobio donje vrijednosti.

Sad, budući da znamo položaj svih kutija. Kada korisnik dodirne bilo gdje, možemo predvidjeti gdje je dodirnuo uspoređujući njegove vrijednosti (X, Y) s vrijednošću za svaki okvir kao što je prikazano u nastavku.
if (X <105 && X> 50) // Otkrivanje gumba na stupcu 2 {if (Y> 0 && Y <85) {Serial.println ("Button 0"); // Pritisnite tipku 0 ako je (Number == 0) Number = 0; else Broj = (Broj * 10) + 0; // Dvaput pritisnuto} if (Y> 85 && Y <140) {Serial.println ("Gumb 2"); if (Broj == 0) Broj = 2; else Broj = (Broj * 10) + 2; // dvaput pritisnuto}
3. Prikaz brojeva i izračunavanje rezultata:
Posljednji korak je izračunavanje rezultata i prikaz na TFT LCD zaslonu. Ovaj arduino kalkulator može izvoditi operacije samo s 2 broja. Ova dva broja nazivaju se varijablama "Num1" i "Num2". Varijabla "Number" daje i uzima vrijednost iz Num1 i Num2, a također nosi rezultat.
Kad upotreba pritisne tipku, jedna se znamenka dodaje broju. Kad se pritisne drugi gumb, prethodna se znamenka pomnoži s 10 i s njom se doda novi broj. Na primjer, ako pritisnemo 8, a zatim pritisnemo 5, a zatim pritisnemo 7. Tada će prvo varijabla sadržavati 8, zatim (8 * 10) + 5 = 85, a zatim (85 * 10) +7 = 857. Dakle, konačno će varijabla imati vrijednost 857 s njom.
if (Y> 192 && Y <245) {Serial.println ("Gumb 8"); if (Broj == 0) Broj = 8; else Broj = (Broj * 10) + 8; // ponovno pritisnuto}
Kada izvodimo bilo koju operaciju poput zbrajanja, kada korisnici pritisnu tipku za zbrajanje, vrijednost iz broja prenijet će se u Num1, a zatim će se broj poništiti tako da se spremi za unos drugog broja.
Kada se pritisne Equal, vrijednost u Number poslat će se na Num2, a zatim će se izvršiti odgovarajući izračun (u ovom slučaju dodatak) i rezultat će se ponovno pohraniti u varijablu "Number".
Napokon će se ova vrijednost prikazati na LCD zaslonu.
Radno:
Rad ovog Arduino kalkulatora osjetljivog na dodir je jednostavan. Morate učitati dolje navedeni kod na svoj Arduino i pokrenuti ga. Kalkulator se prikazuje na vašem LCD zaslonu.

Sada možete unijeti bilo koji broj i izvršiti izračune. Za sada je ograničeno na samo dva operanda i jedini operator. Ali, možete podesiti kôd kako bi imao puno mogućnosti.
Morate pritisnuti "C" da biste očistili vrijednost na zaslonu svaki put nakon izvršavanja izračuna. Nadam se da ste razumjeli projekt i uživali u izgradnji nečeg sličnog. Ako sumnjate, slobodno ih objavite na forumima ili u odjeljku za komentare u nastavku. Vidimo se sljedeći put s još jednim zanimljivim projektom do tada sretnog računanja !!
Također pogledajte demonstracijski video ispod.
