สารบัญ:

Arduino Touchscreen Calculator: 7 ขั้นตอน
Arduino Touchscreen Calculator: 7 ขั้นตอน

วีดีโอ: Arduino Touchscreen Calculator: 7 ขั้นตอน

วีดีโอ: Arduino Touchscreen Calculator: 7 ขั้นตอน
วีดีโอ: Arduino TFT LCD Touch Screen Tutorial 2024, กรกฎาคม
Anonim
Arduino Touchscreen Calculator
Arduino Touchscreen Calculator

สวัสดี! นี่เป็นโครงการที่จะสร้างเครื่องคิดเลขหน้าจอสัมผัสโดยใช้ Arduino Uno และแผงป้องกัน TFT LCD ฉันคิดแนวคิดสำหรับชั้นเรียนเขียนโปรแกรมโฮมสคูล และประสบการณ์ในการสร้างโครงการนี้ก็น่าสนใจมาก เครื่องคิดเลขนี้สามารถดำเนินการทางคณิตศาสตร์อย่างง่ายได้สี่แบบ (การบวก การลบ การคูณ และการหาร) นอกจากนี้ยังแสดงจุดทศนิยมสูงสุดสองจุดสำหรับคำตอบของการหารที่มี มาดำดิ่งกัน! อุปกรณ์สำหรับโครงการนี้มีดังต่อไปนี้

เสบียง

- Arduino Uno

