Talaan ng mga Nilalaman:

Calculator ng Arduino TFT LCD Touchscreen: 3 Mga Hakbang
Calculator ng Arduino TFT LCD Touchscreen: 3 Mga Hakbang

Video: Calculator ng Arduino TFT LCD Touchscreen: 3 Mga Hakbang

Video: Calculator ng Arduino TFT LCD Touchscreen: 3 Mga Hakbang
Video: SKR 1.3 - TFT35 touch screen display 2024, Hulyo
Anonim
Arduino TFT LCD Touchscreen Calculator
Arduino TFT LCD Touchscreen Calculator

Kumusta mga kalalakihan sa mga itinuturo na ito matututunan natin kung paano gumawa ng isang calculator gamit ang Arduino Uno na may 3.5 TFT LCD Touchscreen display. Kaya magsusulat kami ng isang code at I-upload ito sa arduino na magpapakita ng interface ng calculator sa display at tatagal sa pagpapaandar ng pag-andar at ibigay ang output ng pangunahing mga expression ng matematika.

Hakbang 1: Mga Bagay na Kailangan mo

Mga Bagay na Kailangan Mo
Mga Bagay na Kailangan Mo
Mga Bagay na Kailangan Mo
Mga Bagay na Kailangan Mo

Para sa proyektong ito kakailanganin mo ang mga sumusunod na bagay: 3.5 TFT LCD DISPLAYARDUINO UNO

Hakbang 2: Pag-install ng TFT Display Library sa Arduino IDE

Pag-install ng TFT Display Library sa Arduino IDE
Pag-install ng TFT Display Library sa Arduino IDE

Gumagamit kami ng SPFD5408 Library:

upang makuha ang code ng calculator ng arduino na ito. Ito ay isang binagong aklatan ng Adafruit at maaaring gumana nang walang putol sa aming LCD TFT Module. Napakahalaga para sa iyo na mai-install ang library na ito sa iyong Arduino IDE o ang program na ito upang mag-ipon nang walang anumang error. Upang mai-install ang library na ito, maaari mo lamang i-click ang link sa itaas na magdadala sa iyo sa isang pahina ng Github. Mayroong pag-click sa clone o pag-download at piliin ang "I-download ang ZIP". Isang zip file ang mai-download. Ngayon, buksan ang Arduino IDE at piliin ang Sketch -> Isama ang librarey -> Magdagdag ng. ZIP library. Ang isang window ng browser ay magbubukas mag-navigate sa ZIP file at i-click ang "OK". Dapat mong mapansin ang "Library na idinagdag sa iyong Mga Aklatan" sa kaliwang sulok sa kaliwa ng Arduino.

Hakbang 3: I-upload ang Calculator Code

I-upload ang Code ng Calculator
I-upload ang Code ng Calculator
I-upload ang Code ng Calculator
I-upload ang Code ng Calculator

