Mundarija:
- 1 -qadam: Sizga kerak bo'lgan narsalar
- 2 -qadam: TFT displey kutubxonasini Arduino IDE -ga o'rnatish
- 3 -qadam: Kalkulyator kodini yuklang
Video: Arduino TFT LCD sensorli ekranli kalkulyator: 3 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:25
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
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
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
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:
Sensorli ekranli Macintosh - IPad Mini ekranli klassik Mac: 5 qadam (rasmlar bilan)
Sensorli ekranli Macintosh | Klassik Mac ekran uchun iPad mini bilan: Bu mening yangilangan va qayta ishlangan dizaynim bo'lib, vintli Macintosh ekranini iPad mini bilan qanday almashtirish mumkin. Bu yillar davomida men qilgan oltinchisi va men uning evolyutsiyasi va dizaynidan juda mamnunman! 2013 yilda men yaratganimda
Arduino sensorli ekranli kalkulyator: 7 qadam
Arduino sensorli ekranli kalkulyator: Salom! Bu Arduino Uno va TFT LCD qalqoni yordamida sensorli ekranli kalkulyator yaratish loyihasi. Men o'z uyimdagi dasturlash sinfining kontseptsiyasini ishlab chiqdim va bu loyihani yaratish tajribasi juda qiziq bo'ldi. Bu kalkulyator
Sensorli uchta sensorli davr + Sensorli taymer davri: 4 qadam
Sensorli uchta sensorli davr + Sensorli taymer davri: Sensorli sensor - bu pimlarga teginish aniqlanganda yoqiladigan elektron. Bu vaqtinchalik ishlaydi, ya'ni yuk faqat pimlarga tegib turganda yoqiladi, bu erda men sizga teginishning uch xil usulini ko'rsataman
Arduino TFT sensorli ekranli eshik qulfi: 5 qadam
Arduino TFT sensorli ekranli eshik qulfi: bu mening birinchi ko'rsatma. Bu loyiha Arduino va 2.8 dan foydalanadi " TFT sensorli ekrani parolli eskiz bilan, eshik qulfining eshiklarini o'chirib qo'yadigan röleyni ishga tushirish uchun. Orqa fonda, ish joyidagi eshikdagi RFID qulfi, simni qayta ulashdan ko'ra, sindirilgan
Sensorli ekranli Arduino: 16 qadam
Sensorli ekranli Arduino: Siz ko'proq moslashtirilgan menyu va yaxshiroq inson/mashina interfeyslarini yaratmoqchimisiz? Bunday loyihalar uchun siz Arduino va sensorli displeydan foydalanishingiz mumkin. Bu fikr o'ziga jalb etadimi? Agar shunday bo'lsa, bugun videoni ko'ring, men sizga eshakni ko'rsataman