- 2.4 TFT LCD Shield (ฉันซื้อที่นี่:

- สาย USB A ถึง B (สายต่อ Arduino กับคอมพิวเตอร์)

- คอมพิวเตอร์ที่ติดตั้ง Arduino IDE

- คุณจะต้องดาวน์โหลดสองไลบรารี่: MCUFRIEND_kbv และ Touchscreen ไฟล์แรกที่คุณสามารถพบได้ใน github (ลิงก์: https://github.com/prenticedavid/MCUFRIEND_kbv) หรือคุณสามารถใช้ไฟล์ zip ของไลบรารีที่ฉันได้รวมไว้ด้านล่าง ประการที่สองอยู่ใน Arduino Library Manager สำหรับการติดตั้ง

ขั้นตอนที่ 1: การเชื่อมต่อฮาร์ดแวร์

การเชื่อมต่อฮาร์ดแวร์
การเชื่อมต่อฮาร์ดแวร์
การเชื่อมต่อฮาร์ดแวร์
การเชื่อมต่อฮาร์ดแวร์
การเชื่อมต่อฮาร์ดแวร์
การเชื่อมต่อฮาร์ดแวร์

การเชื่อมต่อแผงหน้าจอสัมผัสกับ Arduino Uno ทำได้ง่ายและรวดเร็ว สิ่งที่คุณต้องทำคือจัดเรียงพินต่ำสุดบนชิลด์กับพินต่ำสุดบน Arduino และดันชิลด์เข้าไปในพิน พิน 5V ด้านบนและพินที่ไม่มีป้ายกำกับที่ด้านกำลังไฟฟ้าไม่ควรมีพินจากชิลด์ในนั้น โดยจะใช้พารามิเตอร์เดียวกันกับพินที่ระบุว่า SCL และ SDA ที่อีกด้านหนึ่งของบอร์ด ตอนนี้เราพร้อมที่จะเขียนโค้ดแล้ว!

ขั้นตอนที่ 2: The Code: Global Definitions & Setup

#รวม

MCUFRIEND_kbv tft; // ต่อสายแบบแข็งสำหรับ UNO shields อยู่แล้ว

#รวม

#define YP A3

#define XM A2

#define YM 9

#define XP 8

TouchScreen ts = หน้าจอสัมผัส (XP, YP, XM, YM, 300);

#กำหนดความดันต่ำ 10

นี่คือจุดเริ่มต้นของโค้ด ซึ่งเรารวมไลบรารี่ (MCUFRIEND_kbv & Touchscreen) กำหนดพิน X และ Y ตั้งค่าพารามิเตอร์หน้าจอสัมผัส และกำหนดแรงดันขั้นต่ำที่จำเป็นสำหรับ Arduino เพื่อลงทะเบียนผู้ใช้กด

รหัสภายใน;

int user_selection;

float save_number = 0;

ระยะลอยตัว 1;

int op_num;

ผลลอย;

int เคอร์เซอร์LocX = 5;

int เคอร์เซอร์LocY = 20;

ก่อนตั้งค่า เราจำเป็นต้องตั้งค่าตัวแปรส่วนกลางบางตัว ID ช่วยในการทำให้หน้าจอสัมผัสทำงาน user_selection ถือตัวเลขที่สอดคล้องกับคีย์ที่ผู้ใช้เลือกเมื่อกดหน้าจอสัมผัส save_number เป็นตัวแปรที่เราพิมพ์ไปยังหน้าจอหลังจากผู้ใช้ป้อนข้อมูล (เพิ่มเติมในลูปนี้) เป็นทศนิยมสามารถเก็บตัวเลขทศนิยมและจำนวนเต็มได้ เทอม 1 คือตัวแปรที่บันทึกหมายเลขแรกของสมการหลังจากเลือกตัวถูกดำเนินการ op_num บันทึกตัวถูกดำเนินการเป็นตัวเลข (1 สำหรับการบวก 2 สำหรับการลบ 3 สำหรับการคูณและ 4 สำหรับการหาร) ผลลัพธ์คือตัวแปรที่พิมพ์ไปยังหน้าจอหลังจากที่ผู้ใช้กดเครื่องหมายเท่ากับ ยังเป็นทุ่นลอยน้ำอีกด้วย cursorLocX และ cursorLocY คือจุดจับคู่บนหน้าจอสัมผัสที่เคอร์เซอร์ถูกตั้งค่าหลายครั้ง (อยู่ในแถบสีเทาที่ด้านบน หรือที่เรียกว่าฟิลด์ผลลัพธ์)

การตั้งค่าเป็นโมฆะ (){

tft.reset();

ID = tft.readID();

tft.begin(ID);

tft.setRotation(0);

tft.fillScreen(TFT_DARKGREY);

สี่เหลี่ยม ();

ตัวเลข ();

tft.setTextSize(3);

tft.setTextColor(TFT_BLUE, TFT_DARKGREY);

}

ฟังก์ชั่นการตั้งค่าของเรามีการเริ่มต้นสำหรับแผงหน้าจอสัมผัส (บรรทัดที่ 1-3) การวางแนวของเกราะถูกตั้งค่าโดยใช้คำสั่ง tft.setRotation() โดยที่ 0 ตั้งตรง หน้าจอทั้งหมดเป็นสีเทาเข้มด้วยคำสั่ง tft.fillScreen() ซึ่งเราจะเขียนทับ (ยกเว้นฟิลด์ผลลัพธ์) ฟังก์ชัน squares() และ numbers() วาดกำลังสองของเครื่องคิดเลข ระบายสีสี่เหลี่ยมขาวดำในรูปแบบกระดานหมากรุก และเขียนตัวเลข/ตัวถูกดำเนินการบนช่องสี่เหลี่ยมด้วยสีน้ำเงิน เราจะพูดถึงสิ่งเหล่านั้นในขั้นตอนต่อไป คำสั่ง tft.setTextSize() กำหนดขนาดข้อความของฟิลด์ผลลัพธ์เป็น 3 ซึ่งเป็นฟอนต์ขนาดกลาง คำสั่ง tft.setTextColor() กำหนดสีข้อความของฟิลด์ผลลัพธ์เป็นสีน้ำเงิน ซึ่งเขียนทับฟิลด์สีเทาเข้ม

ขั้นตอนที่ 3: รหัส: Loop

วงเป็นโมฆะ () { numberSelect ();

ล่าช้า (100);

ถ้า (user_selection == 16){

;

}อื่น{

ถ้า (user_selection < 10){

save_number = save_number * 10 + user_selection;

tft.setCursor (เคอร์เซอร์LocX, เคอร์เซอร์LocY);

tft.print(saved_number);

}อื่นถ้า (user_selection > 10){

สวิตช์ (user_selection){

กรณีที่ 11:

op_num = 1;

tft.setCursor (เคอร์เซอร์LocX, เคอร์เซอร์LocY);

tft.print("+");

เทอม 1 = save_number;

save_number = 0;

หยุดพัก;

กรณีที่ 12:

op_num = 2;

tft.setCursor (เคอร์เซอร์LocX, เคอร์เซอร์LocY);

tft.print("-");

เทอม 1 = save_number;

save_number = 0;

หยุดพัก;

กรณีที่ 13:

op_num = 3;

tft.setCursor (เคอร์เซอร์LocX, เคอร์เซอร์LocY);

tft.print("X");

เทอม 1 = save_number;

save_number = 0;

หยุดพัก;

กรณีที่ 14:

op_num = 4;

tft.setCursor (เคอร์เซอร์LocX, เคอร์เซอร์LocY);

tft.print("/");

เทอม 1 = save_number;

save_number = 0;

หยุดพัก;

กรณีที่ 15:

save_number = 0;

เทอม 1 = 0;

op_num = 0;

tft.setCursor (เคอร์เซอร์LocX, เคอร์เซอร์LocY);

tft.print(" ");

หยุดพัก;

}

tft.setCursor (เคอร์เซอร์LocX, เคอร์เซอร์LocY);

นี่เป็นเรื่องที่ต้องเคี้ยวมาก ดังนั้นฉันจะอธิบายสิ่งที่กล่าวข้างต้น เราเริ่มต้นด้วยการเรียกใช้ฟังก์ชัน numberSelect() ซึ่งกำหนดตัวเลขให้กับแต่ละช่องสี่เหลี่ยมบนหน้าจอสัมผัส เมื่อผู้ใช้กดหนึ่งในสี่เหลี่ยมเหล่านั้น ฟังก์ชันจะตั้งค่าตัวแปร user_selection เป็นจำนวนสี่เหลี่ยมจัตุรัส คำสั่ง if เป็นคำสั่งแรกให้รันผ่านลูปก็ต่อเมื่อได้เลือกผู้ใช้ที่ถูกต้องแล้ว ถ้าใช่ คำสั่ง if ถัดไปจะถามว่า user_selection มีตัวเลขที่บันทึกไว้น้อยกว่า 10 หรือไม่ (ตัวเลข 0-9) ถ้าเป็นเช่นนั้น save_number จะถูกคูณด้วย 10 และตัวเลขใน user_selection จะถูกเพิ่มไปยัง save_number ซึ่งจะถูกพิมพ์ในช่องผลลัพธ์บนหน้าจอสัมผัส หากไม่เป็นเช่นนั้น คำสั่ง if ถัดไปจะถามว่า user_selection มีตัวเลขที่มากกว่า 10 บันทึกไว้หรือไม่ (ตัวเลขตัวถูกดำเนินการ: 11 สำหรับ +, 12 สำหรับ -, 13 สำหรับ X, 14 สำหรับ / และ 15 สำหรับช่องสี่เหลี่ยมแบบใส). ฟังก์ชันสวิตช์จะดูแลแต่ละกรณี (กำหนดโดย user_selection) ตัวแปร op_num จะได้รับตัวเลขที่สอดคล้องกับตัวถูกดำเนินการที่เลือก (1 สำหรับ +, 2 สำหรับ -, 3 สำหรับ X และ 4 สำหรับ /) ค่าใน save_number จะถูกบันทึกลงในตัวแปร term1 เพื่อให้สามารถใช้ตัวแปร saved_number สำหรับครึ่งหลังของสมการได้ สัญลักษณ์ตัวถูกดำเนินการจะถูกพิมพ์บนหน้าจอพร้อมกับล้างตัวเลขใดๆ ในฟิลด์ผลลัพธ์ ข้อยกเว้นเพียงอย่างเดียวคือสี่เหลี่ยมหน้าจอที่ชัดเจน ซึ่งจะรีเซ็ตตัวแปรการคำนวณทั้งหมดและล้างฟิลด์ผลลัพธ์ของสิ่งใดๆ ที่อยู่ในนั้น

}อื่น{

สวิตช์ (op_num){

กรณีที่ 1:

ผลลัพธ์ = เทอม 1 + save_number;

tft.setCursor (เคอร์เซอร์LocX, เคอร์เซอร์LocY);

tft.print(สองเท่า(ผลลัพธ์));

หยุดพัก;

กรณีที่ 2:

ผลลัพธ์ = เทอม 1 - save_number;

tft.setCursor (เคอร์เซอร์LocX, เคอร์เซอร์LocY);

tft.print(สองเท่า(ผลลัพธ์));

หยุดพัก;

กรณีที่ 3:

ผลลัพธ์ = เทอม 1 * save_number;

tft.setCursor (เคอร์เซอร์LocX, เคอร์เซอร์LocY);

tft.print(สองเท่า(ผลลัพธ์));

หยุดพัก;

กรณีที่ 4:

ผลลัพธ์ = float(term1) / float(saved_number);

tft.setCursor (เคอร์เซอร์LocX, เคอร์เซอร์LocY);

tft.print(ผลลัพธ์);

หยุดพัก;

}

tft.setCursor (เคอร์เซอร์LocX, เคอร์เซอร์LocY);

save_number = ผลลัพธ์;

เทอม 1 = 0;

op_num = 0;

ล่าช้า (1000);

}

}

}

ส่วนสุดท้ายของลูปเกี่ยวข้องกับเหตุการณ์ที่ผู้ใช้เลือกเครื่องหมายเท่ากับ (user_selection == 10) ฟังก์ชันสวิตช์อื่นทำงานผ่านฟังก์ชันทางคณิตศาสตร์ทั้งสี่ (กำหนดโดย op_num) กรณีที่บวก (กรณีที่ 1) เพิ่ม term1 และ save_number เข้าด้วยกันและบันทึกตัวเลขลงในตัวแปรผลลัพธ์ ผลลัพธ์จะถูกพิมพ์ลงในฟิลด์ผลลัพธ์เป็นสองเท่า กรณีการลบ (กรณีที่ 2) จะลบ save_number จากเทอม 1 และบันทึกตัวเลขลงในตัวแปรผลลัพธ์ ผลลัพธ์จะถูกพิมพ์ลงในฟิลด์ผลลัพธ์เป็นสองเท่า กรณีการคูณ (กรณีที่ 3) คูณเทอม 1 ด้วย save_number และบันทึกตัวเลขลงในตัวแปรผลลัพธ์ ผลลัพธ์จะถูกพิมพ์ลงในฟิลด์ผลลัพธ์เป็นสองเท่า ตัวพิมพ์หาร (กรณีที่ 4) แบ่งเทอม 1 ด้วย save_number เข้าด้วยกันและบันทึกตัวเลขลงในตัวแปรผลลัพธ์ ผลลัพธ์จะถูกพิมพ์ลงในฟิลด์ผลลัพธ์แบบทศนิยม (เนื่องจากคำตอบของการแบ่งส่วนอาจเป็นตัวเลขทศนิยม) หลังจากเหตุการณ์ของตัวเลข ตัวถูกดำเนินการ หรือผลลัพธ์ที่พิมพ์ไปยังหน้าจอ เคอร์เซอร์จะถูกรีเซ็ต บันทึก save_number ถูกตั้งค่าเป็นผลลัพธ์ก่อนหน้า และterm1 & op_num จะถูกรีเซ็ต

หมายเหตุบางประการ: ผู้ใช้ไม่สามารถป้อนตัวเลขทศนิยมลงในเครื่องคิดเลขได้เนื่องจากไม่มีจุดทศนิยม นอกจากนี้ ผู้ใช้สามารถทำสมการได้ครั้งละหนึ่งสมการเท่านั้น คุณไม่สามารถคำนวณผลลัพธ์แล้วบวก/ลบ/คูณ/หารผลลัพธ์นั้นได้ ในฟังก์ชัน numberSelect() มีฟังก์ชันที่ล้างหน้าจอหลังจากพิมพ์ผลลัพธ์แล้ว หากผู้ใช้กดสี่เหลี่ยมอื่น

ขั้นตอนที่ 4: รหัส: ฟังก์ชัน Squares

ช่องว่างสี่เหลี่ยม (){

// สี่เหลี่ยมขาวดำสลับกันในแต่ละแถวและแถวที่หนึ่งและสามมีรูปแบบที่ตรงกันข้ามกับแถวที่สองและสี่

tft.fillRect(0, 60, 60, 65, TFT_BLACK); // แถวแรกของช่องสี่เหลี่ยมเริ่มต้น สีดำเป็นสีขาว tft.fillRect(60, 60, 60, 65, TFT_WHITE);

tft.fillRect (120, 60, 60, 65, TFT_BLACK);

tft.fillRect (180, 60, 60, 65, TFT_WHITE); // แถวแรกของสี่เหลี่ยมสิ้นสุด

tft.fillRect(0, 125, 60, 65, TFT_WHITE); // เริ่มแถวที่สองของช่องสี่เหลี่ยม สีขาวเป็นสีดำ tft.fillRect(60, 125, 60, 65, TFT_BLACK);

tft.fillRect (120, 125, 60, 65, TFT_WHITE);

tft.fillRect (180, 125, 60, 65, TFT_BLACK); // แถวที่สองของสี่เหลี่ยมสิ้นสุด

tft.fillRect(0, 190, 60, 65, TFT_BLACK); // แถวที่สามของช่องสี่เหลี่ยมเริ่มต้น สีดำเป็นสีขาว tft.fillRect(60, 190, 60, 65, TFT_WHITE);

tft.fillRect (120, 190, 60, 65, TFT_BLACK);

tft.fillRect (180, 190, 60, 65, TFT_WHITE); // แถวที่สามของช่องสี่เหลี่ยมสิ้นสุด

tft.fillRect(0, 255, 60, 65, TFT_WHITE); // แถวที่สี่ของสี่เหลี่ยมเริ่มต้น สีขาวเป็นสีดำ tft.fillRect(60, 255, 60, 65, TFT_BLACK);

tft.fillRect (120, 255, 60, 65, TFT_WHITE);

tft.fillRect (180, 255, 60, 65, TFT_BLACK); // แถวที่สี่ของสี่เหลี่ยมสิ้นสุด

}

ฟังก์ชัน squares() ค่อนข้างตรงไปตรงมา คำสั่ง tft.fillRect(X1, Y1, X2, Y2, TFT_COLOR) จะวาดสี่เหลี่ยมตามพารามิเตอร์ที่ส่งไป ซึ่งก็คือตำแหน่งแรกของ x และ y ตำแหน่งที่สองของ x และ y และสีที่เติมลงในสี่เหลี่ยม. ฟังก์ชันนี้จะวาดสี่เหลี่ยมทั้งสี่แถว (ซึ่งก็คือสี่เหลี่ยมทางเทคนิค) และเติมสีแต่ละช่องสี่เหลี่ยมจัตุรัสด้วยสีที่ส่งไป

ขั้นตอนที่ 5: รหัส: ฟังก์ชันตัวเลข

ตัวเลขที่เป็นโมฆะ (){

tft.setTextColor(TFT_BLUE); // กำหนดสีตัวเลข/ตัวอักษรเป็นสีน้ำเงิน

tft.setTextSize(5); // กำหนดขนาดตัวเลข/ตัวอักษรเป็น 5

tft.setCursor(18, 75); // ตั้งค่าเคอร์เซอร์สำหรับบรรทัดแรกของตัวเลข/อักขระ

tft.print("7 8 9 /"); // พิมพ์ตัวเลข/ตัวอักษรบรรทัดแรก

tft.setCursor(18, 140); // ตั้งค่าเคอร์เซอร์สำหรับบรรทัดที่สองของตัวเลข/อักขระ

tft.print("4 5 6 X"); // พิมพ์บรรทัดที่สองของตัวเลข/อักขระ

tft.setCursor(18, 205); // ตั้งค่าเคอร์เซอร์สำหรับบรรทัดที่สามของตัวเลข/อักขระ

tft.print("1 2 3 -"); // พิมพ์ตัวเลข/อักขระบรรทัดที่สาม

tft.setCursor(18, 270); // ตั้งค่าเคอร์เซอร์สำหรับบรรทัดที่สี่ของตัวเลข/อักขระ

tft.print("C 0 = +"); // พิมพ์ตัวเลข/อักขระบรรทัดที่สี่

}

ฟังก์ชันตัวเลข () นั้นตรงไปตรงมาเช่นกัน สองบรรทัดแรกกำหนดขนาดตัวอักษรให้ใหญ่ขึ้นและสีเป็นสีน้ำเงิน คำสั่ง tft.setCursor() จะตั้งค่าเคอร์เซอร์ไปที่ตำแหน่งในแต่ละแถวที่จุดเริ่มต้นของการเขียนตัวเลข จากนั้นคำสั่ง tft.print() จะพิมพ์ตัวเลข/อักขระบนช่องสี่เหลี่ยม

ขั้นตอนที่ 6: รหัส: NumberSelect Function

เป็นโมฆะ numberSelect(){

TSPoint p = ts.getPoint();

โหมดพิน (XM, เอาต์พุต);

โหมดพิน (YP, OUTPUT);

ถ้า (หน้า z > MINPRESSURE){

หน้าx = แผนที่(หน้าx, 250, 845, 0, 239);

py = แผนที่(py, 245, 860, 0, 319);

ถ้า (ผลลัพธ์ != 0){

ผลลัพธ์ = 0;

save_number = 0;

tft.print("ค่าที่ชัดเจน");

ล่าช้า (500);

tft.setCursor (เคอร์เซอร์LocX, เคอร์เซอร์LocY);

tft.print(" ");

tft.setCursor (เคอร์เซอร์LocX, เคอร์เซอร์LocY);

}

ในการเริ่มต้นฟังก์ชัน numberSelect() เราขอข้อมูลจากผู้ใช้จากหน้าจอสัมผัสด้วยคำสั่ง ts.getPoint() เมื่อรวบรวมข้อมูลแล้ว เราจะตรวจสอบเพื่อดูว่าแรงดันเกินขั้นต่ำเกินหรือไม่ (หรือกล่าวอีกนัยหนึ่งคือ หากผู้ใช้กดที่ใดที่หนึ่งบนหน้าจอสัมผัส) หากใช่ พิกัด x และ y จะถูกจับคู่จากพิกัดคาร์ทีเซียนกับพิกัดเฉพาะหน้าจอสัมผัส (0, 0) คือมุมซ้ายบนของหน้าจอสัมผัส โดยให้แกน x ข้ามและแกน y เลื่อนลง ส่วนถัดไปจะตรวจสอบว่ามีการบันทึกตัวเลขในผลลัพธ์หรือไม่ หากมี ผลลัพธ์และบันทึก_number จะถูกรีเซ็ตเป็น 0 ข้อความ "CLEAR VALUES " จะถูกพิมพ์เหนือฟิลด์ผลลัพธ์ และหน้าจอจะถูกล้างด้วยเคอร์เซอร์กลับไปที่ตำแหน่งเริ่มต้น

if (p.y 60){ // แถวแรกของสี่เหลี่ยม

ถ้า (หน้าx < 60)

user_selection = 7;

อื่นถ้า (หน้าx < 120)

user_selection = 8;

อื่น ๆ ถ้า (หน้า x < 180)

user_selection = 9;

อย่างอื่น user_selection = 14;

} else if (p.y 125){ // แถวที่สองของสี่เหลี่ยม

ถ้า (หน้า x < 60)

user_selection = 4;

อื่น ๆ ถ้า (หน้า x < 120)

user_selection = 5;

อื่น ๆ ถ้า (หน้า x < 180)

user_selection = 6;

อย่างอื่น user_selection = 13;

} else if (p.y 190){ // แถวที่สามของช่องสี่เหลี่ยม

ถ้า (หน้า x < 60)

user_selection = 1;

อื่น ๆ ถ้า (หน้า x < 120)

user_selection = 2;

อื่น ๆ ถ้า (หน้า x < 180)

user_selection = 3;

อย่างอื่น user_selection = 12;

} else if (py > 255){ // แถวที่สี่ของสี่เหลี่ยม

ถ้า (หน้า x < 60)

user_selection = 15;

อื่นถ้า (หน้าx < 120)

user_selection = 0;

อื่น ๆ ถ้า (หน้า x < 180)

user_selection = 10;

อย่างอื่น user_selection = 11;

}

}อื่น{

user_selection = 16; // user_selection ถูกตั้งค่าเป็น 16 (ไม่มีตัวแปร)

}

}

เป็นส่วนที่กำหนดว่าปุ่มใดถูกเลือก เริ่มจากแถวบนสุดของสี่เหลี่ยมจัตุรัสและลงท้ายด้วยแถวล่าง Arduino จะค้นหาตำแหน่งที่หน้าจอถูกกดจริงๆ จากนั้นกำหนดตัวเลขให้กับสี่เหลี่ยมจัตุรัสและบันทึกตัวเลขนั้นลงใน user_selection ตัวเลข 0-9 ตรงกับตัวเลขกำลังสอง ตัวเลข 11-15 ตรงกับตัวถูกดำเนินการและกำลังสองที่ชัดเจน และหมายเลข 10 ตรงกับเครื่องหมายกำลังสอง หากไม่ได้เลือกสี่เหลี่ยมจัตุรัส user_selection จะถูกตั้งค่าเป็น 16 ซึ่งจะทำให้การวนซ้ำเริ่มต้นใหม่อีกครั้ง (ดูฟังก์ชันวนซ้ำ)

ขั้นตอนที่ 7: สนุกกับโครงการที่เสร็จแล้วของคุณ

ที่นั่นคุณมีมัน! ตอนนี้คุณมีเครื่องคำนวณหน้าจอสัมผัสที่สามารถทำการบวก ลบ คูณ และหารได้ โปรเจ็กต์นี้เปลี่ยนวิธีที่ฉันคิดว่าเครื่องคิดเลขทำงาน ขณะที่ฉันทำโครงงานนี้ ฉันจำได้ว่าบอกผู้สอนในชั้นเรียนว่า "ฉันจะไม่มองเครื่องคิดเลขแบบเดิมอีกต่อไป!" ฟังก์ชันที่คุณในฐานะผู้ใช้คิดว่าง่ายจะค่อนข้างยากเมื่อคุณอยู่เบื้องหลังคอมพิวเตอร์ที่พยายามเลียนแบบความคิดของคุณ ฉันหวังว่าคุณจะสนุกกับโครงการนี้ และฉันหวังว่าความคิดของคุณเกี่ยวกับวิธีการทำงานของเครื่องคิดเลขก็เปลี่ยนไปเช่นกัน!

นี่คือรหัสทั้งหมดเพื่อความสะดวกของคุณ มันเต็มไปด้วยความคิดเห็น ดังนั้นหากคุณมีปัญหาใดๆ พวกเขาควรแสดงให้คุณเห็นว่าแต่ละบรรทัดทำอะไร

แนะนำ: