- Reikalingos medžiagos:
- Susipažinimas su TFT LCD ekrano moduliu:
- TFT LCD ekrano kalibravimas jutikliniam ekranui:
- TFT LCD jungtys su „Arduino“:
- „Arduino“ programavimas TFT LCD:
- Darbas:
„Arduino“ visada padėjo lengvai kurti projektus ir padaryti juos patrauklesnius. Skystųjų kristalų ekrano programavimas naudojant jutiklinio ekrano parinktį gali skambėti kaip sudėtinga užduotis, tačiau „Arduino“ bibliotekos ir skydai tai padarė labai lengva. Šiame projekte mes naudosime 2,4 colių „Arduino TFT“ LCD ekraną, kad sukurtume savo „ Arduino“ jutiklinio ekrano skaičiuoklę, galinčią atlikti visus pagrindinius skaičiavimus, tokius kaip susiejimas, atimimas, dalijimas ir daugyba.
Reikalingos medžiagos:
- Arduino Uno
- 2,4 colių TFT LCD ekranas
- 9 V akumuliatorius.
Susipažinimas su TFT LCD ekrano moduliu:
Prieš pradedant pasinerti į projektą, svarbu žinoti, kaip veikia šis 2,4 colių TFT skystųjų kristalų modulis ir kokie jo tipai yra. Pažvelkime į šio 2,4 colių TFT LCD ekrano modulio pinouts.
Kaip matote, yra 28 kaiščiai, kurie puikiai tinka bet kuriai „Arduino Uno“ / „Arduino Mega“ lentai. Nedidelė šių kaiščių klasifikacija pateikta žemiau esančioje lentelėje.
Kaip matote, kaiščius galima suskirstyti į keturias pagrindines klasifikacijas, tokias kaip LCD komandų kaiščiai, LCD duomenų kaiščiai, SD kortelių kaiščiai ir maitinimo kaiščiai, mes neturime daug žinoti apie išsamų šių kaiščių darbą, nes jie bus pasirūpinti mūsų „Arduino“ biblioteka.
Aukščiau pavaizduoto modulio apačioje taip pat galite rasti SD kortelės lizdą, kurį galima naudoti norint įkelti SD kortelę su bmp vaizdo failais, o šie vaizdai gali būti rodomi mūsų TFT LCD ekrane naudojant „Arduino“ programą.
Kitas svarbus dalykas, kurį reikia atkreipti dėmesį, yra jūsų sąsajos IC. Rinkoje yra daugybė TFT modulių tipų, pradedant nuo originalaus „Adafruit“ TFT LCD modulio ir baigiant pigiais kinų klonais. Puikiai jūsų „Adafruit“ skydui tinkanti programa gali neveikti Kinijos išardymo lentų. Taigi, labai svarbu žinoti, kokio tipo LCD ekranus laikote rankoje. Šią informaciją reikia gauti iš pardavėjo. Jei turite pigų kloną, tokį kaip aš, greičiausiai jis naudoja ili9341 tvarkyklės IC. Galite sekti šią TFT skystųjų kristalų sąsają su „Arduino“ mokymo programa, kad išbandytumėte keletą pagrindinių programų pavyzdžių ir patogiau naudotis LCD ekranu. Taip pat peržiūrėkite kitus mūsų „Arduino“ TFT LCD projektus:
- Kaip naudoti „NeoPixel“ LED juostelę su „Arduino“ ir TFT LCD
- Išmaniojo telefono valdomas skaitmeninis kodinis užraktas naudojant „Arduino“
TFT LCD ekrano kalibravimas jutikliniam ekranui:
Jei planuojate naudoti savo TFT LCD modulio jutiklinio ekrano funkciją, turite jį sukalibruoti, kad jis veiktų tinkamai. Skystųjų kristalų ekranas be kalibravimo gali veikti mažai tikėtinai, pavyzdžiui, galite liesti vienoje vietoje, o TFT gali reaguoti į lietimą kitoje vietoje. Šie kalibravimo rezultatai nebus panašūs į visas lentas, todėl jūs turite tai padaryti patys.
Geriausias būdas atlikti kalibravimą yra naudoti kalibravimo pavyzdžio programą (pateikiama kartu su biblioteka) arba nuoseklųjį monitorių, kad aptiktumėte klaidą. Tačiau šiam projektui, nes mygtukų dydis yra didelis, kalibravimas neturėtų būti didelė problema, taip pat paaiškinsiu, kaip galite kalibruoti ekraną, žemiau esančiame programavimo skyriuje.
TFT LCD jungtys su „Arduino“:
2,4 colių TFT LCD ekranas yra puikus „Arduino Shield“. Galite tiesiogiai stumti LCD ekraną ant „Arduino Uno“, ir jis puikiai derės su kaiščiais ir įslys. Tačiau saugumo sumetimais uždenkite „Arduino UNO“ programavimo terminalą maža izoliacine juostele, tik tuo atveju, jei terminalas liečia jūsų TFT LCD ekraną. UNO surinktas skystųjų kristalų ekranas toliau atrodys panašiai.
„Arduino“ programavimas TFT LCD:
Mes naudojame SPFD5408 biblioteką, kad šis arduino skaičiuoklės kodas veiktų. Tai modifikuota „Adafruit“ biblioteka ir gali sklandžiai dirbti su mūsų LCD TFT moduliu. Visą programą galite patikrinti šio straipsnio pabaigoje.
Pastaba: jums labai svarbu įdiegti šią biblioteką į „Arduino IDE“ ar šią programą, kad būtų galima sukompiliuoti be klaidų.
Norėdami įdiegti šią biblioteką, galite tiesiog spustelėti aukščiau esančią nuorodą, kuri pateks į „Github“ puslapį. Spustelėkite kloną arba atsisiųskite ir pasirinkite „Atsisiųsti ZIP“. Bus atsisiųstas ZIP failas.
Dabar atidarykite „Arduino IDE“ ir pasirinkite „ Sketch -> Include Librarey -> Add.ZIP library“. Bus atidarytas naršyklės langas, pereikite prie ZIP failo ir spustelėkite „Gerai“. Jei pavyks, apatiniame kairiajame „Arduino“ kampe turėtumėte pastebėti „Biblioteka pridėta prie jūsų bibliotekų“. Išsamus vadovas, kaip padaryti tą patį, pateiktas sąsajoje.
Dabar galite naudoti žemiau esantį kodą „Arduino IDE“ ir įkelti jį į „Arduino UNO“, kad veiktų jutiklinio ekrano skaičiuoklė. Toliau aš paaiškinau kodą į mažus segmentus.
Kad ši programa veiktų, mums reikia trijų bibliotekų; visos šios trys bibliotekos buvo nurodytos ZIP faile, kurį atsisiuntėte iš aukščiau pateiktos nuorodos. Aš paprasčiausiai įtraukiau juos į kodą, kaip parodyta žemiau.
# įtraukti
Kaip minėta anksčiau, turime sukalibruoti skystųjų kristalų ekraną, kad jis veiktų taip, kaip tikėtasi, tačiau nesijaudinkite, kad čia pateiktos vertės yra beveik universalios. Kintamieji TS_MINX, TS_MINY, TS_MAXX ir TS_MAXY lemia ekrano kalibravimą. Galite žaisti aplink juos, jei manote, kad kalibravimas nėra patenkinamas.
#define TS_MINX 125 #define TS_MINY 85 #define TS_MAXX 965 #define TS_MAXY 905
Kaip žinome, TFT skystųjų kristalų ekranas gali rodyti daugybę spalvų, visas šias spalvas reikia įvesti šešiakampe reikšme. Kad būtų lengviau įskaityti žmogui, šias reikšmes priskiriame kintamajam, kaip parodyta žemiau.
#define WHITE 0x0000 // Juoda-> Balta #apibrėžti GELTONA 0x001F // Mėlyna-> Geltona #define CYAN 0xF800 // Raudona-> Žalsvai mėlyna #define PINK 0x07E0 // Žalia-> Rožinė #define RED 0x07FF // Žydra -> Raudona #define GREEN 0xF81F // Rožinė -> Žalia #Define BLUE 0xFFE0 // Geltona-> Mėlyna #define BLACK 0xFFFF // Balta-> Juoda
Gerai, dabar galime patekti į programavimo dalį. Šioje programoje yra trys skyriai. Vienas iš jų yra skaičiuoklės su mygtukais ir ekranu vartotojo sąsajos kūrimas. Tada, aptikę mygtukus pagal vartotojų palietimą, galiausiai apskaičiuodami rezultatus ir juos parodydami. Leiskime jiems pereiti po vieną.
1. Skaičiuoklės vartotojo sąsajos sukūrimas:
Čia galite panaudoti daug savo kūrybiškumo kurdami skaičiuoklės vartotojo sąsają. Aš paprasčiausiai sukūriau pagrindinį skaičiuoklės išdėstymą su 16 mygtukų ir vienu ekrano bloku. Turite sukonstruoti dizainą taip, kaip ką nors nupiešite ant MS dažų. Pridėtos bibliotekos leis jums piešti linijas, stačiakampį, apskritimus, simbolius, stygas ir dar daugiau bet kurios pageidaujamos spalvos. Šiame straipsnyje galite suprasti galimas funkcijas.
Aš panaudojau linijų ir langelių piešimo galimybes kurdamas vartotojo sąsają, kuri labai panaši į 90-ųjų skaičiuoklę. Kiekvieno langelio plotis ir aukštis yra 60 taškų.
// Nubraižykite rezultatų langelį tft.fillRect (0, 0, 240, 80, CYAN); // Nubrėžkite pirmąjį stulpelį tft.fillRect (0,260,60,60, RED); tft.fillRect (0,200,60,60, JUODA); tft.fillRect (0,140,60,60, JUODA); tft.fillRect (0,80,60,60, JUODA); // Nubrėžkite trečiąjį stulpelį tft.fillRect (120,260,60,60, ŽALIOJI); tft.fillRect (120,200,60,60, JUODA); tft.fillRect (120 140, 60, 60, JUODA); tft.fillRect (120,80,60,60, JUODA); // Nubrėžkite antrą ir ketvirtą stulpelius (int b = 260; b> = 80; b- = 60) {tft.fillRect (180, b, 60,60, BLUE); tft.fillRect (60, b, 60,60, BLACK);} // Nubrėžkite horizontalias linijas (int h = 80; h <= 320; h + = 60) tft.drawFastHLine (0, h, 240, WHITE); // Nubrėžkite vertikalias linijas (int v = 0; v <= 240; v + = 60) tft.drawFastVLine (v, 80, 240, WHITE); // Rodyti klaviatūros etiketes (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 (BALTAS); tft.println (simbolis);
2. Mygtukų aptikimas:
Kita sudėtinga užduotis yra aptikti vartotojo prisilietimą. Kiekvieną kartą, kai vartotojas kažkur palies, galėsime sužinoti, kur jo paliesto pikselio X ir Y padėtis. Ši vertė gali būti rodoma serijiniame monitoriuje naudojant println, kaip parodyta žemiau.
TSPoint p = waitTouch (); X = py; Y = px; Serijinis spaudinys (X); Serial.print (','); Serijos.println (Y); // + "" + Y);
Kadangi mes suprojektavome langelį, kurio plotis ir aukštis yra 60 pikselių, turime keturias eilutes ir stulpeliams, prasidedantiems nuo (0,0). Kiekvieno langelio padėtį galima nuspėti, kaip parodyta žemiau esančiame paveikslėlyje.
Bet praktiškai tai nebus rezultatas. Dėl kalibravimo problemos bus didelis skirtumas tarp laukiamos ir faktinės vertės.
Taigi, norėdami numatyti tikslią langelio padėtį, turite spustelėti liniją ir patikrinti jos atitinkamą vietą serijiniame monitoriuje. Tai gali būti ne pats profesionaliausias būdas tai padaryti, bet vis tiek jis puikiai veikia. Aš išmatavau visų linijų padėtį ir gavau šias vertes.
Dabar, kadangi mes žinome visų langelių padėtį. Kai vartotojas paliečia bet kurią vietą, galime nuspėti, kur jis palietė, lygindami jo (X, Y) reikšmes su kiekvieno langelio verte, kaip parodyta žemiau.
if (X <105 && X> 50) // 2 stulpelio mygtukų aptikimas {if (Y> 0 && Y <85) {Serial.println ("mygtukas 0"); // Mygtukas 0 paspaudžiamas, jei (Skaičius == 0) Skaičius = 0; else Skaičius = (Skaičius * 10) + 0; // Du kartus paspausta} if (Y> 85 && Y <140) {Serial.println ("2 mygtukas"); jei (Skaičius == 0) Skaičius = 2; else Skaičius = (Skaičius * 10) + 2; // Du kartus paspausta}
3. Skaičių rodymas ir rezultatų apskaičiavimas:
Paskutinis žingsnis yra apskaičiuoti rezultatą ir parodyti juos TFT LCD ekrane. Ši „ Arduino“ skaičiuoklė gali atlikti operaciją tik su dviem skaičiais. Šie du skaičiai pavadinti kintamaisiais „Num1“ ir „Num2“. Kintamasis „Skaičius“ suteikia ir ima vertę iš Num1 ir Num2, taip pat atspindi rezultatą.
Kai naudojimas paspaudžia mygtuką, prie skaičiaus pridedamas vienas skaitmuo. Paspaudus kitą mygtuką, ankstesnis vienas skaitmuo padauginamas iš 10 ir kartu su juo pridedamas naujas skaičius. Pavyzdžiui, jei paspausime 8, tada paspauskite 5, tada paspauskite 7. Tada pirmiausia kintamasis laikys 8, tada (8 * 10) + 5 = 85, tada (85 * 10) +7 = 857. Taigi galiausiai kintamasis turės vertė 857 su juo.
if (Y> 192 && Y <245) {Serial.println ("8 mygtukas"); jei (Skaičius == 0) Skaičius = 8; else Skaičius = (Skaičius * 10) + 8; // Dar kartą paspausta}
Kai mes atliekame bet kokią operaciją, pavyzdžiui, papildymą, kai vartotojai paspaudžia pridėjimo mygtuką, reikšmė iš Skaičius bus perkelta į Num1, o tada Skaičius bus nulinis, kad jis pasirengtų priimti antrojo skaičiaus įvestį.
Paspaudus „Equal“, „ Num2“ reikšmė bus nusiųsta į Num2 , tada bus atliktas atitinkamas skaičiavimas (šiuo atveju papildymas) ir rezultatas vėl bus saugomas kintamajame „Number“.
Galiausiai ši vertė bus rodoma LCD ekrane.
Darbas:
Šio „ Arduino“ jutiklinio ekrano skaičiuoklės darbas yra paprastas. Turite įkelti žemiau pateiktą kodą į „Arduino“ ir jį suaktyvinti. Skaičiuoklė bus rodoma jūsų LCD ekrane.
Dabar galite įvesti bet kurį skaičių ir atlikti skaičiavimus. Kol kas jis apsiriboja tik dviem operandais ir vieninteliu operatoriumi. Bet jūs galite pakoreguoti kodą, kad jis turėtų daug galimybių.
Kiekvieną kartą atlikę skaičiavimą turite paspausti „C“, kad išvalytumėte ekrano vertę. Tikiuosi, kad supratote projektą ir patiko kurti kažką panašaus. Jei turite kokių nors abejonių, rašykite jas forumuose arba žemiau esančiame komentarų skyriuje. Iki kito susitikimo su kitu įdomiu projektu iki tol laimingo skaičiavimo !!
Taip pat patikrinkite žemiau esantį demonstracinį vaizdo įrašą.