- Potřebné materiály:
- Seznámení s modulem TFT LCD obrazovky:
- Kalibrace TFT LCD obrazovky pro dotykovou obrazovku:
- Připojení TFT LCD s Arduino:
- Programování vašeho Arduina pro TFT LCD:
- Pracovní:
Arduino vždy pomohlo snadno vytvářet projekty a vypadat atraktivněji. Programování LCD obrazovky s možností dotykové obrazovky může znít jako komplikovaný úkol, ale knihovny a štíty Arduina to opravdu usnadnily. V tomto projektu použijeme 2,4 ”TFT LCD displej Arduino k vytvoření vlastní kalkulačky dotykové obrazovky Arduino, která by mohla provádět všechny základní výpočty, jako je sčítání, odčítání, dělení a násobení.
Potřebné materiály:
- Arduino Uno
- Štítek s 2,4 ”TFT LCD displejem
- 9V baterie.
Seznámení s modulem TFT LCD obrazovky:
Než se do projektu ponoříme, je důležité vědět, jak tento 2,4 ”TFT LCD modul funguje a jaké jsou v něm typy. Pojďme se podívat na pinouty tohoto 2,4 ”TFT LCD modulu obrazovky.
Jak vidíte, existuje 28 pinů, které se perfektně vejdou do jakékoli Arduino Uno / Arduino Mega Board. Malá klasifikace těchto pinů je uvedena v tabulce níže.
Jak vidíte, piny lze klasifikovat do čtyř hlavních klasifikací, jako jsou LCD příkazové piny, LCD datové piny, piny SD karty a piny napájení, o podrobném fungování těchto piny nemusíme vědět víc, protože se o ně postarají naše knihovna Arduino.
Ve spodní části výše uvedeného modulu najdete také slot pro SD kartu, který lze použít k načtení SD karty s obrazovými soubory bmp a tyto obrázky lze zobrazit na naší TFT LCD obrazovce pomocí programu Arduino.
Další důležitou věcí je váš IC rozhraní. Na trhu je k dispozici mnoho typů TFT modulů od původního TFT LCD modulu Adafruit až po levné čínské klony. Program, který funguje perfektně pro váš štít Adafruit, nemusí fungovat stejně pro čínské únikové desky. Je tedy velmi důležité vědět, jaké typy LCD displejů držíte v ruce. Tuto podrobnost je třeba získat od prodejce. Pokud máte levný klon, jako je ten můj, pak je nejpravděpodobnější použití IC ovladače ili9341. Můžete sledovat toto TFT LCD rozhraní s výukovým programem Arduino, abyste si vyzkoušeli některé základní ukázkové programy a byli spokojeni s LCD obrazovkou. Podívejte se také na naše další projekty TFT LCD s Arduino zde:
- Jak používat NeoPixel LED Strip s Arduino a TFT LCD
- Chytrý telefon ovládaný digitální kódový zámek pomocí Arduina
Kalibrace TFT LCD obrazovky pro dotykovou obrazovku:
Pokud plánujete použít funkci dotykového displeje vašeho TFT LCD modulu, musíte jej kalibrovat, aby fungoval správně. LCD obrazovka bez kalibrace může fungovat nepravděpodobně, například se můžete dotknout na jednom místě a TFT může reagovat na dotyk na jiném místě. Výsledky těchto kalibrací nebudou u všech desek podobné, a proto jste na tom sami.
Nejlepším způsobem kalibrace je použití ukázkového programu kalibrace (dodává se s knihovnou) nebo použití sériového monitoru k detekci chyby. Protože pro tento projekt je velikost tlačítek velká, kalibrace by však neměla být velkým problémem a také vysvětlím, jak můžete kalibrovat obrazovku v sekci programování níže.
Připojení TFT LCD s Arduino:
2,4 ”TFT LCD obrazovka je dokonalým štítem Arduino. Můžete přímo zatlačit na LCD obrazovku na Arduino Uno a bude dokonale odpovídat pinům a zasunutím dovnitř. Z bezpečnostních důvodů však programovací terminál vašeho Arduino UNO zakryjte malou izolační páskou, pro případ, že by terminál přišel do kontaktu s vaší TFT LCD obrazovkou. LCD sestavený na UNO bude vypadat níže.
Programování vašeho Arduina pro TFT LCD:
Používáme knihovnu SPFD5408, aby tento kód kalkulačky arduino fungoval. Toto je upravená knihovna Adafruit a může bez problémů pracovat s naším LCD TFT modulem. Celý program můžete zkontrolovat na konci tohoto článku.
Poznámka: Je velmi důležité nainstalovat tuto knihovnu do svého Arduino IDE nebo do tohoto programu, abyste ji zkompilovali bez jakékoli chyby.
Chcete-li nainstalovat tuto knihovnu, jednoduše klikněte na odkaz výše, který vás přesměruje na stránku Github. Tam klikněte na klonovat nebo stáhnout a vyberte „Stáhnout ZIP“. Stáhne se soubor zip.
Nyní otevřete Arduino IDE a vyberte Skica -> Zahrnout Librarey -> Přidat knihovnu.ZIP. Otevře se okno prohlížeče, přejděte na soubor ZIP a klikněte na „OK“. Pokud bude úspěšná, měli byste si všimnout „Knihovna přidána do vašich knihoven“ v levém dolním rohu Arduina. Podrobný průvodce, jak udělat totéž, je uveden v Interfacing Tutorial.
Nyní můžete použít níže uvedený kód ve svém Arduino IDE a nahrát jej do svého Arduino UNO, aby kalkulačka dotykové obrazovky fungovala. Dále jsem vysvětlil kód do malých segmentů.
Aby tento program fungoval, potřebujeme tři knihovny; všechny tyto tři knihovny byly uvedeny v souboru ZIP, který jste stáhli z výše uvedeného odkazu. Jednoduše jsem je zahrnul do kódu, jak je znázorněno níže.
#zahrnout
Jak již bylo řečeno, musíme LCD obrazovku kalibrovat, aby fungovala podle očekávání, ale nebojte se, hodnoty zde uvedené jsou téměř univerzální. O kalibraci obrazovky rozhodují proměnné TS_MINX, TS_MINY, TS_MAXX a TS_MAXY. Můžete si kolem nich pohrávat, pokud máte pocit, že kalibrace není uspokojivá.
#define TS_MINX 125 #define TS_MINY 85 #define TS_MAXX 965 #define TS_MAXY 905
Jak víme, TFT LCD obrazovka dokáže zobrazit mnoho barev, všechny tyto barvy je třeba zadat v hexadecimální hodnotě. Aby byla čitelnější, přiřadíme tyto hodnoty proměnné, jak je znázorněno níže.
#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 // růžová -> zelená #define MODRÁ 0xFFE0 // žlutá-> modrá #define ČERNÁ 0xFFFF // bílá-> černá
Dobře, můžeme se dostat do programovací části. Do tohoto programu jsou zapojeny tři sekce. Jedním z nich je vytvoření uživatelského rozhraní kalkulačky s tlačítky a displejem. Poté detekce tlačítek na základě dotyku uživatelů a nakonec výpočet výsledků a jejich zobrazení. Pojďme je projít jeden po druhém.
1. Vytvoření uživatelského rozhraní kalkulačky:
Zde můžete hodně ze své kreativity navrhnout uživatelské rozhraní kalkulačky. Jednoduše jsem vytvořil základní rozložení kalkulačky se 16 tlačítky a jednou zobrazovací jednotkou. Musíte sestrojit design, jako byste něco nakreslili na MS paint. Přidané knihovny vám umožní kreslit čáry, obdélník, kruhy, znaky, řetězce a mnoho dalšího z jakékoli preferované barvy. Dostupné funkce můžete pochopit z tohoto článku.
Schopnosti kreslení čar a rámečků jsem použil k návrhu uživatelského rozhraní, které vypadá velmi podobně jako kalkulačka 90. let. Každé pole má šířku a výšku 60 pixelů.
// Nakreslete pole výsledků tft.fillRect (0, 0, 240, 80, CYAN); // Nakreslete první sloupec tft.fillRect (0,260,60,60, RED); tft.fillRect (0,200,60,60, ČERNÁ); tft.fillRect (0,140,60,60, ČERNÁ); tft.fillRect (0,80,60,60, ČERNÁ); // Nakreslete třetí sloupec tft.fillRect (120,260,60,60, ZELENÝ); tft.fillRect (120,200,60,60, ČERNÁ); tft.fillRect (120,140,60,60, ČERNÁ); tft.fillRect (120,80,60,60, ČERNÁ); // Nakreslete Secound a čtvrtý sloupec pro (int b = 260; b> = 80; b- = 60) {tft.fillRect (180, b, 60,60, BLUE); tft.fillRect (60, b, 60,60, BLACK);} // Nakreslete vodorovné čáry pro (int h = 80; h <= 320; h + = 60) tft.drawFastHLine (0, h, 240, WHITE); // Nakreslete svislé čáry pro (int v = 0; v <= 240; v + = 60) tft.drawFastVLine (v, 80, 240, BÍLÁ); // Zobrazit štítky na klávesnici pro (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 (BÍLÁ); tft.println (symbol);
2. Detekce tlačítek:
Dalším náročným úkolem je detekce dotyku uživatele. Pokaždé, když se uživatel někde dotkne, budeme schopni zjistit, kde je pozice X a Y pixelu, kterého se dotkl. Tuto hodnotu lze zobrazit na sériovém monitoru pomocí tisku, jak je uvedeno níže.
TSPoint p = waitTouch (); X = py; Y = px; Serial.print (X); Serial.print (','); Serial.println (Y); // + "" + Y);
Protože jsme navrhli krabici o šířce a výšce 60 pixelů a máme čtyři řádky a pro sloupce začínající od (0,0). Pozici každého pole lze předvídat, jak je znázorněno na následujícím obrázku.
V praktickém případě to však nebude výsledek. Kvůli problému s kalibrací bude velký rozdíl mezi očekávanou a skutečnou hodnotou.
Chcete-li tedy předpovědět přesnou polohu rámečku, musíte kliknout na čáru a zkontrolovat její odpovídající polohu na sériovém monitoru. To nemusí být nejprofesionálnější způsob, jak to udělat, ale přesto to funguje perfektně. Změřil jsem polohu všech čar a získal níže uvedené hodnoty.
Nyní, protože známe polohu všech polí. Když se uživatel dotkne kdekoli, můžeme předpovědět, kde se dotkl, porovnáním jeho hodnot (X, Y) s hodnotou pro každé pole, jak je uvedeno níže.
if (X <105 && X> 50) // Detection Buttons on Column 2 {if (Y> 0 && Y <85) {Serial.println ("Button 0"); // Tlačítko 0 je stisknuto, pokud (Number == 0) Number = 0; else Number = (Number * 10) + 0; // Dvojité stisknutí} if (Y> 85 && Y <140) {Serial.println ("Tlačítko 2"); if (Number == 0) Number = 2; else Number = (Number * 10) + 2; // stisknuto dvakrát}
3. Zobrazení čísel a výpočet výsledku:
Posledním krokem je výpočet výsledku a jeho zobrazení na TFT LCD obrazovce. Tato arduino kalkulačka může provádět operace pouze se 2 čísly. Tato dvě čísla jsou pojmenována jako proměnné „Num1“ a „Num2“. Proměnná „Number“ dává a bere hodnotu z Num1 a Num2 a také nese výsledek.
Když uživatel stiskne tlačítko, k číslu se přidá jedna číslice. Když stisknete jiné tlačítko, předchozí jedna číslice se vynásobí 10 a přidá se nové číslo. Například pokud stiskneme 8 a potom stiskneme 5 a potom stiskneme 7. Pak bude proměnná nejprve obsahovat 8, pak (8 * 10) + 5 = 85, pak (85 * 10) +7 = 857. Takže nakonec bude mít proměnná hodnota 857 s ním.
if (Y> 192 && Y <245) {Serial.println ("Tlačítko 8"); if (Number == 0) Number = 8; else Number = (Number * 10) + 8; // znovu stisknuto}
Když jsme se všechny operace jako sčítání, kdy uživatelé stiskne tlačítko přidávání hodnoty z čísla budou převedeny na num1 a poté číslo bude nulová, takže se dostane připraveni přijmout vstup pro druhé číslo.
Po stisknutí tlačítka Equal bude hodnota v Number odeslána na Num2 a poté bude proveden příslušný výpočet (v tomto případě přidání) a výsledek bude znovu uložen do proměnné „Number“.
Nakonec se tato hodnota zobrazí na LCD obrazovce.
Pracovní:
Práce této kalkulačky dotykové obrazovky Arduino je jednoduchá. Musíte nahrát níže uvedený kód do svého Arduina a spustit jej. Kalkulačka se zobrazí na obrazovce LCD.
Nyní můžete zadat libovolné číslo a provést výpočty. Je omezen pouze na dva operandy a zatím pouze na operátory. Ale můžete vyladit kód, aby měl spoustu možností.
Po každém výpočtu musíte po stisknutí tlačítka „C“ vymazat hodnotu na obrazovce. Doufám, že jste pochopili projekt a rádi jste stavěli něco podobného. Máte-li jakékoli pochybnosti, můžete je zveřejnit na fórech nebo v sekci komentářů níže. Uvidíme se příště s dalším zajímavým projektem, do té doby šťastné výpočty !!
Zkontrolujte také ukázkové video níže.