- Nepieciešamie materiāli:
- Iepazīšanās ar TFT LCD ekrāna moduli:
- TFT LCD ekrāna kalibrēšana skārienekrānam:
- TFT LCD savienojumi ar Arduino:
- Arduino TFT LCD programmēšana:
- Darbs:
Arduino vienmēr ir palīdzējis viegli veidot projektus un padarīt tos pievilcīgākus. LCD ekrāna ieprogrammēšana ar skārienekrāna opciju var izklausīties kā sarežģīts uzdevums, taču Arduino bibliotēkas un vairogi to ir padarījuši patiešām vienkāršu. Šajā projektā mēs izmantosim 2,4 ”Arduino TFT LCD ekrānu, lai izveidotu savu Arduino skārienekrāna kalkulatoru, kas varētu veikt visus pamata aprēķinus, piemēram, saskaitīšanu, atņemšanu, dalīšanu un reizināšanu.
Nepieciešamie materiāli:
- Arduino Uno
- 2,4 ”TFT LCD displeja vairogs
- 9V akumulators.
Iepazīšanās ar TFT LCD ekrāna moduli:
Pirms mēs patiešām ienirstam projektā, ir svarīgi zināt, kā darbojas šis 2,4 collu TFT LCD modulis un kādi ir tā veidi. Apskatīsim šī 2,4 ”TFT LCD ekrāna moduļa tapas.
Kā redzat, ir 28 tapas, kas lieliski iederēsies jebkurā Arduino Uno / Arduino Mega dēlī. Neliela šo tapu klasifikācija ir norādīta zemāk esošajā tabulā.
Kā redzat, tapas var klasificēt četrās galvenajās klasifikācijās, piemēram, LCD komandu tapas, LCD datu tapas, SD karšu tapas un strāvas tapas, mums nav daudz jāzina par detalizētu šo tapu darbību, jo tās rūpēsies mūsu Arduino bibliotēka.
Iepriekš redzamā moduļa apakšdaļā varat atrast arī SD kartes slotu, ko var izmantot, lai ielādētu SD karti ar bmp attēlu failiem, un šos attēlus var parādīt mūsu TFT LCD ekrānā, izmantojot Arduino programmu.
Vēl viena svarīga lieta, kas jāņem vērā, ir jūsu interfeisa IC. Tirgū ir pieejami daudzi TFT moduļu veidi, sākot no sākotnējā Adafruit TFT LCD moduļa līdz lētiem ķīniešu kloniem. Programma, kas lieliski darbojas jūsu Adafruit vairoga gadījumā, var nedarboties tāpat kā ķīniešu izlaušanas dēļi. Tāpēc ir ļoti svarīgi zināt, kāda veida LCD displejus jūs turat rokā. Šī informācija jāsaņem pie pārdevēja. Ja jums ir lēts klons, piemēram, mans, tas, visticamāk, izmanto ili9341 draivera IC. Varat sekot šai TFT LCD saskarnei ar Arduino apmācību, lai izmēģinātu dažas pamata piemēru programmas un ērti izmantotu LCD ekrānu. Apskatiet arī citus mūsu TFT LCD projektus ar Arduino šeit:
- Kā lietot NeoPixel LED sloksni ar Arduino un TFT LCD
- Viedtālruņa kontrolēta digitālā koda bloķēšana, izmantojot Arduino
TFT LCD ekrāna kalibrēšana skārienekrānam:
Ja plānojat izmantot TFT LCD moduļa skārienekrāna funkciju, tas ir jākalibrē, lai tas darbotos pareizi. LCD ekrāns bez kalibrēšanas var nedarboties diez vai, piemēram, jūs varat pieskarties vienai vietai, un TFT var reaģēt uz pieskārienu citā vietā. Šie kalibrēšanas rezultāti nebūs līdzīgi visiem dēļiem, un tāpēc jūs to varat darīt pats.
Labākais veids, kā kalibrēt, ir izmantot kalibrēšanas paraugprogrammu (komplektā ar bibliotēku) vai seriālo monitoru, lai noteiktu kļūdu. Tomēr šim projektam, jo pogu izmērs ir liels, kalibrēšanai nevajadzētu būt lielai problēmai, un es zemāk esošajā programmēšanas sadaļā arī paskaidrošu, kā jūs varat kalibrēt ekrānu.
TFT LCD savienojumi ar Arduino:
2,4 collu TFT LCD ekrāns ir ideāls Arduino Shield. Jūs varat tieši nospiest LCD ekrānu virs Arduino Uno, un tas lieliski saderēs ar tapām un ieslīdēs cauri. Tomēr drošības apsvērumu dēļ pārklājiet Arduino UNO programmēšanas termināli ar nelielu izolācijas lenti, tikai gadījumā, ja terminālis nonāk saskarē ar jūsu TFT LCD ekrānu. UNO saliktais LCD ekrāns izskatīsies apmēram šādi.
Arduino TFT LCD programmēšana:
Mēs izmantojam bibliotēku SPFD5408, lai šis arduino kalkulatora kods darbotos. Šī ir pārveidota Adafruit bibliotēka, un tā var darboties nevainojami ar mūsu LCD TFT moduli. Visu programmu varat pārbaudīt šī raksta beigās.
Piezīme. Ir ļoti svarīgi instalēt šo bibliotēku savā Arduino IDE vai šajā programmā, lai apkopotu bez kļūdām.
Lai instalētu šo bibliotēku, varat vienkārši noklikšķināt uz iepriekš redzamās saites, kas novirzīs jūs uz Github lapu. Tur noklikšķiniet uz klona vai lejupielādējiet un atlasiet “Lejupielādēt ZIP”. Tiks lejupielādēts ZIP fails.
Tagad atveriet Arduino IDE un atlasiet Sketch -> Include Librarey -> Add.ZIP library. Tiks atvērts pārlūkprogrammas logs, dodieties uz ZIP failu un noklikšķiniet uz Labi. Ja tas izdosies, Arduino apakšējā kreisajā stūrī vajadzētu pamanīt “Bibliotēka pievienota bibliotēkām”. Detalizēta rokasgrāmata, kā to izdarīt, ir sniegta saskarnes apmācībā.
Tagad jūs varat izmantot zemāk esošo kodu savā Arduino IDE un augšupielādēt to savā Arduino UNO, lai skārienekrāna kalkulators darbotos. Tālāk es esmu izskaidrojis kodu mazos segmentos.
Lai šī programma darbotos, mums ir vajadzīgas trīs bibliotēkas; visas šīs trīs bibliotēkas tika norādītas ZIP failā, kuru lejupielādējāt no iepriekš norādītās saites. Es tos vienkārši esmu iekļāvis kodā, kā parādīts zemāk.
# iekļaut
Kā minēts iepriekš, mums ir jākalibrē LCD ekrāns, lai tas darbotos, kā paredzēts, taču neuztraucieties, šeit norādītās vērtības ir gandrīz universālas. Mainītāji TS_MINX, TS_MINY, TS_MAXX un TS_MAXY izlemj par ekrāna kalibrēšanu. Jūs varat rotaļāties ap viņiem, ja jūtat, ka kalibrēšana nav apmierinoša.
#define TS_MINX 125 #define TS_MINY 85 #define TS_MAXX 965 #define TS_MAXY 905
Tā kā mēs zinām, ka TFT LCD ekrāns var parādīt daudz krāsu, visas šīs krāsas jāievada sešstūra vērtībā. Lai padarītu to vairāk lasāmu cilvēkiem, šīs vērtības piešķiram mainīgajam, kā parādīts zemāk.
#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 // Rozā -> Zaļš #define BLUE 0xFFE0 // Dzeltens-> Zils #define BLACK 0xFFFF // Balta-> Melns
Labi tagad, mēs varam iekļūt programmēšanas daļā. Šajā programmā ir iesaistītas trīs sadaļas. Viens veido kalkulatora lietotāja interfeisu ar pogām un displeju. Pēc tam, nosakot pogas, pamatojoties uz lietotāju pieskārieniem, un beidzot aprēķinot rezultātus un tos parādot. Ļaujiet mums tikt cauri viņiem pa vienam.
1. Kalkulatora lietotāja saskarnes izveide:
Šeit jūs varat izmantot daudz sava radošuma, lai noformētu kalkulatora lietotāja saskarni. Esmu vienkārši izveidojis kalkulatora pamata izkārtojumu ar 16 pogām un vienu displeja bloku. Dizains jākonstruē tāpat kā kaut ko uzzīmējat uz MS krāsas. Pievienotās bibliotēkas ļaus jums uzzīmēt līnijas, taisnstūri, apļus, rakstzīmes, virknes un daudz ko citu vēlamo krāsu. Šajā rakstā varat saprast pieejamās funkcijas.
Esmu izmantojis līniju un lodziņu zīmēšanas spējas, lai izstrādātu lietotāja interfeisu, kas izskatās ļoti līdzīgs 90. gadu kalkulatoram. Katras rūtiņas platums un augstums ir 60 pikseļi.
// uzzīmējiet rezultātu lodziņu tft.fillRect (0, 0, 240, 80, CYAN); // Zīmējiet pirmo kolonnu tft.fillRect (0,260,60,60, RED); tft.fillRect (0,200,60,60, MELNA); tft.fillRect (0,140,60,60, MELNA); tft.fillRect (0,80,60,60, MELNA); // Zīmējiet trešo kolonnu tft.fillRect (120,260,60,60, ZAĻŠ); tft.fillRect (120,200,60,60, MELNA); tft.fillRect (120 140, 60, 60, melns); tft.fillRect (120,80,60,60, MELNA); // Zīmēt secīgo un ceturto kolonnu (int b = 260; b> = 80; b- = 60) {tft.fillRect (180, b, 60,60, ZILS); tft.fillRect (60, b, 60,60, BLACK);} // Zīmējiet horizontālās līnijas (int h = 80; h <= 320; h + = 60) tft.drawFastHLine (0, h, 240, WHITE); // Zīmējiet vertikālas līnijas (int v = 0; v <= 240; v + = 60) tft.drawFastVLine (v, 80, 240, WHITE); // Parādīt tastatūras apzīmējumus (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 (BALTS); tft.println (simbols);
2. Pogu noteikšana:
Vēl viens sarežģīts uzdevums ir lietotāja pieskāriena noteikšana. Katru reizi, kad lietotājs kaut kur pieskaras, mēs varēsim noskaidrot, kur atrodas viņa pieskartā pikseļa X un Y pozīcija. Šo vērtību var parādīt sērijveida monitorā, izmantojot println, kā parādīts zemāk.
TSPoint p = waitTouch (); X = py; Y = px; Sērijas.druka (X); Sērijas.druka (','); Sērijas.println (Y); // + "" + Y);
Tā kā mēs esam izstrādājuši lodziņu ar platumu un augstumu 60 pikseļi katrā, un mums ir četras rindas un kolonnām, sākot no (0,0). Katra lodziņa pozīciju var paredzēt, kā parādīts zemāk esošajā attēlā.
Bet praktiskā gadījumā tas nebūs rezultāts. Kalibrēšanas problēmas dēļ būs liela atšķirība starp paredzamo un faktisko vērtību.
Tātad, lai paredzētu precīzu lodziņa atrašanās vietu, jums ir jānoklikšķina uz līnijas un jāpārbauda tā atbilstošā pozīcija sērijveida monitorā. Tas, iespējams, nav visprofesionālākais veids, kā to izdarīt, bet tomēr tas darbojas perfekti. Es izmērīju visu līniju stāvokli un ieguvu zemāk norādītās vērtības.
Tā kā mēs zinām visu lodziņu pozīciju. Kad lietotājs pieskaras jebkur, mēs varam paredzēt, kur viņš ir pieskāries, salīdzinot viņa (X, Y) vērtības ar katra lodziņa vērtību, kā parādīts zemāk.
if (X <105 && X> 50) // Pogu noteikšana 2. kolonnā {if (Y> 0 && Y <85) {Serial.println ("Poga 0"); // Poga 0 tiek nospiesta, ja (Skaitlis == 0) Skaitlis = 0; cits numurs = (skaitlis * 10) + 0; // Divreiz nospiests}, ja (Y> 85 && Y <140) {Serial.println ("Poga 2"); ja (skaitlis == 0) skaitlis = 2; cits skaitlis = (skaitlis * 10) + 2; // Divreiz nospiests}
3. Skaitļu parādīšana un rezultāta aprēķināšana:
Pēdējais solis ir aprēķināt rezultātu un parādīt tos TFT LCD ekrānā. Šis arduino kalkulators var veikt darbību tikai ar 2 cipariem. Šie divi skaitļi tiek nosaukti kā mainīgie “Num1” un “Num2”. Mainīgais lielums “Number” dod un ņem vērtību no Num1 un Num2, kā arī uzrāda rezultātu.
Kad lietojums nospiež pogu, skaitlim tiek pievienots viens cipars. Nospiežot citu pogu, iepriekšējais cipars tiek reizināts ar 10 un ar to tiek pievienots jaunais skaitlis. Piemēram, ja mēs nospiežam 8 un pēc tam 5 un pēc tam 7. Tad vispirms mainīgais turēs 8, tad (8 * 10) + 5 = 85, pēc tam (85 * 10) +7 = 857. Tātad visbeidzot mainīgajam būs vērtība 857 ar to.
ja (Y> 192 && Y <245) {Serial.println ("8. poga"); ja (skaitlis == 0) skaitlis = 8; cits skaitlis = (skaitlis * 10) + 8; // Vēlreiz nospiests}
Kad mēs veicam jebkuru darbību, piemēram, pievienošanu, kad lietotāji nospiež pievienošanas pogu, vērtība no Numura tiks pārsūtīta uz Num1, un pēc tam skaitlis tiks nulle, lai tas būtu gatavs ievadīt otro numuru.
Nospiežot vienādu, skaitļa vērtība tiks nosūtīta uz Num2 un pēc tam tiks veikts attiecīgais aprēķins (šajā gadījumā papildinājums), un rezultāts atkal tiks saglabāts mainīgajā “Number”.
Visbeidzot, šī vērtība tiks parādīta LCD ekrānā.
Darbs:
Šī Arduino skārienekrāna kalkulatora darbība ir vienkārša. Jums ir augšupielādējiet zemāk norādīto kodu savā Arduino un jāaktivizē. Kalkulators tiek parādīts jūsu LCD ekrānā.
Tagad jūs varat ievadīt jebkuru skaitli un veikt aprēķinus. Pagaidām tas ir ierobežots tikai ar diviem operandiem un tikai operatoriem. Bet jūs varat pielāgot kodu, lai tam būtu daudz iespēju.
Katru reizi pēc aprēķina veikšanas jums jānospiež “C”, lai ekrānā notīrītu vērtību. Ceru, ka sapratāt projektu un jums patika veidot kaut ko līdzīgu. Ja jums ir kādas šaubas, droši ievietojiet tos forumos vai zemāk esošajā komentāru sadaļā. Tiekamies nākamreiz ar citu interesantu projektu līdz tam laimīgu skaitļošanu !!
Pārbaudiet arī zemāk esošo demonstrācijas video.