Matapos mai-install ang silid-aklatan ikonekta ang display sa Arduino at kopyahin ang sumusunod na code at i-upload ito sa Arduino./ ** library # isama ang "SPFD5408_TouchScreen.h" / * _ Katapusan ng Mga Aklatan _ * // * _ Tukuyin ang mga pin ng LCD (Inilahad ko ang mga default na halaga) _ * / # tukuyin ang YP A1 // ay dapat na isang analog pin, gamitin ang "Isang" notasyon! # tukuyin ang XM A2 // dapat ay isang analog pin, gamitin ang "Isang" notasyon! # tukuyin ang YM 7 // ay maaaring isang digital na pin # tukuyin ang XP 6 // ay maaaring isang digital na pin A1 # tukuyin ang LCD_RD A0 # tukuyin ang LCD_RESET A4 / * _ Pagtatapos ng mga paninirang-puri _ * // * _ Magtalaga ng mga pangalan sa mga kulay at presyon // Red-> Cyan # tukuyin ang PINK 0x07E0 // Green-> Pink # tukuyin ang PULANG 0x07FF // Cyan -> Pula # tukuyin ang GREEN 0xF81F // Pink -> Green #define BLUE 0xFFE0 // Yellow- > Blue # tukuyin ang BLACK 0xFFFF // White-> Itim # tukuyin ang MINPRESSURE 10 # tukuyin ang MAXPRESSURE 1000 / * _ Itinalaga _ * // * _ I-calibrate ang TFT LCD _ * / # tukuyin ang TS_MINX 125 # tukuyin ang TS_MINY 85 # tukuyin ang TS_MAXX 965 # tukuyin ang TS_MAXY 905 / * _End of Calibration _ * / TouchScreen ts = TouchScreen (XP, YP, XM, YM, 300); // 300 ay ang pagiging sensitiboAdafruit_TFTLCD tft (LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET); // Simulan ang komunikasyon sa simbolo ng LCDString [4] [4] = {{"7", "8", "9", "/"}, {"4", "5", "6", "*"}, {"1", "2", "3", "-"}, {"C", "0", "=", "+"}}; int X, Y; mahabang Num1, Num2, Bilang; aksyon ng char; resulta ng boolean = false; void setup () {Serial.begin (9600); // Gumamit ng serial monitor para sa pag-debug ng tft.reset (); // Laging i-reset sa pagsisimula ng tft.begin (0x9341); // Ang aking LCD ay gumagamit ng LIL9341 Interface driver IC tft.setRotation (2); // Nag-roated lang ako upang ang power jack ay nakaharap - opsyonal na tft.fillScreen (WHITE); IntroScreen (); draw_BoxNButtons (); } void loop () {TSPoint p = waitTouch (); X = p.y; Y = p.x; // Serial.print (X); Serial.print (','); Serial.println (Y); // + "" + Y); Detect Buttons (); kung (resulta == totoo) CalculateResult (); DisplayResult (); antala (300);} TSPoint waitTouch () {TSPoint p; gawin ang {p = ts.getPoint (); pinMode (XM, OUTPUT); pinMode (YP, OUTPUT); } habang ((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);; ibalik ang p;} walang bisa ang Mga Detect Buttons () {kung (X0) // Ang Pagtuklas ng Mga Pindutan sa Hanay 1 {kung (Y> 0 && Y <85) // Kung ang pindutang kanselahin ay pinindot ang {Serial.println ("Button Kanselahin"); Bilang = Num1 = Num2 = 0; resulta = false;} kung (Y> 85 && Y <140) // Kung ang Button 1 ay pinindot ang {Serial.println ("Button 1"); kung (Bilang == 0) Bilang = 1; iba pa Bilang = (Bilang * 10) + 1; // Pinindot nang dalawang beses} kung (Y> 140 && Y <192) // Kung ang Pindutan 4 ay pinindot {Serial.println ("Button 4"); kung (Bilang == 0) Bilang = 4; iba pa Bilang = (Bilang * 10) + 4; // Pinindot nang dalawang beses} kung (Y> 192 && Y <245) // Kung ang Button 7 ay pinindot {Serial.println ("Button 7"); kung (Bilang == 0) Bilang = 7; iba pa Bilang = (Bilang * 10) + 7; // Pinindot nang dalawang beses}} kung (X50) // Pagtuklas ng Mga Pindutan sa Hanay 2 {kung (Y> 0 && Y <85) {Serial.println ("Button 0"); // Button 0 ay Pinsala kung (Bilang == 0) Bilang = 0; iba pa Bilang = (Bilang * 10) + 0; // Pinindot ng dalawang beses} kung (Y> 85 && Y <140) {Serial.println ("Button 2"); kung (Bilang == 0) Bilang = 2; iba pa Bilang = (Bilang * 10) + 2; // Pinindot nang dalawang beses} kung (Y> 140 && Y <192) {Serial.println ("Button 5"); kung (Bilang == 0) Bilang = 5; iba pa Bilang = (Bilang * 10) + 5; // Pressed twic} kung (Y> 192 && Y <245) {Serial.println ("Button 8"); kung (Bilang == 0) Bilang = 8; iba pa Bilang = (Bilang * 10) + 8; // Pressed twic}} if (X105) // Detecting Buttons on Column 3 {if (Y> 0 && Y <85) {Serial.println ("Button Equal"); Num2 = Bilang; resulta = totoo; } kung (Y> 85 && Y <140) {Serial.println ("Button 3"); kung (Bilang == 0) Bilang = 3; iba pa Bilang = (Bilang * 10) + 3; // Pinindot ng dalawang beses} kung (Y> 140 && Y <192) {Serial.println ("Button 6"); kung (Bilang == 0) Bilang = 6; iba pa Bilang = (Bilang * 10) + 6; // Pinindot nang dalawang beses} kung (Y> 192 && Y <245) {Serial.println ("Button 9"); kung (Bilang == 0) Bilang = 9; iba pa Bilang = (Bilang * 10) + 9; // Pinindot nang dalawang beses}} kung (X165) // Pagtuklas ng Mga Pindutan sa Hanay 3 {Num1 = Bilang; Bilang = 0; tft.setCursor (200, 20); tft.setTextColor (RED); kung (Y> 0 && Y <85) {Serial.println ("Addition"); aksyon = 1; tft.println ('+');} kung (Y> 85 && Y <140) {Serial.println ("Pagbawas"); aksyon = 2; tft.println ('-');} kung (Y> 140 && Y <192) {Serial.println ("Multiplication"); aksyon = 3; tft.println ('*');} kung (Y> 192 && Y <245) {Serial.println ("Devesion"); aksyon = 4; tft.println ('/');} pagkaantala (300); }} walang bisa CalculateResult () {kung (aksyon == 1) Bilang = Num1 + Num2; kung (aksyon == 2) Bilang = Num1-Num2; kung (aksyon == 3) Bilang = Num1 * Num2; kung (aksyon == 4) Bilang = Num1 / Num2; } walang bisa ang DisplayResult () {tft.fillRect (0, 0, 240, 80, CYAN); // clear box ng resulta tft.setCursor (10, 20); tft.setTextSize (4); tft.setTextColor (BLACK); tft.println (Bilang); // update new value} void IntroScreen () {tft.setCursor (55, 120); tft.setTextSize (3); tft.setTextColor (RED); tft.println ("ARDUINO"); tft.setCursor (30, 160); tft.println ("CALCULATOR"); tft.setCursor (30, 220); tft.setTextSize (2); tft.setTextColor (BLUE); tft.println ("- Circut Digest"); antala (1800);} walang bisa draw_BoxNButtons () {// Iguhit ang Result Box tft.fillRect (0, 0, 240, 80, CYAN); // Draw First Column tft.fillRect (0, 260, 60, 60, RED); tft.fillRect (0, 200, 60, 60, BLACK); tft.fillRect (0, 140, 60, 60, BLACK); tft.fillRect (0, 80, 60, 60, BLACK); // Iguhit ang Third Column tft.fillRect (120, 260, 60, 60, GREEN); tft.fillRect (120, 200, 60, 60, BLACK); tft.fillRect (120, 140, 60, 60, BLACK); tft.fillRect (120, 80, 60, 60, BLACK); // Draw Secound & Fourth Column for (int b = 260; b> = 80; b- = 60) {tft.fillRect (180, b, 60, 60, BLUE); tft.fillRect (60, b, 60, 60, BLACK);} // Gumuhit ng Mga Pahalang na Linya para sa (int h = 80; h <= 320; h + = 60) tft.drawFastHLine (0, h, 240, WHITE); // Draw Vertical Lines for (int v = 0; v <= 240; v + = 60) tft.drawFastVLine (v, 80, 240, WHITE); // Display keypad lables for (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 (PUTI); tft.println (simbolo [j] ); }}} Matapos i-upload ang code makikita mo ang calculator na tumatakbo sa iyong display bilang minahan at ngayon ay maaari kang magsagawa ng mga pangunahing kalkulasyon sa matematika dito. Kaya't magsaya sa paggawa ng iyong sariling calculator sa Arduino UNO.

Inirerekumendang: