- חומרים נדרשים:
- היכרות עם מודול מסך ה- TFT LCD:
- כיול מסך ה- TFT LCD למסך מגע:
- חיבורי TFT LCD עם Arduino:
- תכנות את Arduino עבור TFT LCD:
- עובד:
ארדואינו תמיד עזר לבנות פרויקטים בקלות ולגרום להם להראות אטרקטיביים יותר. תכנות מסך LCD עם אפשרות למסך מגע אולי נשמע כמשימה מסובכת, אך ספריות ומגיני הארדואינו הקלו על ממש. בפרויקט זה נשתמש במסך 2.4 ”Arduino TFT LCD לבניית מחשבון מסך מגע משלנו Arduino שיכול לבצע את כל החישובים הבסיסיים כמו חיבור, חיסור, חלוקה וכפל.
חומרים נדרשים:
- ארדואינו אונו
- מגן תצוגת LCD בגודל 2.4 אינץ '
- סוללה 9V.
היכרות עם מודול מסך ה- TFT LCD:
לפני שנצלול לפרויקט חשוב לדעת, כיצד פועל מודול TFT LCD זה בגודל 2.4 אינץ ' ומה הם הסוגים הקיימים בו. תן לנו להסתכל על pinouts של 2.4 "זה TFT מסך LCD מסך.
כפי שאתה יכול לראות יש 28 פינים אשר יתאימו באופן מושלם לכל לוח מגה Arduino Uno / Arduino. סיווג קטן של סיכות אלה ניתן בטבלה שלהלן.
כפי שאתה יכול לראות, ניתן לסווג את הפינים לארבעה סיווגים עיקריים כגון סיכות פיקוד LCD, סיכות נתונים LCD, סיכות כרטיס SD וסיכות חשמל, איננו צריכים לדעת הרבה על העבודה המפורטת של פינים אלה מכיוון שהם יטופלו על ידי ספריית ארדואינו שלנו.
אתה יכול גם למצוא חריץ לכרטיס SD בתחתית המודול המוצג לעיל, ובאמצעותו ניתן לטעון כרטיס SD עם קבצי תמונה bmp, ותמונות אלו ניתן להציג במסך ה- TFT LCD שלנו באמצעות תוכנית Arduino.
דבר חשוב נוסף שיש לציין הוא ממשק ה- IC שלך. ישנם סוגים רבים של מודולי TFT הזמינים בשוק החל ממודול ה- TFT LCD המקורי של Adafruit ועד שיבוטים סיניים זולים. תוכנית שעובדת בצורה מושלמת עבור מגן Adafruit שלך עשויה שלא לעבוד זהה עבור לוחות הפריצה הסיניים. לכן, חשוב מאוד לדעת אילו סוגים של תצוגת LCD מחזיקים ביד. יש להשיג את הפרט מהספק. אם יש לך שיבוט זול כמו שלי, ככל הנראה הוא משתמש במנהל ההתקן IC ili9341. אתה יכול לעקוב אחר ממשק LCD זה TFT עם מדריך Arduino כדי לנסות כמה תוכניות דוגמה בסיסיות ולהרגיש נוח עם מסך LCD. בדוק גם פרויקטים אחרים של TFT LCD עם Arduino כאן:
- כיצד להשתמש ברצועת LED NeoPixel עם Arduino ו- TFT LCD
- נעילת קוד דיגיטלי מבוקר באמצעות טלפון חכם באמצעות Arduino
כיול מסך ה- TFT LCD למסך מגע:
אם אתם מתכננים להשתמש בפונקציית מסך המגע של מודול ה- TFT LCD שלכם, עליכם לכייל אותו בכדי שהוא יעבוד כראוי. מסך LCD ללא כיול עשוי לעבוד לא סביר, למשל אתה עלול לגעת במקום אחד ו- TFT עשוי להגיב למגע במקום אחר. תוצאות הכיול הללו לא יהיו דומות לכל הלוחות ולכן נשארת לבד לעשות זאת.
הדרך הטובה ביותר לכייל היא להשתמש בתוכנית לדוגמא כיול (מגיעה עם ספרייה) או להשתמש בצג הטורי כדי לזהות את השגיאה שלך. עם זאת עבור פרויקט זה מכיוון שגודל הכפתורים הוא גדול כיול לא אמור להוות בעיה גדולה ואני אסביר גם כיצד תוכלו לכייל את המסך שלכם בסעיף התכנות שלמטה.
חיבורי TFT LCD עם Arduino:
מסך ה- TFT LCD בגודל 2.4 אינץ 'הוא מגן Arduino מושלם. אתה יכול לדחוף ישירות את מסך ה- LCD על גבי ה- Arduino Uno והוא יתאים באופן מושלם עם הפינים ויחליק פנימה. עם זאת, כענייני בטיחות מכסים את מסוף התכנות של Arduino UNO שלך עם סרט בידוד קטן, למקרה שהמסוף יבוא במגע עם מסך ה- TFT LCD שלך. ה- LCD שהורכב על UNO יראה משהו כזה למטה.
תכנות את Arduino עבור TFT LCD:
אנו משתמשים בספריית SPFD5408 בכדי לגרום לקוד מחשבון ארדואינו לעבוד. זוהי ספרייה שונה של Adafruit ויכולה לעבוד בצורה חלקה עם מודול ה- TFT LCD שלנו. תוכל לבדוק את התוכנית המלאה בסוף מאמר זה.
הערה: חשוב מאוד שתתקין את הספרייה הזו ב- Arduino IDE או בתכנית זו כדי להרכיב ללא שום שגיאה.
כדי להתקין ספרייה זו, תוכלו פשוט ללחוץ על הקישור שלמעלה שיוביל אתכם לדף Github. שם לחץ על שיבוט או הורד ובחר "הורד ZIP". קובץ zip יורד.
כעת, פתח את Arduino IDE ובחר סקיצה -> כלול Librarey -> הוסף ספריית.ZIP. חלון דפדפן ייפתח נווט לקובץ ה- ZIP ולחץ על "אישור". עליך לשים לב ל"ספרייה שנוספה לספריות שלך "בפינה השמאלית התחתונה של ארדואינו, אם תצליח. מדריך מפורט לעשות את אותו הדבר ניתן בהדרכה לממשקים.
עכשיו אתה יכול להשתמש בקוד שלמטה ב- IDU של Arduino ולהעלות אותו ל- Arduino UNO שלך כדי שמחשבון מסך המגע יעבוד. בהמשך הסברתי את הקוד למקטעים קטנים.
אנו זקוקים לשלוש ספריות כדי שתוכנית זו תפעל; כל שלוש הספריות הללו ניתנו בקובץ ה- ZIP שהורדת מהקישור שצוין לעיל. פשוט כללתי אותם בקוד כפי שמוצג להלן.
#לִכלוֹל
כפי שנאמר קודם, עלינו לכייל את מסך ה- LCD בכדי לגרום לו לעבוד כצפוי, אך אל דאגה הערכים שניתנו כאן הם כמעט אוניברסליים. המשתנים TS_MINX, TS_MINY, TS_MAXX ו- TS_MAXY מחליטים על כיול המסך. אתה יכול לשחק סביבם אם אתה מרגיש שהכיול אינו מספק.
#define TS_MINX 125 #define TS_MINY 85 #define TS_MAXX 965 #define TS_MAXY 905
כידוע, מסך TFT LCD יכול להציג הרבה צבעים, יש להזין את כל הצבעים הללו בערך hex. כדי להפוך אותו לקריא יותר אנושי אנו מקצים ערכים אלה למשתנה כמוצג להלן.
#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 # הגדר ירוק 0xF81F // ורוד -> ירוק # הגדר כחול 0xFFE0 // צהוב-> כחול # הגדר שחור 0xFFFF // לבן-> שחור
אוקיי עכשיו, אנחנו יכולים להיכנס לחלק התכנותי. ישנם שלושה חלקים המעורבים בתוכנית זו. האחת היא יצירת ממשק משתמש של מחשבון עם כפתורים ותצוגה. לאחר מכן, איתור הכפתורים על סמך המשתמשים נוגעים ולבסוף מחשבים את התוצאות ומציגים אותם. בואו נעבור אותם בזה אחר זה.
1. יצירת ממשק משתמש של מחשבון:
זה המקום שבו אתה יכול להשתמש ביצירתיות רבה שלך כדי לעצב את ממשק המשתמש של המחשבון. פשוט הכנתי פריסה בסיסית של מחשבון עם 16 לחצנים ויחידת תצוגה אחת. עליכם לבנות את העיצוב בדיוק כמו שתציירו משהו על צבע MS. הספריות שנוספו יאפשרו לך לצייר קווים, מלבן, עיגולים, תווים, מיתרים ועוד הרבה מכל צבע מועדף. תוכל להבין את הפונקציות הזמינות ממאמר זה.
השתמשתי ביכולות ציור הקו והקופסא כדי לעצב ממשק משתמש שנראה דומה מאוד למחשבון שנות ה -90. לכל תיבה רוחב וגובה של 60 פיקסלים.
// צייר את תיבת התוצאות 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 ++) {for (int i = 0; i <4; i ++) {tft.setCursor (22 + (60 * i), 100 + (60 *) י)); tft.setTextSize (3); tft.setTextColor (WHITE); tft.println (סמל);
2. איתור הלחצנים:
משימה מאתגרת נוספת היא איתור מגע המשתמש. בכל פעם שהמשתמש נוגע באיזשהו מקום נוכל לאן איפה נמצא המיקום X ו- Y של הפיקסל שהוא נגע בו. ניתן להציג ערך זה בצג הטורי באמצעות println כמוצג להלן.
TSPoint p = waitTouch (); X = py; Y = px; Serial.print (X); Serial.print (','); Serial.println (Y); // + "" + Y);
מכיוון שתכננו את התיבה ברוחב ובגובה של 60 פיקסלים כל אחת ויש לנו ארבע שורות ולעמודות החל מ (0,0). ניתן לחזות את המיקום של כל תיבה כפי שמוצג בתמונה למטה.
אך במקרה המעשי, זו לא תהיה התוצאה. יהיה הבדל גדול בין הערך הצפוי לפועל, עקב בעיית הכיול.
לכן, כדי לחזות את המיקום המדויק של התיבה, עליכם ללחוץ על השורה ולבדוק את מיקומה המתאים בצג הסדרתי. זו אולי לא הדרך המקצועית ביותר לעשות זאת, אך עדיין זה עובד בצורה מושלמת. מדדתי את המיקום של כל השורות והשגתי את הערכים שלהלן.
עכשיו, מכיוון שאנחנו יודעים את המיקום של כל התיבות. כאשר משתמש נוגע בכל מקום נוכל לחזות לאן נגע על ידי השוואת ערכי (X, Y) שלו עם הערך של כל תיבה כפי שמוצג להלן.
אם (X <105 && X> 50) // איתור כפתורים בעמודה 2 {if (Y> 0 && Y <85) {Serial.println ("כפתור 0"); לחצן // נלחץ אם (מספר == 0) מספר = 0; אחר מספר = (מספר * 10) + 0; // לחצו פעמיים} אם (Y> 85 && Y <140) {Serial.println ("כפתור 2"); אם (מספר == 0) מספר = 2; אחר מספר = (מספר * 10) + 2; // לחצו פעמיים}
3. הצגת מספרים וחישוב התוצאה:
השלב האחרון הוא חישוב התוצאה והצגתם על גבי מסך TFT LCD. מחשבון ארדואינו זה יכול לבצע פעולה עם שני מספרים בלבד. שני המספרים הללו נקראים כמשתנים "Num1" ו- "Num2". המשתנה "מספר" נותן ולוקח ערך מ- Num1 ו- Num2 ונושא גם את התוצאה.
כאשר שימוש לוחץ על כפתור, ספרה אחת מתווספת למספר. כשלוחצים על כפתור נוסף הספרה הקודמת מוכפלת ב- 10 ומספרה נוסף באמצעותו. לדוגמא, אם נלחץ על 8 ואז נלחץ על 5 ואז נלחץ על 7. ואז תחילה המשתנה יחזיק 8 ואז (8 * 10) + 5 = 85 ואז (85 * 10) +7 = 857. אז סוף סוף המשתנה יהיה הערך 857 איתו.
אם (Y> 192 && Y <245) {Serial.println ("כפתור 8"); אם (מספר == 0) מספר = 8; אחר מספר = (מספר * 10) + 8; // לחצו שוב}
כאשר אנו מבצעים כל פעולה כמו תוספת, כאשר המשתמשים לוחצים על כפתור ההוספה הערך ממספר יועבר למספר 1 ואז המספר ייעשה אפס כך שהוא יתכונן לקחת את הקלט למספר השני.
כאשר לוחצים על שווה הערך במספר יישלח למספר 2 ואז ייעשה החישוב המתאים (במקרה זה תוספת) והתוצאה תישמר שוב במשתנה "מספר".
לבסוף ערך זה יוצג במסך ה- LCD.
עובד:
העבודה של מחשבון מסך מגע זה של Arduino היא פשוטה. אתה צריך להעלות את הקוד הנתון למטה על Arduino שלך ולהפעיל אותו. אתה מקבל את המחשבון שמוצג על מסך ה- LCD שלך.
כעת תוכל להזין כל מספר ולבצע את החישובים שלך. זה מוגבל לעת עתה לשני אופרנדים בלבד. אבל, אתה יכול לשנות את הקוד כדי שיהיה לו הרבה אפשרות.
עליך ללחוץ על "C" כדי לנקות את הערך על המסך בכל פעם לאחר ביצוע חישוב. מקווה שהבנתם את הפרויקט ונהניתם לבנות משהו דומה. אם יש לך ספקות אתה מוזמן לפרסם אותם בפורומים או בסעיף ההערות למטה. נתראה בפעם הבאה עם פרויקט מעניין נוסף עד אז מחשוב שמח !!
בדוק גם את סרטון ההפגנה למטה.