Obsah:

Kalkulačka dotykové obrazovky Arduino TFT LCD: 3 kroky
Kalkulačka dotykové obrazovky Arduino TFT LCD: 3 kroky

Video: Kalkulačka dotykové obrazovky Arduino TFT LCD: 3 kroky

Video: Kalkulačka dotykové obrazovky Arduino TFT LCD: 3 kroky
Video: MKS Gen L - Marlin 1 1 9 (configuration.h) 2024, Červenec
Anonim
Arduino TFT LCD dotyková kalkulačka
Arduino TFT LCD dotyková kalkulačka

Ahoj kluci, v tomto návodu se naučíme, jak vyrobit kalkulačku pomocí Arduino Uno s 3,5 TFT LCD dotykovým displejem. Napíšeme tedy kód a nahrajeme ho do arduina, které na displeji zobrazí rozhraní kalkulačky a převezme dotykové funkce a dát výstup základních matematických výrazů.

Krok 1: Věci, které potřebujete

Věci, které potřebujete
Věci, které potřebujete
Věci, které potřebujete
Věci, které potřebujete

Pro tento projekt budete potřebovat následující věci: 3,5 TFT LCD DISPLAYARDUINO UNO

Krok 2: Instalace knihovny TFT displeje do Arduino IDE

Instalace knihovny TFT displeje do Arduino IDE
Instalace knihovny TFT displeje do Arduino IDE

Používáme knihovnu SPFD5408:

aby tento arduino kalkulačkový kód fungoval. Toto je upravená knihovna Adafruit a může bezproblémově fungovat s naším modulem LCD TFT. Je velmi důležité, abyste nainstalovali tuto knihovnu do svého Arduino IDE nebo tohoto programu, abyste ji mohli kompilovat bez chyby. Chcete -li nainstalovat tuto knihovnu, jednoduše klikněte na odkaz výše, který vás přenese na stránku Github. Klikněte na klon nebo stáhněte a vyberte „Stáhnout ZIP“. Bude stažen soubor zip. Nyní otevřete Arduino IDE a vyberte Sketch -> Include Librarey -> Add. ZIP library. Otevře se okno prohlížeče, přejděte na soubor ZIP a klikněte na „OK“. Měli byste si všimnout „Knihovna přidaná do vašich knihoven“v levém dolním rohu Arduina.

Krok 3: Nahrajte kód kalkulačky

Nahrajte kód kalkulačky
Nahrajte kód kalkulačky
Nahrajte kód kalkulačky
Nahrajte kód kalkulačky

Po instalaci knihovny připojte displej k Arduinu a zkopírujte následující kód a nahrajte jej do Arduina. knihovna#obsahuje „SPFD5408_TouchScreen.h“/*_ Konec knihoven _*//*_ Definujte piny LCD (přiřadil jsem výchozí hodnoty) _*/#definujte YP A1 // musí být analogový pin, použijte „An“notaci!# definovat XM A2 // musí být analogový pin, použijte notaci "An"! #definovat YM 7 // může být digitální pin#definovat XP 6 // může být digitální pin#definovat LCD_CS A3#definovat LCD_CD A2#definovat LCD_WR A1#definovat LCD_RD A0#definovat LCD_RESET A4/*_ konec definic _*//*_ přiřadit názvy barvám a tlaku _*/#definovat BÍLOU 0x0000 // černou-> bílou#definovat ŽLUTOU 0x001F // modrou-> žlutou#definovat CYAN 0xF800 // Červená-> Azurová#definovat RŮŽOVÁ 0x07E0 // Zelená-> Růžová#definovat ČERVENOU 0x07FF // Azurová-> Červená#definovat ZELENOU 0xF81F // Růžová-> Zelená#definovat MODRÁ 0xFFE0 // Žlutá- > Blue#define BLACK 0xFFFF // White-> Black#define MINPRESSURE 10#define MAXPRESSURE 1000/*_ Assigned _*//*_ Calibrate TFT LCD _*/#define TS_MINX 125#define TS_MINY 85#define TS_MAXX 965#define TS_MAXY 905/* _Konec kalibrace _*/TouchScreen ts = TouchScreen (XP, YP, XM, YM, 300); // 300 je citlivostAdafruit_TFTLCD tft (LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET); // Zahajte komunikaci pomocí symbolu LCDString [4] [4] = {{"7", "8", "9", "/"}, {"4", "5", "6", "*"}, {"1", "2", "3", "-"}, {"C", "0", "=", "+"}}; int X, Y; dlouhý Num1, Num2, Number; char akce; boolean result = false; void setup () {Serial.begin (9600); // K ladění použijte sériový monitor tft.reset (); // Vždy resetovat při startu tft.begin (0x9341); // Můj LCD používá ovladač rozhraní LIL9341 IC tft.setRotation (2); // Právě jsem rotoval tak, aby napájecí konektor směřoval nahoru - volitelně tft.fillScreen (BÍLÁ); IntroScreen (); draw_BoxNButtons (); } void loop () {TSPoint p = waitTouch (); X = p.y; Y = p.x; // Serial.print (X); Serial.print (','); Serial.println (Y); // + "" + Y); DetectButtons (); if (result == true) CalculateResult (); DisplayResult (); zpoždění (300);} TSPoint waitTouch () {TSPoint p; do {p = ts.getPoint (); pinMode (XM, VÝSTUP); pinMode (YP, OUTPUT); } while ((p.z MAXPRESSURE)); p.x = mapa (p.x, TS_MINX, TS_MAXX, 0, 320); p.y = mapa (p.y, TS_MINY, TS_MAXY, 0, 240);; return p;} void DetectButtons () {if (X0) // Detection Buttons on Column 1 {if (Y> 0 && Y <85) // If Cancel button is printed {Serial.println ("Button Cancel"); Number = Num1 = Num2 = 0; result = false;} if (Y> 85 && Y <140) // Pokud je stisknuto tlačítko 1 {Serial.println ("Tlačítko 1"); if (Number == 0) Number = 1; jinak Číslo = (Číslo*10) + 1; // Stiskněte dvakrát} if (Y> 140 && Y <192) // Pokud je stisknuto tlačítko 4 {Serial.println ("Tlačítko 4"); if (Number == 0) Number = 4; jinak Číslo = (Číslo*10) + 4; // Stiskněte dvakrát} if (Y> 192 && Y <245) // Pokud je stisknuto tlačítko 7 {Serial.println ("Tlačítko 7"); if (Number == 0) Number = 7; jinak Číslo = (Číslo*10) + 7; // Stiskněte dvakrát}} if (X50) // Detekce tlačítek ve sloupci 2 {if (Y> 0 && Y <85) {Serial.println ("Tlačítko 0"); // Tlačítko 0 je stisknuto, pokud (Číslo == 0) Číslo = 0; jinak Číslo = (Číslo*10) + 0; // Stiskněte dvakrát} if (Y> 85 && Y <140) {Serial.println ("Button 2"); if (Number == 0) Number = 2; jinak Číslo = (Číslo*10) + 2; // Stiskněte dvakrát} if (Y> 140 && Y <192) {Serial.println ("Button 5"); if (Number == 0) Number = 5; jinak Číslo = (Číslo*10) + 5; // Stisknuto twic} if (Y> 192 && Y <245) {Serial.println ("Button 8"); if (Number == 0) Number = 8; jinak Číslo = (Číslo*10) + 8; // Stisknuto twic}} if (X105) // Detekce tlačítek ve sloupci 3 {if (Y> 0 && Y <85) {Serial.println ("Button Equal"); Num2 = číslo; výsledek = true; } if (Y> 85 && Y <140) {Serial.println ("Button 3"); if (Number == 0) Number = 3; jinak Číslo = (Číslo*10) + 3; // Stiskněte dvakrát} if (Y> 140 && Y <192) {Serial.println ("Button 6"); if (Number == 0) Number = 6; jinak Číslo = (Číslo*10) + 6; // Stiskněte dvakrát} if (Y> 192 && Y <245) {Serial.println ("Tlačítko 9"); if (Number == 0) Number = 9; jinak Číslo = (Číslo*10) + 9; // Dvakrát stisknuto}} if (X165) // Detection Buttons on Column 3 {Num1 = Number; Číslo = 0; tft.setCursor (200, 20); tft.setTextColor (ČERVENÁ); if (Y> 0 && Y <85) {Serial.println ("Addition"); akce = 1; tft.println ('+');} if (Y> 85 && Y <140) {Serial.println ("Subtraction"); akce = 2; tft.println ('-');} if (Y> 140 && Y <192) {Serial.println ("Multiplication"); akce = 3; tft.println ('*');} if (Y> 192 && Y <245) {Serial.println ("Devesion"); akce = 4; tft.println ('/');} zpoždění (300); }} neplatné CalculateResult () {if (action == 1) Number = Num1+Num2; if (action == 2) Number = Num1-Num2; if (action == 3) Number = Num1*Num2; if (action == 4) Number = Num1/Num2; } void DisplayResult () {tft.fillRect (0, 0, 240, 80, CYAN); // vymazat box výsledku tft.setCursor (10, 20); tft.setTextSize (4); tft.setTextColor (ČERNÁ); tft.println (číslo); // aktualizace nové hodnoty} void IntroScreen () {tft.setCursor (55, 120); tft.setTextSize (3); tft.setTextColor (ČERVENÁ); tft.println ("ARDUINO"); tft.setCursor (30, 160); tft.println ("KALKULÁTOR"); tft.setCursor (30, 220); tft.setTextSize (2); tft.setTextColor (MODRÁ); tft.println ("-Circut Digest"); zpoždění (1800);} neplatné draw_BoxNButtons () {// Nakreslete pole výsledků tft.fillRect (0, 0, 240, 80, CYAN); // Nakreslete první sloupec tft.fillRect (0, 260, 60, 60, ČERVENÁ); 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 & Č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, WHITE); // Displej klávesnice lables 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 [j] ); }}} Po nahrání kódu uvidíte kalkulačku spuštěnou na displeji jako moji a nyní na ní můžete provádět základní matematické výpočty. Bavte se tedy při vytváření vlastní kalkulačky s Arduino UNO.

Doporučuje: