- Potrebné materiály:
- Zoznámenie sa s modulom TFT LCD obrazovky:
- Kalibrácia TFT LCD obrazovky pre dotykovú obrazovku:
- Pripojenia TFT LCD s Arduino:
- Programovanie vášho Arduina pre TFT LCD:
- Pracovné:
Arduino vždy pomáhalo pri ľahkom vytváraní projektov a zvyšovaní ich atraktívnosti. Programovanie LCD obrazovky s dotykovou obrazovkou by mohlo znieť ako zložitá úloha, ale knižnice a štíty Arduina to uľahčili. V tomto projekte použijeme 2,4 ”Arduino TFT LCD obrazovku na vytvorenie vlastnej kalkulačky Arduino Touch Screen, ktorá by mohla vykonávať všetky základné výpočty ako sčítanie, odčítanie, delenie a násobenie.
Potrebné materiály:
- Arduino Uno
- 2,4 "TFT LCD displej štít
- 9V batéria.
Zoznámenie sa s modulom TFT LCD obrazovky:
Predtým, ako sa do projektu skutočne ponoríme, je dôležité vedieť, ako tento 2,4 ”TFT LCD modul funguje a aké sú v ňom zastúpené typy. Pozrime sa na pinouty tohto 2,4-palcového modulu TFT LCD obrazovky.
Ako vidíte, existuje 28 pinov, ktoré sa perfektne zmestia do každej Arduino Uno / Arduino Mega Board. Malá klasifikácia týchto kolíkov je uvedená v nasledujúcej tabuľke.
Ako vidíte, piny je možné klasifikovať do štyroch hlavných klasifikácií, ako sú LCD príkazové kolíky, LCD dátové kolíky, kolíky SD karty a napájacie kolíky. O podrobnom fungovaní týchto kolíkov nemusíme vedieť veľa, pretože sa o ne naša knižnica Arduino.
V spodnej časti modulu zobrazeného vyššie nájdete tiež slot na SD kartu, ktorý možno použiť na načítanie SD karty s obrazovými súbormi bmp a tieto obrázky je možné zobraziť na našej TFT LCD obrazovke pomocou programu Arduino.
Ďalšou dôležitou vecou, ktorú si musíte uvedomiť, je vaše rozhranie IC. Na trhu je k dispozícii veľa typov TFT modulov od pôvodného TFT LCD modulu Adafruit až po lacné čínske klony. Program, ktorý dokonale funguje pre váš štít Adafruit, nemusí fungovať rovnako pre čínske odpočinkové dosky. Je preto veľmi dôležité vedieť, ktoré typy LCD displejov držíte v ruke. Tento údaj je potrebné získať od predajcu. Ak máte lacný klon ako ja, potom s najväčšou pravdepodobnosťou používa integrovaný obvod vodiča ili9341. Môžete sledovať toto prepojenie TFT LCD s výukovým programom Arduino, aby ste vyskúšali niektoré základné ukážkové programy a boli spokojní s obrazovkou LCD. Tiež si tu pozrite naše ďalšie projekty TFT LCD s Arduino:
- Ako používať NeoPixel LED pásik s Arduino a TFT LCD
- Digitálny kódový zámok ovládaný inteligentným telefónom pomocou Arduina
Kalibrácia TFT LCD obrazovky pre dotykovú obrazovku:
Ak plánujete používať funkciu dotykového displeja vášho TFT LCD modulu, musíte ho nakalibrovať, aby fungoval správne. LCD obrazovka bez kalibrácie môže fungovať nepravdepodobne, napríklad sa môžete dotknúť na jednom mieste a TFT môže reagovať na dotyk na inom mieste. Výsledky týchto kalibrácií nebudú podobné pre všetky nástenky, a preto to môžete urobiť sami.
Najlepším spôsobom kalibrácie je použiť program s ukážkou kalibrácie (dodáva sa s knižnicou) alebo pomocou sériového monitora zistiť vašu chybu. Avšak pre tento projekt, pretože veľkosť tlačidiel je veľká, kalibrácia by nemala byť veľkým problémom a tiež vysvetlím, ako môžete kalibrovať svoju obrazovku v sekcii programovania nižšie.
Pripojenia TFT LCD s Arduino:
2,4-palcová TFT LCD obrazovka je dokonalým štítom Arduino. Môžete priamo zatlačiť na LCD obrazovku na vrchu Arduino Uno a bude dokonale zodpovedať pinom a zasunúť dovnútra. Avšak z bezpečnostných dôvodov zakryte programovací terminál vášho Arduino UNO malou izolačnou páskou, pre prípad, že by terminál prišiel do styku s vašou TFT LCD obrazovkou. LCD zostavený na UNO bude vyzerať asi takto nižšie.
Programovanie vášho Arduina pre TFT LCD:
Na zaistenie funkčnosti tohto kódu kalkulačky arduino používame knižnicu SPFD5408. Toto je upravená knižnica Adafruit a môže bez problémov pracovať s našim LCD TFT modulom. Celý program si môžete skontrolovať na konci tohto článku.
Poznámka: Je veľmi dôležité, aby ste si túto knižnicu nainštalovali do svojho Arduino IDE alebo do tohto programu, aby ste ju zostavili bez akejkoľvek chyby.
Ak si chcete nainštalovať túto knižnicu, jednoducho kliknite na odkaz vyššie, ktorý vás prevedie na stránku Github. Tam kliknite na klonovať alebo stiahnuť a zvoľte „Stiahnuť ZIP“. Stiahne sa súbor ZIP.
Teraz otvorte Arduino IDE a vyberte Skica -> Zahrnúť Librarey -> Pridať knižnicu.ZIP. Otvorí sa okno prehľadávača, prejdite na súbor ZIP a kliknite na tlačidlo „OK“. Ak je to úspešné, mali by ste si všimnúť „Knižnica pridaná do vašich knižníc“ v ľavom dolnom rohu Arduina. Podrobný sprievodca, ako urobiť to isté, je uvedený v príručke Interfacing.
Teraz môžete použiť nižšie uvedený kód vo svojom Arduino IDE a nahrať ho do svojho Arduino UNO, aby kalkulačka dotykovej obrazovky fungovala. Ďalej som kód vysvetlil do malých segmentov.
Aby tento program fungoval, potrebujeme tri knižnice; všetky tieto tri knižnice boli dané do súboru ZIP, ktorý ste si stiahli z vyššie uvedeného odkazu. Jednoducho som ich zahrnul do kódu, ako je uvedené nižšie.
#include
Ako už bolo povedané, musíme LCD obrazovku nakalibrovať, aby fungovala podľa očakávaní, nemusíte sa však obávať, že tu uvedené hodnoty sú takmer univerzálne. O kalibrácii obrazovky rozhodujú premenné TS_MINX, TS_MINY, TS_MAXX a TS_MAXY. Môžete sa okolo nich pohrávať, ak máte pocit, že kalibrácia nie je uspokojivá.
# define TS_MINX 125 # define TS_MINY 85 # define TS_MAXX 965 # define TS_MAXY 905
Ako vieme, TFT LCD obrazovka dokáže zobraziť veľa farieb, všetky tieto farby musia byť zadané v hexadecimálnej hodnote. Aby bola čitateľnejšia pre ľudí, priradíme tieto hodnoty k premennej, ako je uvedené nižšie.
#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 // ružová -> zelená #define MODRÁ 0xFFE0 // žltá-> modrá #define ČIERNA 0xFFFF // biela-> čierna
Dobre, teraz sa môžeme dostať do programovacej časti. Do tohto programu sú zapojené tri sekcie. Jedným z nich je vytvorenie používateľského rozhrania kalkulačky s tlačidlami a displejom. Potom detekcia tlačidiel na základe dotyku používateľov a nakoniec výpočet výsledkov a ich zobrazenie. Prejdime ich jeden po druhom.
1. Vytvorenie používateľského rozhrania kalkulačky:
To je miesto, kde môžete využiť svoju kreativitu pri navrhovaní používateľského rozhrania kalkulačky. Jednoducho som vytvoril základné rozloženie kalkulačky so 16 tlačidlami a jednou zobrazovacou jednotkou. Dizajn musíte skonštruovať rovnako, ako niečo nakreslíte na farbu MS. Pridané knižnice vám umožnia kresliť čiary, obdĺžniky, kruhy, znamienka, reťazce a oveľa viac ľubovoľnej preferovanej farby. Dostupné funkcie pochopíte z tohto článku.
Pomocou schopností kreslenia čiar a škatúľ som navrhol používateľské rozhranie, ktoré vyzerá veľmi podobne ako kalkulačka z 90. rokov. Každé políčko má šírku a výšku 60 pixelov.
// Nakreslite Výsledný box tft.fillRect (0, 0, 240, 80, CYAN); // Nakresliť prvý stĺpec tft.fillRect (0,260,60,60, RED); tft.fillRect (0,200,60,60, ČIERNA); tft.fillRect (0,140,60,60, ČIERNA); tft.fillRect (0,80,60,60, ČIERNA); // Nakreslite tretí stĺpec tft.fillRect (120,260,60,60, ZELENÝ); tft.fillRect (120 200,60,60, ČIERNA); tft.fillRect (120,140,60,60, ČIERNA); tft.fillRect (120,80,60,60, ČIERNA); // Nakreslite Secound a štvrtý stĺpec pre (int b = 260; b> = 80; b- = 60) {tft.fillRect (180, b, 60,60, BLUE); tft.fillRect (60, b, 60,60, BLACK);} // Nakreslite vodorovné čiary pre (int h = 80; h <= 320; h + = 60) tft.drawFastHLine (0, h, 240, WHITE); // Nakreslite vertikálne čiary pre (int v = 0; v <= 240; v + = 60) tft.drawFastVLine (v, 80, 240, BIELA); // Zobrazenie štítkov na klávesnici pre (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 (BIELY); tft.println (symbol);
2. Detekcia tlačidiel:
Ďalšou náročnou úlohou je detekcia dotyku používateľa. Zakaždým, keď sa používateľ niekde dotkne, budeme schopní zistiť, kde sa nachádza poloha X a Y pixelu, ktorého sa dotkol. Túto hodnotu je možné zobraziť na sériovom monitore pomocou tlače, ako je uvedené nižšie.
TSPoint p = waitTouch (); X = py; Y = px; Serial.print (X); Serial.print (','); Serial.println (Y); // + "" + Y);
Pretože sme box navrhli so šírkou a výškou 60 pixelov a máme štyri riadky a pre stĺpce začínajúce od (0,0). Polohu každého poľa je možné predvídať, ako je znázornené na obrázku nižšie.
Ale v praktickom prípade to nebude výsledok. Kvôli problémom s kalibráciou bude veľký rozdiel medzi očakávanou a skutočnou hodnotou.
Ak chcete predpovedať presnú polohu poľa, musíte kliknúť na riadok a skontrolovať jeho zodpovedajúcu polohu na sériovom monitore. Toto nemusí byť najprofesionálnejší spôsob, ako to urobiť, ale aj tak to funguje perfektne. Zmeral som polohu všetkých čiar a získal som nižšie uvedené hodnoty.
Teraz, keď poznáme polohu všetkých políčok. Keď sa používateľ dotkne kdekoľvek, môžeme predvídať, kde sa dotkol, porovnaním jeho hodnôt (X, Y) s hodnotou pre každé políčko, ako je uvedené nižšie.
if (X <105 && X> 50) // Detekcia tlačidiel na stĺpci 2 {if (Y> 0 && Y <85) {Serial.println ("Tlačidlo 0"); // Tlačidlo 0 je stlačené, ak (Number == 0) Number = 0; else Number = (Number * 10) + 0; // Dvojité stlačenie} if (Y> 85 && Y <140) {Serial.println ("Tlačidlo 2"); if (Number == 0) Number = 2; else Number = (Number * 10) + 2; // stlačené dvakrát}
3. Zobrazenie čísel a výpočet výsledku:
Posledným krokom je výpočet výsledku a ich zobrazenie na TFT LCD obrazovke. Táto arduino kalkulačka môže vykonávať operácie iba s 2 číslami. Tieto dve čísla sú pomenované ako premenné „Num1“ a „Num2“. Premenná „Number“ dáva a berie hodnotu z Num1 a Num2 a tiež nesie výsledok.
Keď používateľ stiskne tlačidlo, k číslu sa pridá jedna číslica. Po stlačení iného tlačidla sa predchádzajúca číslica vynásobí číslom 10 a pridá sa k nej nové číslo. Napríklad, ak stlačíme 8 a potom 5 a potom 7. Potom bude najskôr premenná obsahovať 8, potom (8 * 10) + 5 = 85 potom (85 * 10) +7 = 857. Takže nakoniec bude mať premenná s ním hodnotu 857.
if (Y> 192 && Y <245) {Serial.println ("Tlačidlo 8"); if (Number == 0) Number = 8; else Number = (Number * 10) + 8; // znovu stlačené}
Keď vykonáme akúkoľvek operáciu, ako je sčítanie, keď používatelia stlačia tlačidlo sčítania, hodnota z čísla sa prenesie na číslo Num1 a potom sa číslo vynuluje, aby sa pripravilo na prijatie vstupu pre druhé číslo.
Keď stlačíte Equal, hodnota v Number sa odošle na Num2 a potom sa vykoná príslušný výpočet (v tomto prípade doplnenie) a výsledok sa opäť uloží do premennej „Number“.
Nakoniec sa táto hodnota zobrazí na obrazovke LCD.
Pracovné:
Práca tejto kalkulačky s dotykovou obrazovkou Arduino je jednoduchá. Musíte nahrať nižšie uvedený kód na svoje Arduino a spustiť ho. Kalkulačka sa zobrazí na obrazovke LCD.
Teraz môžete zadať ľubovoľné číslo a vykonať svoje výpočty. Je obmedzený iba na dvoch operandov a zatiaľ iba na operátorov. Môžete však vylepšiť kód tak, aby mal veľa možností.
Po vykonaní výpočtu musíte po každom stlačení „C“ vymazať hodnotu na obrazovke. Dúfam, že ste pochopili projekt a páčilo sa vám budovanie niečoho podobného. Ak máte pochybnosti, neváhajte ich zverejniť na fórach alebo v sekcii komentárov nižšie. Uvidíme sa nabudúce s ďalším zaujímavým projektom, dovtedy šťastné výpočty !!
Skontrolujte tiež ukážkové video uvedené nižšie.