สารบัญ:

เครื่องคิดเลขหน้าจอสัมผัส Arduino TFT LCD: 3 ขั้นตอน
เครื่องคิดเลขหน้าจอสัมผัส Arduino TFT LCD: 3 ขั้นตอน

วีดีโอ: เครื่องคิดเลขหน้าจอสัมผัส Arduino TFT LCD: 3 ขั้นตอน

วีดีโอ: เครื่องคิดเลขหน้าจอสัมผัส Arduino TFT LCD: 3 ขั้นตอน
วีดีโอ: สอน เขียนโปรแกรม ภาษาซี Wokwi Arduino | Uno R3 LCD TFT ILI9341 SPI แสดงผลข้อความ #ep1 2024, กรกฎาคม
Anonim
เครื่องคิดเลขหน้าจอสัมผัส Arduino TFT LCD
เครื่องคิดเลขหน้าจอสัมผัส Arduino TFT LCD

สวัสดีทุกคนในคำแนะนำนี้ เราจะเรียนรู้วิธีสร้างเครื่องคิดเลขโดยใช้ Arduino Uno พร้อมหน้าจอสัมผัส TFT LCD ขนาด 3.5 นิ้ว ดังนั้นเราจะเขียนโค้ดและอัปโหลดไปยัง Arduino ซึ่งจะแสดงอินเทอร์เฟซเครื่องคิดเลขบนจอแสดงผลและจะใช้ฟังก์ชันการสัมผัสและ ให้ผลลัพธ์ของนิพจน์ทางคณิตศาสตร์พื้นฐาน

ขั้นตอนที่ 1: สิ่งที่คุณต้องการ

สิ่งที่คุณต้องการ
สิ่งที่คุณต้องการ
สิ่งที่คุณต้องการ
สิ่งที่คุณต้องการ

สำหรับโครงการนี้ คุณจะต้องมีสิ่งต่อไปนี้: 3.5 TFT LCD DISPLAYARDUINO UNO

ขั้นตอนที่ 2: การติดตั้งไลบรารีแสดงผล TFT ใน Arduino IDE

การติดตั้งไลบรารี่จอแสดงผล TFT ใน Arduino IDE
การติดตั้งไลบรารี่จอแสดงผล TFT ใน Arduino IDE

เรากำลังใช้ห้องสมุด SPFD5408:

เพื่อให้รหัสเครื่องคิดเลข Arduino นี้ทำงานได้ นี่คือไลบรารีดัดแปลงของ Adafruit และสามารถทำงานได้อย่างราบรื่นกับโมดูล LCD TFT ของเรา มันสำคัญมากสำหรับคุณที่จะติดตั้งไลบรารีนี้ใน Arduino IDE ของคุณหรือโปรแกรมนี้เพื่อคอมไพล์โดยไม่มีข้อผิดพลาด ในการติดตั้งไลบรารีนี้ คุณสามารถคลิกที่ลิงก์ด้านบนซึ่งจะนำคุณไปยังหน้า Github คลิกที่โคลนหรือดาวน์โหลดและเลือก "ดาวน์โหลด ZIP" ไฟล์ zip จะถูกดาวน์โหลด เปิด Arduino IDE แล้วเลือก Sketch -> Include Librarey -> Add. ZIP library หน้าต่างเบราว์เซอร์จะเปิดขึ้นเพื่อนำทางไปยังไฟล์ ZIP และคลิก "ตกลง" คุณควรสังเกตว่า "Library added to your Libraries" ที่มุมล่างซ้ายของ Arduino

ขั้นตอนที่ 3: อัปโหลดรหัสเครื่องคิดเลข

อัปโหลดรหัสเครื่องคิดเลข
อัปโหลดรหัสเครื่องคิดเลข
อัปโหลดรหัสเครื่องคิดเลข
อัปโหลดรหัสเครื่องคิดเลข

หลังจากติดตั้งไลบรารี่แล้วให้เชื่อมต่อจอแสดงผลกับ Arduino และคัดลอกโค้ดต่อไปนี้และอัปโหลดไปยัง Arduino/*_Import Libraries_*/#include "SPFD5408_Adafruit_GFX.h" // Core graphics library#include "SPFD5408_Adafruit_TFTLCD.h" // เฉพาะฮาร์ดแวร์ library#include "SPFD5408_TouchScreen.h"/*_End of Libraries_*//*_Define LCD pins (ฉันได้กำหนดค่าเริ่มต้นไว้แล้ว)_*/#define YP A1 // ต้องเป็นขาอะนาล็อก ใช้สัญลักษณ์ "An"!# กำหนด XM A2 // ต้องเป็นขาอะนาล็อก ใช้สัญลักษณ์ "An"!#define YM 7 // สามารถเป็นพินดิจิทัลได้#define XP 6 // สามารถเป็นพินดิจิทัลได้#define LCD_CS A3#define LCD_CD A2#define LCD_WR A1#define LCD_RD A0#define LCD_RESET A4/*_End of defanitions_*//*_กำหนดชื่อให้กับสีและความดัน_*/#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 //Pink -> Green #define BLUE 0xFFE0 //Yellow- >สีน้ำเงิน#define BLACK 0xFFFF //สีขาว-> 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/* _สิ้นสุดการปรับเทียบ_*/TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300); //300 คือความไวAdafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET); //เริ่มการสื่อสารด้วยสัญลักษณ์ LCDString[4][4] = { { "7", "8", "9", "/" }, { "4", "5", "6", "*" }, { "1", "2", "3", "-" }, { "C", "0", "=", "+" }}; int X, Y; ยาว Num1, Num2, จำนวน; การกระทำของถ่าน; ผลลัพธ์บูลีน = false; เป็นโมฆะการตั้งค่า () { Serial.begin (9600); //ใช้มอนิเตอร์แบบอนุกรมสำหรับการดีบัก tft.reset(); //รีเซ็ตเสมอเมื่อเริ่มต้น tft.begin(0x9341); // LCD ของฉันใช้ LIL9341 ไดรเวอร์อินเตอร์เฟส IC tft.setRotation(2); // ฉันเพิ่งหมุนเพื่อให้แจ็คไฟหงายขึ้น - ทางเลือก tft.fillScreen(WHITE); บทนำ(); draw_BoxNButtons(); } วงเป็นโมฆะ () {TSPoint p = waitTouch ();X = p.y; Y = p.x;// Serial.print(X); Serial.print(','); Serial.println(Y);// + " " + Y);DetectButtons();if (result==true)CalculateResult();DisplayResult(); แสดงผลลัพธ์ (); ล่าช้า (300);} TSPoint waitTouch () { TSPoint p; ทำ { p = ts.getPoint(); โหมดพิน (XM, เอาต์พุต); โหมดพิน (YP, OUTPUT); } while((p.z MAXPRESSURE)); p.x = แผนที่ (p.x, TS_MINX, TS_MAXX, 0, 320); py = แผนที่ (py, TS_MINY, TS_MAXY, 0, 240);; return p;} เป็นโมฆะ DetectButtons (){ if (X0) // การตรวจจับปุ่มในคอลัมน์ 1 { if (Y>0 && Y<85) // หากกดปุ่มยกเลิก {Serial.println ("Button Cancel"); ตัวเลข=Num1=Num2=0; result=false;} if (Y>85 && Y<140) //ถ้ากดปุ่ม 1 {Serial.println ("Button 1"); ถ้า (จำนวน==0) จำนวน=1; อื่น จำนวน = (หมายเลข * 10) + 1; //กดสองครั้ง } if (Y>140 && Y<192) //ถ้ากดปุ่ม 4 {Serial.println ("Button 4"); ถ้า (จำนวน==0) จำนวน=4; อื่น จำนวน = (หมายเลข * 10) + 4; //กดสองครั้ง } if (Y>192 && Y<245) //ถ้ากดปุ่ม 7 {Serial.println ("Button 7"); ถ้า (จำนวน==0) จำนวน=7; อื่น จำนวน = (หมายเลข * 10) + 7; //กดสองครั้ง } } if (X50) //การตรวจจับปุ่มบนคอลัมน์ 2 { if (Y>0 && Y<85) {Serial.println ("Button 0"); // ปุ่ม 0 ถูกกด ถ้า (หมายเลข ==0) หมายเลข = 0; อื่น จำนวน = (หมายเลข * 10) + 0; //กดสองครั้ง } ถ้า (Y>85 && Y<140) {Serial.println ("ปุ่ม 2"); ถ้า (Number==0) Number=2; อื่น จำนวน = (หมายเลข * 10) + 2; //กดสองครั้ง } ถ้า (Y>140 && Y<192) {Serial.println ("ปุ่ม 5"); ถ้า (Number==0) Number=5; อื่น จำนวน = (หมายเลข * 10) + 5; //กดสองครั้ง } ถ้า (Y>192 && Y<245) {Serial.println ("ปุ่ม 8"); ถ้า (จำนวน==0) จำนวน=8; อื่น จำนวน = (หมายเลข * 10) + 8; //กด twic } } if (X105) // ตรวจจับปุ่มในคอลัมน์ 3 { if (Y>0 && Y<85) {Serial.println ("Button Equal"); Num2=จำนวน; ผลลัพธ์ = จริง; } if (Y>85 && Y<140) {Serial.println ("ปุ่ม 3"); ถ้า (Number==0) Number=3; อื่น จำนวน = (หมายเลข * 10) + 3; //กดสองครั้ง } ถ้า (Y>140 && Y<192) {Serial.println ("ปุ่ม 6"); ถ้า (จำนวน==0) จำนวน=6; อื่น จำนวน = (หมายเลข * 10) + 6; //กดสองครั้ง } ถ้า (Y>192 && Y<245) {Serial.println ("ปุ่ม 9"); ถ้า (Number==0) Number=9; อื่น จำนวน = (หมายเลข * 10) + 9; // กดสองครั้ง } } if (X165) // ตรวจจับปุ่มในคอลัมน์ 3 { Num1 = Number; จำนวน =0; tft.setCursor(200, 20); tft.setTextColor(สีแดง); ถ้า (Y>0 && Y<85) {Serial.println ("เพิ่มเติม"); การกระทำ = 1; tft.println('+');} if (Y>85 && Y<140) {Serial.println ("การลบ"); การกระทำ = 2; tft.println('-');} if (Y>140 && Y<192) {Serial.println ("การคูณ"); การกระทำ = 3; tft.println('*');} if (Y>192 && Y<245) {Serial.println ("Devesion"); การกระทำ = 4; tft.println('/');} ล่าช้า (300); } }เป็นโมฆะ CalculateResult(){ if (action==1) Number = Num1+Num2; ถ้า (action==2) Number = Num1-Num2; ถ้า (action==3) Number = Num1*Num2; ถ้า (action==4) Number = Num1/Num2; }เป็นโมฆะ DisplayResult(){ tft.fillRect(0, 0, 240, 80, CYAN); //ล้างกล่องผลลัพธ์ tft.setCursor(10, 20); tft.setTextSize(4); tft.setTextColor (สีดำ); tft.println(หมายเลข); // อัปเดตค่าใหม่} เป็นโมฆะ IntroScreen () { tft.setCursor (55, 120); tft.setTextSize (3); tft.setTextColor(สีแดง); tft.println("ARDUINO"); tft.setCursor (30, 160); tft.println("เครื่องคิดเลข"); tft.setCursor (30, 220); tft.setTextSize (2); tft.setTextColor(สีน้ำเงิน); tft.println("-Circut Digest"); ล่าช้า (1800);} เป็นโมฆะ draw_BoxNButtons () { // วาดกล่องผลลัพธ์ tft.fillRect (0, 0, 240, 80, CYAN); //วาดคอลัมน์แรก tft.fillRect (0, 260, 60, 60, RED); tft.fillRect (0, 200, 60, 60, สีดำ); tft.fillRect (0, 140, 60, 60, สีดำ); tft.fillRect (0, 80, 60, 60, สีดำ); //วาดคอลัมน์ที่สาม tft.fillRect (120, 260, 60, 60, สีเขียว); tft.fillRect (120, 200, 60, 60, สีดำ); tft.fillRect (120, 140, 60, 60, สีดำ); tft.fillRect (120, 80, 60, 60, สีดำ); // วาดคอลัมน์ที่สองและสี่สำหรับ (int b=260; b>=80; b-=60) { tft.fillRect (180, b, 60, 60, BLUE); tft.fillRect (60, b, 60, 60, BLACK);} //วาดเส้นแนวนอนสำหรับ (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); // แสดงแป้นกดสำหรับ (int j=0;j<4;j++) { สำหรับ (int i=0;i<4;i++) { tft.setCursor (22 + (60*i), 100 + (60* NS)); tft.setTextSize(3); tft.setTextColor (สีขาว); tft.println(สัญลักษณ์[j]); } }}หลังจากอัปโหลดโค้ดแล้ว คุณจะเห็นเครื่องคิดเลขที่ทำงานอยู่ในหน้าจอเป็นของฉัน และตอนนี้คุณสามารถคำนวณทางคณิตศาสตร์ขั้นพื้นฐานได้ ขอให้สนุกกับการสร้างเครื่องคิดเลขของคุณเองด้วย Arduino UNO

แนะนำ: