תוכן עניינים:

מחשבון מסך מגע Arduino TFT LCD: 3 שלבים
מחשבון מסך מגע Arduino TFT LCD: 3 שלבים

וִידֵאוֹ: מחשבון מסך מגע Arduino TFT LCD: 3 שלבים

וִידֵאוֹ: מחשבון מסך מגע Arduino TFT LCD: 3 שלבים
וִידֵאוֹ: [ארדואינו מתחילים][תצוגה] מסך תווים Character LCD HD44780 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:

כדי לגרום לקוד המחשבון הארדואיני הזה לעבוד. זוהי ספרייה שונה של Adafruit והיא יכולה לעבוד בצורה חלקה עם מודול TFT LCD שלנו. חשוב לך מאוד להתקין את הספרייה הזו ב- Arduino IDE שלך או בתוכנית זו כדי להרכיב ללא כל שגיאה. כדי להתקין את הספרייה הזו, אתה יכול פשוט ללחוץ על הקישור למעלה שיוביל אותך לדף Github. לחץ על שיבוט או הורד ובחר "הורד ZIP". קובץ zip יורד. כעת, פתח את Arduino IDE ובחר Sketch -> Include Librarey -> Add. ZIP. חלון דפדפן יפתח נווט אל קובץ ה- ZIP ולחץ על "אישור". עליך לשים לב ל"ספרייה שנוספה לספריות שלך "בפינה השמאלית התחתונה של ארדואינו.

שלב 3: העלה את קוד המחשבון

העלה את קוד המחשבון
העלה את קוד המחשבון
העלה את קוד המחשבון
העלה את קוד המחשבון

לאחר התקנת הספרייה חבר את התצוגה ל- Arduino והעתק את הקוד הבא והעלה אותו ל- Arduino. ספרייה#כוללת "SPFD5408_TouchScreen.h"/*_ סוף הספריות _*//*_ הגדר סיכות LCD (הקצתי את ערכי ברירת המחדל) _*/#הגדר YP A1 // חייב להיות סיכה אנלוגית, השתמש בסימון "An"!# הגדר XM A2 // חייב להיות סיכה אנלוגית, השתמש בסימון "An"! #define YM 7 // יכול להיות סיכה דיגיטלית#הגדר XP 6 // יכול להיות סיכה דיגיטלית#הגדר LCD_CS A3#הגדר LCD_CD A2#הגדר LCD_WR A1#הגדר LCD_RD A0#הגדר LCD_RESET A4/*_ סוף ההגדרות _*//*_ הקצה שמות לצבעים ולחץ _*/#הגדר לבן 0x0000 // שחור-> לבן#הגדר צהוב 0x001F // כחול-> צהוב#הגדר CYAN 0xF800 // אדום-> ציאן#מגדיר ורוד 0x07E0 // ירוק-> ורוד#מגדיר אדום 0x07FF // ציאן-> אדום#מגדיר ירוק 0xF81F // ורוד-> ירוק#מגדיר כחול 0xFFE0 // צהוב- > כחול#הגדר שחור 0xFFFF // לבן-> שחור#הגדר MINPRESSURE 10#הגדר MAXPRESSURE 1000/*_ מוקצה _*//*_ כיול TFT LCD _*/#הגדר TS_MINX 125#הגדר TS_MINY 85#הגדר TS_MAXX 965#הגדר TS_MAXY 905/* _ סוף כיול _*/מסך מגע ts = מסך מגע (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; מספר 1 ארוך, מספר 2, מספר; פעולת צ'ארה; תוצאה בוליאנית = false; הגדרת void () {Serial.begin (9600); // השתמש במסך טורי לניפוי באגים של tft.reset (); // איפוס תמיד בהתחלה tft.begin (0x9341); // ה- LCD שלי משתמש ב- LIL9341 מנהל התקן ממשק IC tft.setRotation (2); // הרגע הרמתי כך ששקע החשמל פונה כלפי מעלה - אופציונלי tft.fillScreen (WHITE); IntroScreen (); 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 (); pinMode (XM, OUTPUT); pinMode (YP, OUTPUT); } while ((p.z MAXPRESSURE)); p.x = מפה (p.x, TS_MINX, TS_MAXX, 0, 320); p.y = map (p.y, TS_MINY, TS_MAXY, 0, 240);; החזר p;} void DetectButtons () {if (X0) // איתור לחצנים בעמודה 1 {if (Y> 0 && Y <85) // אם לחצן ביטול נלחץ {Serial.println ("לחצן ביטול"); מספר = מספר 1 = מספר 2 = 0; result = false;} אם (Y> 85 && Y <140) // אם לחצו על לחצן 1 {Serial.println ("לחצן 1"); אם (מספר == 0) מספר = 1; אחרת מספר = (מספר*10) + 1; // לחצו פעמיים} אם (Y> 140 && Y <192) // אם לחצו על לחצן 4 {Serial.println ("לחצן 4"); אם (מספר == 0) מספר = 4; אחרת מספר = (מספר*10) + 4; // לחצו פעמיים} אם (Y> 192 && Y <245) // אם לחצו על לחצן 7 {Serial.println ("לחצן 7"); אם (מספר == 0) מספר = 7; אחרת מספר = (מספר*10) + 7; // לחצו פעמיים}} if (X50) // איתור לחצנים בעמודה 2 {if (Y> 0 && Y <85) {Serial.println ("לחצן 0"); // כפתור 0 נלחץ אם (מספר == 0) מספר = 0; אחרת מספר = (מספר*10) + 0; // לחצו פעמיים} if (Y> 85 && Y <140) {Serial.println ("לחצן 2"); אם (מספר == 0) מספר = 2; אחרת מספר = (מספר*10) + 2; // לחצו פעמיים} if (Y> 140 && Y <192) {Serial.println ("לחצן 5"); אם (מספר == 0) מספר = 5; אחרת מספר = (מספר*10) + 5; // לחצו twic} if (Y> 192 && Y <245) {Serial.println ("כפתור 8"); אם (מספר == 0) מספר = 8; אחרת מספר = (מספר*10) + 8; // לחצו twic}} if (X105) // איתור לחצנים בעמודה 3 {if (Y> 0 && Y <85) {Serial.println ("לחצן שווה"); Num2 = מספר; תוצאה = אמת; } אם (Y> 85 && Y <140) {Serial.println ("כפתור 3"); אם (מספר == 0) מספר = 3; אחרת מספר = (מספר*10) + 3; // לחצו פעמיים} if (Y> 140 && Y <192) {Serial.println ("לחצן 6"); אם (מספר == 0) מספר = 6; אחרת מספר = (מספר*10) + 6; // לחצו פעמיים} if (Y> 192 && Y <245) {Serial.println ("לחצן 9"); אם (מספר == 0) מספר = 9; אחרת מספר = (מספר*10) + 9; // לחצו פעמיים}} אם (X165) // זיהוי לחצנים בעמודה 3 {Num1 = Number; מספר = 0; tft.setCursor (200, 20); tft.setTextColor (אדום); if (Y> 0 && Y <85) {Serial.println ("תוספת"); פעולה = 1; tft.println ('+');} אם (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); }} void CalculateResult () {if (action == 1) Number = Num1+Num2; אם (פעולה == 2) מספר = Num1-Num2; אם (פעולה == 3) מספר = מספר 1*מספר 2; אם (פעולה == 4) מספר = Num1/Num2; } void DisplayResult () {tft.fillRect (0, 0, 240, 80, CYAN); // תיבת תוצאות נקה tft.setCursor (10, 20); tft.setTextSize (4); tft.setTextColor (שחור); tft.println (מספר); // עדכן ערך חדש} voro 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);} void draw_BoxNButtons () {// צייר את תיבת התוצאות tft.fillRect (0, 0, 240, 80, CYAN); // צייר את העמודה הראשונה tft.fillRect (0, 260, 60, 60, אדום); 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 ++) {for (int i = 0; i <4; i ++) {tft.setCursor (22+(60*i), 100+(60* י)); tft.setTextSize (3); tft.setTextColor (לבן); tft.println (סמל [j] ); }}} לאחר העלאת הקוד תוכל לראות את המחשבון פועל בתצוגה שלך כשלי ועכשיו תוכל לבצע חישובי מתמטיקה בסיסיים בנושא. אז תהנה להכין מחשבון משלך עם Arduino UNO.

מוּמלָץ: