- Szükséges anyagok:
- A TFT LCD képernyő modul megismerése:
- A TFT LCD-képernyő kalibrálása érintőképernyőhöz:
- TFT LCD-kapcsolatok az Arduinóval:
- Az Arduino for TFT LCD programozása:
- Dolgozó:
Az Arduino mindig is segített a projektek egyszerű elkészítésében és vonzóbbá tételében. Az LCD képernyő programozása érintőképernyős opcióval bonyolult feladatnak tűnhet, de az Arduino könyvtárak és pajzsok ezt nagyon megkönnyítették. Ebben a projektben egy 2,4 hüvelykes Arduino TFT LCD képernyőt használunk saját Arduino érintőképernyős számológépünk felépítéséhez, amely minden alapvető számítást elvégezhet, például összeadás, kivonás, osztás és szorzás.
Szükséges anyagok:
- Arduino Uno
- 2,4 ”TFT LCD kijelző pajzs
- 9V-os akkumulátor.
A TFT LCD képernyő modul megismerése:
Mielőtt valóban belemerülnénk a projektbe, fontos tudni, hogyan működik ez a 2,4 hüvelykes TFT LCD modul és milyen típusok vannak benne. Vessünk egy pillantást ennek a 2,4 hüvelykes TFT LCD-képernyőnek a csatlakozóira.
Amint láthatja, 28 csap van, amely tökéletesen illeszkedik bármely Arduino Uno / Arduino Mega táblához. Ezen csapok kis osztályozását az alábbi táblázat tartalmazza.
Amint láthatja, a csapok négy fő osztályozásba sorolhatók, mint például az LCD parancsnoki csapok, az LCD-adatcsapok, az SD-kártyatüskék és a tápfeszültség-csapok, nem kell sokat tudnunk ezeknek a csapoknak a részletes működéséről, mivel ezeket a az Arduino könyvtár.
A fent bemutatott modul alján található egy SD-kártyahely is, amely bmp képfájlokkal ellátott SD-kártya betöltésére használható, és ezek a képek az Arduino Program segítségével TFT LCD-képernyőn jeleníthetők meg.
Egy másik fontos dolog, amit meg kell jegyezni, az Interface IC. Sokféle TFT modul kapható a piacon, az eredeti Adafruit TFT LCD modultól kezdve az olcsó kínai klónokig. Előfordulhat, hogy egy olyan program, amely tökéletesen megfelel az Adafruit pajzsának, nem működik ugyanúgy kínai kitörő tábláknál. Tehát nagyon fontos tudni, hogy milyen típusú LCD-kijelzőket tart kéznél. Ezt a részletet az eladótól kell beszerezni. Ha olyan olcsó klónunk van, mint az enyém, akkor valószínűleg az ili9341 driver IC-t használja. Kövesse ezt a TFT LCD interfészt az Arduino oktatóanyaggal, hogy kipróbálhasson néhány alapvető példaprogramot, és megkönnyítse az LCD képernyőt. Itt tekintheti meg az Arduino-val készített többi TFT LCD-projektünket is:
- A NeoPixel LED szalag használata Arduino és TFT LCD-vel
- Okos telefon vezérelt digitális kódzár az Arduino használatával
A TFT LCD-képernyő kalibrálása érintőképernyőhöz:
Ha a TFT LCD modul érintőképernyős funkcióját tervezi használni, akkor kalibrálnia kell, hogy megfelelően működjön. A kalibrálás nélküli LCD-képernyő valószínűtlen lehet, például érintheti meg egy helyen, a TFT pedig máshol reagálhat érintésre. Ezek a kalibrálási eredmények nem lesznek hasonlóak az összes tábla esetében, ezért Ön egyedül hagyja ezt megtenni.
A kalibrálás legjobb módja a kalibrációs példa program (a könyvtárral együtt) használata, vagy a soros monitor használata a hiba észleléséhez. Ennek a projektnek azonban, mivel a gombok mérete nagy, a kalibrálás nem jelenthet nagy problémát, és az alábbi programozási részben ismertetem a képernyő kalibrálásának módját is.
TFT LCD-kapcsolatok az Arduinóval:
A 2,4 hüvelykes TFT LCD-képernyő tökéletes Arduino Shield. Közvetlenül az LCD-képernyőt nyomhatja az Arduino Uno tetejére, és tökéletesen illeszkedik a csapokhoz, és áthúzható. Biztonsági szempontból azonban takarja el egy kis szigetelőszalaggal az Arduino UNO programozási terminálját, arra az esetre, ha a terminál érintkezésbe kerülne a TFT LCD-képernyőjével. Az UNO-n összeállított LCD az alábbiak szerint fog kinézni.
Az Arduino for TFT LCD programozása:
Az SPFD5408 könyvtár segítségével használjuk ezt az arduino számológép kódot. Ez egy módosított Adafruit könyvtár, amely zökkenőmentesen működhet az LCD TFT modulunkkal. A teljes programot a cikk végén ellenőrizheti.
Megjegyzés: Nagyon fontos, hogy ezt a könyvtárat az Arduino IDE-be vagy a programba telepítse, hogy hibátlanul fordítson.
A könyvtár telepítéséhez egyszerűen kattintson a fenti linkre, amely egy Github oldalra vezet. Kattintson a klónra vagy töltse le és válassza a „ZIP letöltése” lehetőséget. Egy zip fájl letöltésre kerül.
Most nyissa meg az Arduino IDE alkalmazást, és válassza a Sketch -> Include Librarey -> Add.ZIP library lehetőséget. Megnyílik egy böngészőablak, navigáljon a ZIP fájlhoz, és kattintson az „OK” gombra. Ha sikerül, az Arduino bal alsó sarkában észre kell vennie a „Könyvtár hozzáadva a könyvtárakhoz” elemet. Az ehhez szükséges részletes útmutatást az Interfacing Tutorial tartalmazza.
Most használhatja az alábbi kódot az Arduino IDE-jében, és feltöltheti azt Arduino UNO-jába, hogy az érintőképernyős kalkulátor működjön. A továbbiakban apróbb részekre tagoltam a kódot.
Három könyvtárra van szükségünk a program működéséhez; mindhárom könyvtár megtalálható a ZIP fájlban, amelyet a fenti hivatkozásból töltött le. Egyszerűen felvettem őket a kódba, az alábbiak szerint.
#include
Mint korábban említettük, kalibrálnunk kell az LCD képernyőt, hogy az a várt módon működjön, de ne aggódjon, az itt megadott értékek szinte egyetemesek. A TS_MINX, TS_MINY, TS_MAXX és TS_MAXY változók döntik el a képernyő kalibrálását. Akkor játszhat körülöttük, ha úgy érzi, hogy a kalibrálás nem kielégítő.
#define TS_MINX 125 #define TS_MINY 85 #define TS_MAXX 965 #define TS_MAXY 905
Mint tudjuk, a TFT LCD képernyő sok színt képes megjeleníteni, ezeket a színeket hexaértékben kell megadni. Az ember által olvashatóbbá tételéhez ezeket az értékeket egy változóhoz rendeljük, az alábbiak szerint.
#define WHITE 0x0000 // fekete-> fehér #define SÁRGA 0x001F // kék-> sárga #define CYAN 0xF800 // piros-> cián #define PINK 0x07E0 // zöld-> rózsaszín #define RED 0x07FF // cián -> piros #define GREEN 0xF81F // rózsaszín -> zöld #define BLUE 0xFFE0 // sárga-> kék #define BLACK 0xFFFF // fehér-> fekete
Oké, most bekerülhetünk a programozási részbe. Három szakasz foglalkozik ezzel a programmal. Az egyik egy számológép felhasználói felületének létrehozása gombokkal és kijelzővel. Ezután a gombok észlelése a felhasználók érintése alapján, végül az eredmények kiszámítása és megjelenítése. Nézzük át őket egyenként.
1. A számológép felhasználói felületének létrehozása:
Itt használhatja kreativitásának nagy részét a számológép felhasználói felületének megtervezéséhez. Egyszerűen elkészítettem egy számológép alapelrendezését 16 gombbal és egy kijelző egységgel. Ugyanúgy kell elkészítenie a tervet, mint valami MS festékre. A hozzáadott könyvtárak lehetővé teszik vonalak, téglalap, körök, karakterek, húrok és még sok más tetszőleges szín megrajzolását. A cikkben megismerheti az elérhető funkciókat.
A vonal és a doboz rajz képességeit felhasználtam egy olyan felhasználói felület tervezésére, amely nagyon hasonlít a 90-es évek számológépéhez. Minden doboz szélessége és magassága 60 pixel.
// Rajzolja le az Eredmény mezőt tft.fillRect (0, 0, 240, 80, CYAN); // Az első oszlop megrajzolása tft.fillRect (0,260,60,60, RED); tft.fillRect (0,200,60,60, FEKETE); tft.fillRect (0,140,60,60, FEKETE); tft.fillRect (0,80,60,60, FEKETE); // Rajzolja a harmadik oszlopot tft.fillRect (120,260,60,60, ZÖLD); tft.fillRect (120,200,60,60, FEKETE); tft.fillRect (120, 140, 60, 60, FEKETE); tft.fillRect (120,80,60,60, FEKETE); // Rajzolja a Secound & Negyedik oszlopot (int b = 260; b> = 80; b- = 60) {tft.fillRect (180, b, 60,60, KÉK); tft.fillRect (60, b, 60,60, FEKETE);} // Vízszintes vonalak rajzolása (int h = 80; h <= 320; h + = 60) tft.drawFastHLine (0, h, 240, WHITE); // Függőleges vonalak rajzolása (int v = 0; v <= 240; v + = 60) tft.drawFastVLine (v, 80, 240, WHITE); // A billentyűzet címkéinek megjelenítése (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 (FEHÉR); tft.println (szimbólum);
2. A gombok felismerése:
Egy másik kihívást jelentő feladat a felhasználói érintés észlelése. Valahányszor a felhasználó megérint valahova, megtudhatjuk, hogy az általa megérintett pixel X és Y pozíciója hol található. Ez az érték megjeleníthető a soros monitoron a println segítségével, az alábbiak szerint.
TSPoint p = waitTouch (); X = py; Y = px; Soros nyomtatás (X); Soros.nyomtatás (','); Soros.println (Y); // + "" + Y);
Mivel egy 60 pixeles szélességű és magasságú dobozt terveztünk, és négy sora van, és a (0,0) kezdő oszlopokhoz. Az egyes dobozok helyzete megjósolható az alábbi képen látható módon.
De gyakorlati esetben nem ez lesz az eredmény. Nagy lesz a különbség a várható és a tényleges érték között, a kalibrálási probléma miatt.
Tehát a mező pontos helyzetének megjóslásához kattintson a sorra, és ellenőrizze annak megfelelő helyzetét a soros monitoron. Lehet, hogy ez nem a legprofibb módszer, de mégis tökéletesen működik. Megmértem az összes vonal helyzetét, és az alábbi értékeket kaptam.
Most, mivel tudjuk az összes doboz helyzetét. Amikor a felhasználó bárhová megérint, megjósolhatjuk, hová ért, összehasonlítva (X, Y) értékeit az egyes dobozok értékével, az alábbiak szerint.
if (X <105 && X> 50) // A gombok detektálása a 2. oszlopban {if (Y> 0 && Y <85) {Serial.println ("0 gomb"); // A 0 gombot megnyomjuk, ha (Szám == 0) Szám = 0; else Szám = (Szám * 10) + 0; // kétszer megnyomva} if (Y> 85 && Y <140) {Serial.println ("2. gomb"); if (Szám == 0) Szám = 2; else Szám = (Szám * 10) + 2; // kétszer megnyomva}
3. Számok megjelenítése és az eredmény kiszámítása:
Az utolsó lépés az eredmény kiszámítása és a TFT LCD képernyőn való megjelenítése. Ez az arduino számológép csak 2 számmal képes műveleteket végrehajtani. Ezt a két számot „Num1” és „Num2” változónak nevezik. A „Szám” változó értéket ad és vesz a Num1 és a Num2 értékekből, és viseli az eredményt is.
Amikor egy felhasználó megnyom egy gombot, egy számjegy kerül a számhoz. Egy másik gomb megnyomásakor az előző számjegyet megszorozzuk 10-vel, és hozzáadjuk az új számot. Például, ha megnyomjuk a 8, majd az 5, majd a 7 gombot. Ezután a változó először a 8, majd (8 * 10) + 5 = 85, majd (85 * 10) +7 = 857 értéket fogja tartani. Végül a változó a 857-es érték vele.
if (Y> 192 && Y <245) {Serial.println ("8. gomb"); if (Szám == 0) Szám = 8; else Szám = (Szám * 10) + 8; // Újra megnyomva}
Ha olyan műveletet hajtunk végre, mint például az összeadás, amikor a felhasználó megnyomja az összeadás gombot, akkor a Szám értéke átkerül a Num1-be , majd a Szám nullává válik, hogy felkészüljön a második szám bevitelére.
Az Equal megnyomásakor a Number érték a Num2-nek kerül elküldésre, majd elvégzi a megfelelő számítást (ebben az esetben az összeadást), és az eredményt ismét a „Number” változóban tárolja.
Végül ez az érték megjelenik az LCD képernyőn.
Dolgozó:
Ennek az Arduino érintőképernyős kalkulátornak a működése egyszerű. Az alább megadott kódot fel kell töltenie Arduino készülékére, és fel kell tűznie. A számológép megjelenik az LCD képernyőn.
Most tetszőleges számot adhat meg, és elvégezheti a számításokat. Egyelőre csak két operandusra és csak operátorra korlátozódik. De módosíthatja a kódot, hogy sok lehetősége legyen.
A számítás elvégzése után minden alkalommal meg kell nyomnia a „C” gombot a képernyőn lévő érték törléséhez. Remélem, megértette a projektet, és élvezett valami hasonló építését. Ha kétségei vannak, nyugodtan tegye fel őket fórumokra vagy az alábbi megjegyzés rovatba. Találkozunk legközelebb egy másik érdekes projekttel, addig boldog számítástechnikával !!
Ellenőrizze az alábbi demonstrációs videót is.