Mundarija:

Arduino TFT LCD sensorli ekranli kalkulyator: 3 qadam
Arduino TFT LCD sensorli ekranli kalkulyator: 3 qadam

Video: Arduino TFT LCD sensorli ekranli kalkulyator: 3 qadam

Video: Arduino TFT LCD sensorli ekranli kalkulyator: 3 qadam
Video: Arduino UNO + 2.4 inch TFT LCD Shield Menu Option | TFT LCD Sheild Arduino UNO Menu | TFT Display 2024, Iyul
Anonim
Arduino TFT LCD sensorli ekranli kalkulyator
Arduino TFT LCD sensorli ekranli kalkulyator

Assalomu alaykum, bolalar, biz Arduino Uno yordamida 3,5 dyuymli TFT sensorli displeyli kalkulyatorni yasashni o'rganamiz, shuning uchun biz kod yozamiz va uni arduino -ga yuklaymiz, u displeyda kalkulyator interfeysini ko'rsatadi va sensorli funktsiyalarni oladi. asosiy matematik ifodalarni chiqarish.

1 -qadam: Sizga kerak bo'lgan narsalar

Sizga kerak bo'lgan narsalar
Sizga kerak bo'lgan narsalar
Sizga kerak bo'lgan narsalar
Sizga kerak bo'lgan narsalar

Ushbu loyihani amalga oshirish uchun sizga quyidagilar kerak bo'ladi: 3,5 dyuymli TFT LCD displeyi

2 -qadam: TFT displey kutubxonasini Arduino IDE -ga o'rnatish

Arduino IDE -da TFT displey kutubxonasini o'rnatish
Arduino IDE -da TFT displey kutubxonasini o'rnatish

Biz SPFD5408 kutubxonasidan foydalanmoqdamiz:

Bu arduino kalkulyator kodini ishlashini ta'minlash uchun. Bu Adafruit -ning o'zgartirilgan kutubxonasi va LCD TFT moduli bilan uzluksiz ishlashi mumkin. Bu kutubxonani Arduino IDE -ga yoki bu dasturni xatosiz kompilyatsiya qilish uchun o'rnatish juda muhim, bu kutubxonani o'rnatish uchun siz Github sahifasiga olib boradigan yuqoridagi havolani bosishingiz mumkin. U erda klon yoki yuklash -ni bosing va "ZIP -ni yuklab olish" -ni tanlang. Arduino IDE -ni oching va Sketch -> Kutubxonani qo'shish -> ZIP kutubxonasini qo'shish -ni tanlang. Brauzer oynasi ochiladi va ZIP faylini tanlang va "OK" tugmasini bosing. Arduino-ning pastki chap burchagida "Kutubxonalaringizga kutubxona qo'shilgani" ni ko'rishingiz kerak.

3 -qadam: Kalkulyator kodini yuklang

Kalkulyator kodini yuklang
Kalkulyator kodini yuklang
Kalkulyator kodini yuklang
Kalkulyator kodini yuklang

Kutubxonani o'rnatgandan so'ng, displeyni Arduino-ga ulang va quyidagi kodni nusxa ko'chiring va Arduino-ga yuklang. _*/#"SPFD5408_Adafruit_GFX.h" ni o'z ichiga oladi. kutubxona#o'z ichiga "SPFD5408_TouchScreen.h"/*_ Kutubxonalar oxiri _*//*_ LCD pinlarini aniqlang (men standart qiymatlarni belgilab qo'yganman) _*/#belgilang YP A1 // analog pin bo'lishi kerak, "An" belgisini ishlating!# XM A2 ni aniqlang // analog pin bo'lishi kerak, "An" belgisini ishlating!#YM 7 ni belgilang // raqamli pin bo'lishi mumkin#XP 6 ni belgilang // raqamli pin bo'lishi mumkin#LCD_CS A3 ni aniqlang#LCD_CD A2 ni aniqlang#LCD_WR ni aniqlang A1#LCD_RD belgilang A0#aniqlang LCD_RESET A4/*_ Defanitionlarning oxiri _*//*_ Ranglar va bosimga nomlarni belgilang _*/#WHITE 0x0000 ni belgilang // Qora-> Oq#sariqni belgilang 0x001F // Moviy-> Sariq#CYAN 0xF800 ni belgilang // Qizil-> Cyan#PINKni belgilang 0x07E0 // Yashil-> Pushti#RED 0x07FF ni belgilang // Cyan-> Qizil#Yashil 0xF81F ni belgilang // Pushti-> Yashil#ko'kni aniqlang 0xFFE0 // Sariq- > Moviy#aniq Qora 0xFFFF // Oq-> Qora#ta'rifi MINPRESSURE 10#belgilash MAXPRESSURE 1000/*_ Belgilangan _*//*_ TFT LCDni kalibrlash _*/#TS_MINX 125 ni aniqlang#TS_MINY 85 ni aniqlang#TS_MAXX 965Y aniqlang TS_MAXX* _ Kalibrlashning oxiri _*/TouchScreen ts = TouchScreen (XP, YP, XM, YM, 300); // 300 - sezuvchanlikAdafruit_TFTLCD tft (LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET); // LCDString belgisi bilan aloqani boshlang [4] [4] = {{"7", "8", "9", "/"}, {"4", "5", "6", "*"}, {"1", "2", "3", "-"}, {"C", "0", "=", "+"}}; int X, Y; uzun Num1, Num2, Raqam; char harakati; boolean result = false; void setup () {Serial.begin (9600); // Tft.reset () disk raskadrovka uchun ketma -ket monitordan foydalaning; // Har doim tft.begin (0x9341) boshlanganda tiklang; // Mening LCD displeyimda LIL9341 interfeysi drayveri IC tft.setRotation (2) ishlatiladi; // Men hozirgina elektr rozetkasi yuqoriga qarab turadigan qilib yurdim - ixtiyoriy 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); DetectButtons (); if (result == true) CalculateResult (); DisplayResult (); kechiktirish (300);} TSPoint waitTouch () {TSPoint p; bajaring {p = ts.getPoint (); pinMode (XM, OUTPUT); pinMode (YP, OUTPUT); } while ((p.z MAXPRESSURE)); p.x = xarita (p.x, TS_MINX, TS_MAXX, 0, 320); p.y = xarita (p.y, TS_MINY, TS_MAXY, 0, 240);; qaytish p;} void DetectButtons () {if (X0) // 1 -ustunda tugmachalarni aniqlash {if (Y> 0 && Y <85) // Agar bekor qilish tugmasi bosilsa {Serial.println ("Tugmani bekor qilish"); Raqam = Num1 = Num2 = 0; result = false;} if (Y> 85 && Y <140) // If Button 1 pressed {Serial.println ("Button 1"); agar (Raqam == 0) Raqam = 1; else Raqam = (Raqam*10) + 1; // ikki marta bosildi} if (Y> 140 && Y <192) // If Button 4 pressed {Serial.println ("Button 4"); agar (Raqam == 0) Raqam = 4; else Raqam = (Raqam*10) + 4; // ikki marta bosildi} if (Y> 192 && Y <245) // Agar 7 -tugma bosilsa {Serial.println ("7 -tugma"); agar (Raqam == 0) Raqam = 7; else Raqam = (Raqam*10) + 7; // Ikki marta bosildi}} if (X50) // 2 -ustunda tugmalarni aniqlash {if (Y> 0 && Y <85) {Serial.println ("Button 0"); // 0 tugmasi bosiladi, agar (Raqam == 0) Raqam = 0; else Raqam = (Raqam*10) + 0; // ikki marta bosildi} if (Y> 85 && Y <140) {Serial.println ("2 -tugma"); agar (Raqam == 0) Raqam = 2; else Raqam = (Raqam*10) + 2; // ikki marta bosildi} if (Y> 140 && Y <192) {Serial.println ("5 -tugma"); agar (Raqam == 0) Raqam = 5; else Raqam = (Raqam*10) + 5; // bosilgan twic} if (Y> 192 && Y <245) {Serial.println ("8 -tugma"); agar (Raqam == 0) Raqam = 8; else Raqam = (Raqam*10) + 8; // bosilgan twic}} if (X105) // 3 -ustunda tugmalarni aniqlash {if (Y> 0 && Y <85) {Serial.println ("Teng tugma"); Num2 = Raqam; natija = rost; } if (Y> 85 && Y <140) {Serial.println ("3 -tugma"); agar (Raqam == 0) Raqam = 3; else Raqam = (Raqam*10) + 3; // ikki marta bosildi} if (Y> 140 && Y <192) {Serial.println ("Button 6"); agar (Raqam == 0) Raqam = 6; else Raqam = (Raqam*10) + 6; // ikki marta bosildi} if (Y> 192 && Y <245) {Serial.println ("9 -tugma"); agar (Raqam == 0) Raqam = 9; else Raqam = (Raqam*10) + 9; // Ikki marta bosildi}} if (X165) // 3 -ustunda tugmalarni aniqlash {Num1 = Raqam; Raqam = 0; tft.setCursor (200, 20); tft.setTextColor (RED); if (Y> 0 && Y <85) {Serial.println ("Qo'shish"); harakat = 1; tft.println ('+');} if (Y> 85 && Y <140) {Serial.println ("Chiqarish"); harakat = 2; tft.println ('-');} if (Y> 140 && Y <192) {Serial.println ("Ko'paytirish"); harakat = 3; tft.println ('*');} if (Y> 192 && Y <245) {Serial.println ("Devesion"); harakat = 4; tft.println ('/');} kechiktirish (300); }} void CalculateResult () {if (action == 1) Number = Num1+Num2; if (harakat == 2) Son = Num1-Num2; if (harakat == 3) Son = Num1*Num2; if (harakat == 4) Son = Num1/Num2; } void DisplayResult () {tft.fillRect (0, 0, 240, 80, CYAN); // natija qutisini tozalash tft.setCursor (10, 20); tft.setTextSize (4); tft.setTextColor (Qora); tft.println (Raqam); // yangi qiymatni yangilash} void IntroScreen () {tft.setCursor (55, 120); tft.setTextSize (3); tft.setTextColor (RED); tft.println ("ARDUINO"); tft.setCursor (30, 160); tft.println ("KALKULATOR"); tft.setCursor (30, 220); tft.setTextSize (2); tft.setTextColor (KO'K); tft.println ("-Circut Digest"); delay (1800);} void draw_BoxNButtons () {// Natijalar qutisini chizish tft.fillRect (0, 0, 240, 80, CYAN); // Birinchi ustunni chizish tft.fillRect (0, 260, 60, 60, RED); tft.fillRect (0, 200, 60, 60, Qora); tft.fillRect (0, 140, 60, 60, Qora); tft.fillRect (0, 80, 60, 60, QORA); // Uchinchi ustunni chizish tft.fillRect (120, 260, 60, 60, GREEN); tft.fillRect (120, 200, 60, 60, Qora); tft.fillRect (120, 140, 60, 60, Qora); tft.fillRect (120, 80, 60, 60, Qora); // (int b = 260; b> = 80; b- = 60) uchun sekund va to'rtinchi ustunni chizish {tft.fillRect (180, b, 60, 60, ko'k); tft.fillRect (60, b, 60, 60, BLACK);} // Gorizontal chiziqlarni chizish (int h = 80; h <= 320; h+= 60) tft.drawFastHLine (0, h, 240, WHITE); // (int v = 0; v <= 240; v+= 60) tft.drawFastVLine (v, 80, 240, WHITE) uchun vertikal chiziqlar chizish; // klaviatura yorliqlarini ko'rsatish uchun (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 (oq); tft.println ([j] belgisi); }}} Kodni yuklagandan so'ng, siz displeyda menikidek ishlayotgan kalkulyatorni ko'rasiz va endi siz matematikaning asosiy hisob -kitoblarini bajarishingiz mumkin. Shunday qilib, Arduino UNO yordamida o'zingizning kalkulyatoringizni yasang.

Tavsiya: