- Tarvittavat materiaalit:
- TFT LCD -näyttömoduulin tutustuminen:
- TFT-LCD-näytön kalibrointi kosketusnäyttöä varten:
- TFT LCD -yhteydet Arduinolla:
- Arduino for TFT LCD: n ohjelmointi:
- Työskentely:
Arduino on aina auttanut rakentamaan projekteja helposti ja saamaan ne näyttämään houkuttelevammilta. LCD-näytön ohjelmointi kosketusnäytöllä voi kuulostaa monimutkaiselta tehtävältä, mutta Arduinon kirjastot ja kilvet olivat tehneet siitä todella helppoa. Tässä projektissa käytämme 2,4 tuuman Arduino TFT LCD -näyttöä rakentamaan oman Arduino-kosketusnäytön laskimen, joka pystyy suorittamaan kaikki peruslaskut, kuten yhteenlasku, vähennyslasku, jako ja kertolasku.
Tarvittavat materiaalit:
- Arduino Uno
- 2,4 tuuman TFT-LCD-näytön suojus
- 9 V: n akku.
TFT LCD -näyttömoduulin tutustuminen:
Ennen kuin todella sukellamme projektiin, on tärkeää tietää, miten tämä 2,4 tuuman TFT LCD -moduuli toimii ja mitkä ovat siinä olevat tyypit. Katsotaanpa tämän 2,4 tuuman TFT-LCD-näyttömoduulin pinouts.
Kuten näette, on 28 nastaa, jotka sopivat täydellisesti mihin tahansa Arduino Uno / Arduino Mega Boardiin. Pieni luokitus näistä nastoista on annettu alla olevassa taulukossa.
Kuten näette, nastat voidaan luokitella neljään pääluokitukseen, kuten LCD-komentotapit, LCD-datanastat, SD-korttitapit ja virtaliittimet, emme tarvitse tietää paljon näiden nastojen yksityiskohtaisesta toiminnasta, koska ne ovat meidän Arduino-kirjasto.
Yllä olevan moduulin alaosasta löytyy myös SD-korttipaikka, jota voidaan käyttää SD-kortin lataamiseen bmp-kuvatiedostoilla, ja nämä kuvat voidaan näyttää TFT-LCD-näytössämme Arduino-ohjelman avulla.
Toinen tärkeä huomioitava asia on Interface IC. Markkinoilla on monenlaisia TFT-moduuleja alkaen alkuperäisestä Adafruit TFT LCD -moduulista halpaan kiinalaiseen klooniin. Ohjelma, joka toimii täydellisesti Adafruit-kilpillesi, ei välttämättä toimi samalla tavalla kiinalaisilla levynlevyillä. Joten on erittäin tärkeää tietää, minkä tyyppisiä LCD-näyttöjä pidät kädessäsi. Tämä tieto on hankittava myyjältä. Jos sinulla on halpa klooni, kuten minun, se todennäköisesti käyttää ili9341-ohjain-IC: tä. Voit seurata tätä TFT-LCD-liitäntää Arduino-opetusohjelman kanssa kokeilemaan joitain perusesimerkkejä ja mukautumaan LCD-näyttöön. Katso myös muut TFT-LCD-projektimme Arduinon kanssa täältä:
- Kuinka käyttää NeoPixel-LED-nauhaa Arduinon ja TFT-nestekidenäytön kanssa
- Älypuhelimen ohjaama digitaalinen koodilukko Arduinolla
TFT-LCD-näytön kalibrointi kosketusnäyttöä varten:
Jos aiot käyttää TFT LCD -moduulin kosketusnäyttötoimintoa, se on kalibroitava, jotta se toimii oikein. LCD-näyttö ilman kalibrointia saattaa toimia epätodennäköisesti, esimerkiksi saatat koskettaa yhdessä paikassa ja TFT saattaa vastata kosketukseen jossakin muussa paikassa. Nämä kalibrointitulokset eivät ole samanlaiset kaikille taulukoille, joten sinun on jätettävä tämä yksin.
Paras tapa kalibroida on käyttää kalibrointiesimerkkiohjelmaa (mukana kirjastossa) tai käyttää sarjamonitoria virheesi havaitsemiseen. Kuitenkin tässä projektissa, koska painikkeiden koko on suuri, kalibroinnin ei pitäisi olla suuri ongelma, ja selitän myös, kuinka voit kalibroida näytön alla olevan ohjelmointiosan alla.
TFT LCD -yhteydet Arduinolla:
2,4 tuuman TFT-LCD-näyttö on täydellinen Arduino Shield. Voit työntää LCD-näytön suoraan Arduino Unon päälle ja se sopii täydellisesti nastojen kanssa ja liukuu sisään. Turvallisuussyistä peitä kuitenkin Arduino UNO: n ohjelmointiliitin pienellä eristeellä, siltä varalta, että päätelaite koskettaa TFT-LCD-näyttöäsi. UNOon koottu LCD-näyttö näyttää tältä alla.
Arduino for TFT LCD: n ohjelmointi:
Käytämme SPFD5408-kirjastoa saadaksemme tämän arduino-laskimen koodin toimimaan. Tämä on muokattu Adafruit-kirjasto, joka voi toimia saumattomasti LCD-TFT-moduulimme kanssa. Voit tarkistaa koko ohjelman tämän artikkelin lopussa.
Huomaa: On erittäin tärkeää, että asennat tämän kirjaston Arduino IDE -laitteeseesi tai tähän ohjelmaan kääntämiseksi ilman virheitä.
Voit asentaa tämän kirjaston napsauttamalla yllä olevaa linkkiä, joka vie sinut Github-sivulle. Napsauta klooni tai lataa ja valitse "Lataa ZIP". Zip-tiedosto ladataan.
Avaa nyt Arduino IDE ja valitse Luonnos -> Sisällytä kirjasto -> Lisää.ZIP-kirjasto. Selainikkuna avautuu, siirry ZIP-tiedostoon ja napsauta "OK". Sinun tulisi huomata Arduinon vasemmassa alakulmassa oleva kirjasto lisätty kirjastoihisi, jos se onnistuu. Yksityiskohtainen opas saman tekemiseksi annetaan Interfacing-oppaassa.
Nyt voit käyttää alla olevaa koodia Arduino IDE -laitteessasi ja ladata sen Arduino UNO -laitteeseesi, jotta kosketusnäyttölaskin toimii. Myöhemmin olen selittänyt koodin pieniksi segmenteiksi.
Tarvitsemme kolme kirjastoa, jotta tämä ohjelma toimisi; kaikki nämä kolme kirjastoa annettiin ZIP-tiedostoon, jonka latait yllä olevasta linkistä. Olen yksinkertaisesti sisällyttänyt ne koodiin alla olevan kuvan mukaisesti.
#sisältää
Kuten aiemmin on sanottu, meidän on kalibroitava LCD-näyttö, jotta se toimisi odotetulla tavalla, mutta älä huoli, että tässä annetut arvot ovat melkein yleisiä. Muuttujat TS_MINX, TS_MINY, TS_MAXX ja TS_MAXY päättävät näytön kalibroinnin. Voit leikkiä heidän ympärillään, jos mielestäsi kalibrointi ei ole tyydyttävä.
#define TS_MINX 125 #define TS_MINY 85 #define TS_MAXX 965 #define TS_MAXY 905
Koska tiedämme, että TFT LCD -näyttö voi näyttää paljon värejä, kaikki nämä värit on annettava heksadesimaalisena. Jotta se olisi ihmislukuisempi, osoitamme nämä arvot muuttujalle alla olevan kuvan mukaisesti.
#define WHITE 0x0000 // Musta-> Valkoinen #define KELTAINEN 0x001F // Sininen-> Keltainen #define CYAN 0xF800 // Punainen-> Syaani #define PINK 0x07E0 // Vihreä-> Vaaleanpunainen #define PUNAINEN 0x07FF // Syaani -> Punainen #define GREEN 0xF81F // Vaaleanpunainen -> Vihreä #define BLUE 0xFFE0 // Keltainen-> Sininen #define MUSTA 0xFFFF // Valkoinen-> Musta
Okei, voimme päästä ohjelmointiosaan. Ohjelmaan kuuluu kolme osiota. Yksi on luoda laskimen käyttöliittymä, jossa on painikkeet ja näyttö. Tunnista sitten painikkeet käyttäjien kosketuksen perusteella ja laskee tulokset ja näyttää ne. Olkaamme läpi ne yksi kerrallaan.
1. Laskimen käyttöliittymän luominen:
Tässä voit käyttää paljon luovuuttasi suunnitellaksesi laskimen käyttöliittymää. Olen yksinkertaisesti tehnyt laskimen perusasettelun, jossa on 16 painiketta ja yksi näyttöyksikkö. Suunnittelu on rakennettava samalla tavalla kuin piirrät jotain MS-maalille. Lisättyjen kirjastojen avulla voit piirtää viivoja, suorakulmiota, ympyröitä, merkkejä, merkkijonoja ja paljon muuta haluamaasi väriä. Voit ymmärtää käytettävissä olevat toiminnot tästä artikkelista.
Olen käyttänyt viiva- ja laatikkopiirtokykyjä suunnitellessani käyttöliittymän, joka näyttää hyvin samanlaiselta kuin 90-luvun laskin. Jokaisen laatikon leveys ja korkeus on 60 pikseliä.
// Piirrä tulosruutu tft.fillRect (0, 0, 240, 80, CYAN); // Piirrä ensimmäinen sarake tft.fillRect (0,260,60,60, PUNAINEN); tft.fillRect (0,200,60,60, MUSTA); tft.fillRect (0,140,60,60, MUSTA); tft.fillRect (0,80,60,60, MUSTA); // Piirrä kolmas sarake tft.fillRect (120,260,60,60, VIHREÄ); tft.fillRect (120 200 200, 60, 60, MUSTA); tft.fillRect (120 140, 60, 60, MUSTA); tft.fillRect (120,80,60,60, MUSTA); // Piirrä toissijainen ja neljäs sarake (int b = 260; b> = 80; b- = 60) {tft.fillRect (180, b, 60,60, SININEN); tft.fillRect (60, b, 60,60, MUSTA);} // Piirrä vaakasuoria viivoja (int h = 80; h <= 320; h + = 60) tft.drawFastHLine (0, h, 240, VALKOINEN); // Piirrä pystyviivat (int v = 0; v <= 240; v + = 60) tft.drawFastVLine (v, 80, 240, VALKOINEN); // Näytä näppäimistön tunnukset (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 (VALKOINEN); tft.println (symboli);
2. Painikkeiden tunnistaminen:
Toinen haastava tehtävä on tunnistaa käyttäjän kosketus. Joka kerta, kun käyttäjä koskettaa jonnekin, voimme selvittää, miten hänen koskettamansa pikselin X- ja Y-sijainti. Tämä arvo voidaan näyttää sarjanäytössä käyttämällä println-tiedostoa alla olevan kuvan mukaisesti.
TSPoint p = waitTouch (); X = py; Y = px; Sarjaprintti (X); Sarja.tulos (','); Sarja.println (Y); // + "" + Y);
Koska olemme suunnitelleet laatikon, jonka leveys ja korkeus on 60 pikseliä, ja meillä on neljä riviä ja sarakkeille alkaen (0,0). Kunkin laatikon sijainti voidaan ennustaa alla olevan kuvan mukaisesti.
Mutta käytännössä tämä ei ole tulos. Odotetun ja todellisen arvon välillä on suuri ero kalibrointiongelman vuoksi.
Joten, jotta voit ennustaa laatikon tarkan sijainnin, sinun on napsautettava viivaa ja tarkistettava sen vastaava sijainti sarjavalvonnassa. Tämä ei ehkä ole ammattimaisin tapa tehdä se, mutta silti se toimii täydellisesti. Mittasin kaikkien viivojen sijainnin ja sain seuraavat arvot.
Koska tiedämme kaikkien laatikoiden sijainnin. Kun käyttäjä koskettaa minne tahansa, voimme ennustaa, mihin hän on koskettanut, vertaamalla hänen (X, Y) arvojaan kunkin laatikon arvoon alla esitetyllä tavalla.
if (X <105 && X> 50) // Painikkeiden tunnistaminen sarakkeessa 2 {if (Y> 0 && Y <85) {Sarja.println ("Painike 0"); // Painiketta 0 painetaan, jos (Luku == 0) Luku = 0; muut Luku = (Luku * 10) + 0; // Painetaan kahdesti} if (Y> 85 && Y <140) {Serial.println ("Button 2"); jos (Luku == 0) Luku = 2; else Luku = (Luku * 10) + 2; // painetaan kahdesti}
3. Numeroiden näyttäminen ja tuloksen laskeminen:
Viimeinen vaihe on laskea tulos ja näyttää se TFT LCD-näytöllä. Tämä arduino-laskin voi suorittaa toiminnon vain kahdella numerolla. Nämä kaksi numeroa on nimetty muuttujiksi "Num1" ja "Num2". Muuttuja "Numero" antaa ja ottaa arvon Num1: stä ja Num2: sta ja kantaa myös tuloksen.
Kun käyttö painaa painiketta, yksi numero lisätään numeroon. Kun painetaan toista painiketta, edellinen yksi luku kerrotaan 10: llä ja uusi numero lisätään siihen. Esimerkiksi, jos painamme 8 ja sitten 5 ja sitten 7. Paina sitten muuttuja ensin 8, sitten (8 * 10) + 5 = 85 ja sitten (85 * 10) +7 = 857. Lopuksi muuttujalla on arvo 857 sen kanssa.
if (Y> 192 && Y <245) {Sarja.println ("painike 8"); jos (Luku == 0) Luku = 8; muut Luku = (Luku * 10) + 8; // painetaan uudelleen}
Kun suoritamme minkä tahansa operaation, kuten lisäyksen, kun käyttäjät painavat lisäyspainiketta, Numeron arvo siirretään Num1: een ja sitten Numero muutetaan nollaksi, jotta se valmistautuu ottamaan toisen numeron syötteen.
Kun painetaan Equal-näppäintä, Numerossa oleva arvo lähetetään Num2: lle ja sitten suoritetaan vastaava laskelma (tässä tapauksessa lisäys) ja tulos tallennetaan jälleen muuttujaan "Number".
Lopuksi tämä arvo näkyy nestekidenäytössä.
Työskentely:
Tämän Arduino-kosketusnäyttölaskurin toiminta on helppoa. Sinun on ladattava alla annettu koodi Arduinoon ja käynnistettävä se. Laskin näkyy LCD-näytölläsi.
Nyt voit kirjoittaa minkä tahansa numeron ja suorittaa laskelmat. Se on rajoitettu vain kahteen operandiin ja toistaiseksi ainoaan operaattoriin. Mutta voit säätää koodia, jotta sillä on paljon vaihtoehtoja.
Sinun on painettava "C" tyhjentääksesi ruudun arvon joka kerta laskutoimituksen jälkeen. Toivottavasti ymmärrät projektin ja nautit rakentamaan jotain vastaavaa. Jos sinulla on epäilyksiä, voit lähettää ne foorumeille tai alla olevaan kommenttiosioon. Nähdään ensi kerralla toisen mielenkiintoisen projektin kanssa siihen asti onnellista tietojenkäsittelyä !!
Tarkista myös alla oleva esittelyvideo.