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

מחשבון ארדואינו: 6 שלבים
מחשבון ארדואינו: 6 שלבים

וִידֵאוֹ: מחשבון ארדואינו: 6 שלבים

וִידֵאוֹ: מחשבון ארדואינו: 6 שלבים
וִידֵאוֹ: ארדואינו למתחילים 6: קלט מלחצן 2024, יולי
Anonim
מחשבון ארדואינו
מחשבון ארדואינו

תכנות הוא תמיד כיף וארדואינו היא פלטפורמה נפלאה אם אתה רק מתחיל עם תכנות Embedded. במדריך זה נבנה מחשבון משלנו עם Arduino. ניתן לשלוח את הערכים באמצעות לוח מקשים (לוח מקשים 4 × 4) ולצפות בתוצאה במסך LCD (מטריצה 16 × 2 נקודות). מחשבון זה יכול לבצע פעולות פשוטות כמו חיבור, חיסור, כפל וחלוקה עם מספרים שלמים. אבל ברגע שתבין את הרעיון תוכל ליישם אפילו פונקציות מדעיות עם פונקציות מובנות של Arduino. בסוף הפרויקט תדע כיצד להשתמש במסך LCD 16x2 ולוח מקשים עם Arduino וגם כמה קל לתכנת עבורם תוך שימוש בקלות. ספריות זמינות. תוכלו גם להבין כיצד לתכנת את הארדואינו לביצוע משימה מסוימת.

שלב 1: חובה

Arduino Uno (כל גרסה תעבוד) 16 × 2 תצוגת LCD 4 × 4 לוח מקשים 9V לוח לחם וחוטים מחברים

שלב 2: תרשים מעגלים

תרשים מעגלים
תרשים מעגלים

שלב 3: תוכנית מחשבון Arduino

התוכנית המלאה של Arduino לפרויקט זה ניתנת בסוף הפרויקט. הקוד מחולק לחתיכות בעלות משמעות קטנה ומוסבר להלן. כפי שנאמר קודם אנו הולכים לממשק LCD ולוח מקשים עם Arduino באמצעות ספריות. אז הוסף אותם לראשונה ל- IDE Arduino שלנו. ספריית ה- LCD כבר כלולה בארדואינו כברירת מחדל, כך שאנו לא צריכים לדאוג לגביה. לספריית לוח המקשים לחץ על הקישור להורדתו מ- Github. תקבל קובץ ZIP ולאחר מכן הוסף את lib זה ל- Arduino by Sketch -> Include Library -> הוסף קובץ. ZIP והצבע את המיקום לקובץ שהורד. לאחר סיום כולנו מוכנים לתכנות. למרות שהשתמשנו בספרייה לשימוש בלוח המקשים עלינו להזכיר מעט פרטים (המוצגים להלן) אודות לוח המקשים לארדואינו. המשתנה ROWS ו- COLS יגיד כמה שורות ועמודות יש בלוח המקשים שלנו ומפת המקשים מציגה את הסדר בו נמצאים המקשים במקלדת. לוח המקשים בו אני משתמש בפרויקט זה נראה כך למפת המפתח מייצג גם הוא את אותו הדבר. בהמשך הזכרנו לאילו סיכות לוח המקשים מחובר באמצעות המערך משתנה rowPins ו- colPins.const byte ROWS = 4; // ארבע שורות COLS בתים קונסטנט = 4; // שלוש עמודות // הגדר את מקשי המפתח [ROWS] [COLS] = {{'1', '2', '3', 'A'}, {'4', '5', '6', ' B '}, {' 7 ',' 8 ',' 9 ',' C '}, {'*',' 0 ','#',' D '}}; בתור rowPins [ROWS] = {0, 1, 2, 3}; // חבר את לוח המקשים ROW0, ROW1, ROW2 ו- ROW3 לסיכות Arduino אלה. בייט COLS [COLS] = {4, 5, 6, 7}; // חבר את לוח המקשים COL0, COL1 ו- COL2 לסיכות ארדואינו אלה. לאחר שהזכרנו איזה סוג לוח מקשים אנו משתמשים וכיצד הוא מחובר, נוכל ליצור את לוח המקשים באמצעות הפרטים הללו באמצעות השורה למטה לוח מקשים kpd = לוח מקשים (makeKeymap (מקשים), rowPins, colPins, ROWS, COLS); // צור את לוח המקשים באופן דומה עלינו גם לספר לאילו פינים של ה- Arduino ה- LCD מחובר. על פי תרשים המעגלים שלנו ההגדרות יהיו כמו להלן int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // סיכות שאליהן מחובר ה- LCD LiquidCrystal lcd (rs, en, d4, d5, d6, d7); // צור את ה- LCD בתוך פונקציית ההתקנה, אנו רק מציגים את שם הפרויקט ואז ממשיכים הלאה בזמן הלולאה שבה נמצא הפרויקט הראשי. ביסודו של דבר, עלינו לבדוק אם משהו מוקלד בלוח המקשים, אם הקלדה עלינו לזהות מה שהוקלד ולאחר מכן המירו אותו למשתנה כאשר לוחצים על "=" עלינו לחשב את התוצאה ולאחר מכן להציג אותה על גבי ה- LCD. זה בדיוק מה שנעשה בתוך פונקציית הלולאה כפי שמוצג למטה = kpd.getKey (); // אחסון ערך מפתח לחוץ בכרייף (מפתח! = NO_KEY) DetectButtons (); אם (result == true) CalculateResult (); DisplayResult (); מה שקורה בתוך כל פונקציה מוסבר באמצעות שורות ההערות, עברו על הקוד המלא להלן, התעסקו איתו כדי להבין כיצד הוא פועל בפועל. אם יש לך ספק בשורה מסוימת, אל תהסס להשתמש בקטע ההערות או בפורומים.

שלב 4:

שלב 5: עבודה של מחשבון Arduino

עבודה של מחשבון Arduino
עבודה של מחשבון Arduino

בצע את החיבורים לפי תרשים מעגלים והעלה את הקוד להלן. אם מופיעה שגיאה וודא שהוספת את הספרייה בהתאם להוראות שניתנו למעלה. תוכל גם לנסות את הסימולציה כדי לבדוק אם הבעיה היא בחומרה שלך. אם הכל נעשה כפי שהוא אמור להיות, אזי החומרה שלך תיראה כך למטה כאשר ה- LCD מציג מחשבון ארדואינו זה באמצעות לוח מקשים 4x4 בפעולה מכיוון שלוח המקשים המשמש כאן אינו כולל סימנים מתאימים, הנחתי שהאלפבית היא אופרטורית כמו רשום להלן תו בלוח המקשים הנחיה כתוספת "A" (+) "B" חיסור (-) "C" כפל (*) "D" חטיבה (/) "*" נקה (C) "#" שווה (=) אתה יכול השתמש בסמן כדי לכתוב על מה כל לחצן מייצג בפועל. עם זאת, תוכל להתחיל להשתמש במחשבון ישירות. הקלד את המספר ויופיע בשורה השנייה לחץ על האופרנד והקלד את המספר השני שלך ולחץ לבסוף על מקש "#" כדי לקבל את התוצאה שלך. אתה יכול גם לנסות לבנות מחשבון Arduino מבוסס מסך מגע זה.

שלב 6: קוד

/ * * מחשבון לוח המקשים Arduino */#כולל // קובץ כותרת ל- LCD מ- https://www.arduino.cc/en/Reference/LiquidCrystal#include // קובץ כותרת למקלדת מ- https://github.com/ כריס-A/Keypadconst Bytes Rows = 4; // ארבע שורות COLS בתים קונסטנט = 4; // שלוש עמודות // הגדר את מקשי המפתח [ROWS] [COLS] = {{'7', '8', '9', 'D'}, {'4', '5', '6', ' C '}, {' 1 ',' 2 ',' 3 ',' B '}, {'*',' 0 ','#',' A '}}; בתור rowPins [ROWS] = {0, 1, 2, 3}; // חבר את לוח המקשים ROW0, ROW1, ROW2 ו- ROW3 לסיכות Arduino אלה. בייט COLS [COLS] = {4, 5, 6, 7}; // חבר את לוח המקשים COL0, COL1 ו- COL2 לסיכות Arduino אלה. לוח מקשים kpd = לוח מקשים (makeKeymap (מפתחות), rowPins, colPins, ROWS, COLS); // צור את לוח המקשים int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // סיכות שאליהן מחובר ה- LCD LiquidCrystal lcd (rs, en, d4, d5, d6, d7); מספר 1 ארוך, מספר 2, מספר; מפתח צ'ארל, אקשן; תוצאה בוליאנית = שקר; הגדרת void () {lcd.begin (16, 2); // אנו משתמשים בתצוגת lcd.print של 16*2 LCD ("מחשבון DIY"); // הצג הודעת מבוא lcd.setCursor (0, 1); // הגדר את הסמן לעמודה 0, שורה 1 lcd.print ("-CircuitDigest"); // הצג עיכוב הודעות מבוא (2000); // המתן לתצוגה שתציג מידע lcd.clear (); // ואז נקה אותו} לולאת void () {key = kpd.getKey (); // אחסון ערך מפתח לחוץ בכרייף (מפתח! = NO_KEY) DetectButtons (); אם (result == true) CalculateResult (); DisplayResult (); } void DetectButtons () {lcd.clear (); // לאחר מכן נקה אותו אם (key == '*') // אם נלחץ על לחצן ביטול {Serial.println ("לחצן ביטול"); מספר = מספר 1 = מספר 2 = 0; result = false;} if (key == '1') // אם לחצו על לחצן 1 {Serial.println ("לחצן 1"); אם (מספר == 0) מספר = 1; אחרת מספר = (מספר*10) + 1; // לחצו פעמיים} אם (key == '4') // אם לחצו על לחצן 4 {Serial.println ("לחצן 4"); אם (מספר == 0) מספר = 4; אחרת מספר = (מספר*10) + 4; // לחצו פעמיים} אם (key == '7') // אם לחצו על לחצן 7 {Serial.println ("לחצן 7"); אם (מספר == 0) מספר = 7; אחרת מספר = (מספר*10) + 7; // לחצו פעמיים} if (key == '0') {Serial.println ("לחצן 0"); // כפתור 0 נלחץ אם (מספר == 0) מספר = 0; אחרת מספר = (מספר*10) + 0; // לחצו פעמיים} אם (key == '2') // לחצו על לחצן 2 {Serial.println ("לחצן 2"); אם (מספר == 0) מספר = 2; אחרת מספר = (מספר*10) + 2; // לחצו פעמיים} if (key == '5') {Serial.println ("לחצן 5"); אם (מספר == 0) מספר = 5; אחרת מספר = (מספר*10) + 5; // לחצו פעמיים} if (key == '8') {Serial.println ("כפתור 8"); אם (מספר == 0) מספר = 8; אחרת מספר = (מספר*10) + 8; // לחצו פעמיים} if (key == '#') {Serial.println ("לחצן שווה"); Num2 = מספר; תוצאה = אמת; } if (key == '3') {Serial.println ("לחצן 3"); אם (מספר == 0) מספר = 3; אחרת מספר = (מספר*10) + 3; // לחצו פעמיים} if (key == '6') {Serial.println ("לחצן 6"); אם (מספר == 0) מספר = 6; אחרת מספר = (מספר*10) + 6; // לחצו פעמיים} if (key == '9') {Serial.println ("כפתור 9"); אם (מספר == 0) מספר = 9; אחרת מספר = (מספר*10) + 9; // לחצו פעמיים} if (key == 'A' || key == 'B' || key == 'C' || key == 'D') // איתור לחצנים בעמודה 4 {Num1 = Number; מספר = 0; if (key == 'A') {Serial.println ("תוספת"); action = '+';} if (key == 'B') {Serial.println ("חיסור"); action = '-'; } if (key == 'C') {Serial.println ("כפל"); action = '*';} if (key == 'D') {Serial.println ("סטייה"); action = '/';} עיכוב (100); }} void CalculateResult () {if (action == '+') Number = Num1+Num2; if (action == '-') Number = Num1-Num2; אם (פעולה == '*') מספר = מספר 1*מספר 2; if (action == '/') Number = Num1/Num2; } void DisplayResult () {lcd.setCursor (0, 0); // הגדר את הסמן לעמודה 0, שורה 1 lcd.print (Num1); lcd.print (פעולה); lcd.print (Num2); if (result == true) {lcd.print ("="); lcd.print (Number);} // הצג את התוצאה lcd.setCursor (0, 1); // הגדר את הסמן לעמודה 0, שורה 1 lcd.print (מספר); // הצג את התוצאה}

מוּמלָץ: