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

Arduino HMI באמצעות מכונות מדינה: 9 שלבים
Arduino HMI באמצעות מכונות מדינה: 9 שלבים

וִידֵאוֹ: Arduino HMI באמצעות מכונות מדינה: 9 שלבים

וִידֵאוֹ: Arduino HMI באמצעות מכונות מדינה: 9 שלבים
וִידֵאוֹ: HMI Dashboard Arduino Project 2024, נוֹבֶמבֶּר
Anonim
Arduino HMI באמצעות מכונות מדינה
Arduino HMI באמצעות מכונות מדינה

במדריך זה, אראה לך כיצד להשתמש ב- YAKINDU Statechart Tools למימוש HMI פשוט וניתן להרחבה באמצעות מגן לוח מקשים 16x2 עבור Arduino.

מכונות Finite State (FSM) הן תבנית עיצוב עוצמתית לפיתוח ממשקי מכונה אנושיים מורכבים (HMI). מכיוון שהפונקציונליות של HMI יכולה להשתפר, כדאי להשתמש בדפוס עיצובי כמו מכונות מדינה.

הדוגמה המלאה מוטמעת ב- YAKINDU Statechart Tools. בנוסף, Eclipse C ++ IDE לתוסף Arduino שימש לעריכה והבזק ב- IDE.

תקציר קצר של כלי הסטטרט של YAKINDU

בעזרת כלי זה ניתן ליצור מכונות מצב גרפיות. הוא מאפשר למשתמש ליצור קוד C, C ++ או ג'אווה ממחשב המדינה. עם גישה זו, ניתן לשנות או להרחיב את המודל והמשתמש יכול פשוט ליצור מחדש את הקוד ואינו צריך לכתוב קוד מקור רגיל.

אספקה

חלקים:

  • ארדואינו (אונו, מגה)
  • כבל יו אס בי
  • מגן לוח מקשים 16x2

כלים:

  • כלי סטטרט של YAKINDU
  • Eclipse C ++ IDE עבור Arduino

שלב 1: החומרה

Image
Image

ניתן לחבר את מגן לוח המקשים LCD ל- Arduino. יש לו צג LCD בגודל 16x2 ובנוסף קיבל שישה כפתורים:

  • שמאלה
  • ימין
  • לְמַעלָה
  • מטה
  • בחר
  • (אִתחוּל)

ברור שניתן להשתמש בחמישה מהם. המפתחות מחוברים למפריד מתח ומתגלים באמצעות Pin A0 בהתאם למתח. השתמשתי בתוכנת הפסקת תוכנות כדי לאתר אותן בצורה נכונה.

שלב 2: הגדר כיצד זה אמור לפעול

בקרת HMI
בקרת HMI

היישום צריך להיות מסוגל לבצע שלושה דברים.

  1. כאן אני רוצה להשתמש בכפתורים כדי לנווט בין חמש מצבים: למעלה, אמצע, תחתון, שמאל וימין
  2. שעון עצר פשוט שניתן להפעיל, לעצור ולאפס. יש להגדיל אותו כל 100 אלפיות השנייה
  3. מונה החלק השלישי מכיל מונה פשוט למעלה/למטה. הוא אמור להיות מסוגל לספור מספרים חיוביים והוא אמור להיות ניתן לאפס

התפריט הפעיל (או המדינה) יוצג על מסך ה- 16x2 בשורה העליונה. היישום (מדינה, טיימר או מונה) יוצג בשורה התחתונה. לניווט, יש להשתמש בלחצן השמאלי והימני.

שלב 3: ממשק מכונת המדינה

הכפתורים ינתקו ויחוברו למכשיר המדינה. ניתן להשתמש בהם כמו באירועים במכונת המדינה. בנוסף, מוגדרות פעולות להצגת התפריט הנוכחי. ולפחות שני משתנים, אחד לטיימר ואחד למונה, מוגדרים.

מִמְשָׁק:

// כפתורים כאירועי קלט באירוע ימינה באירוע שמאלה באירוע למעלה באירוע למטה באירוע בחר // להציג ערכי HMI ספציפיים פעולה displayLCDString (ערך: מחרוזת, אורך: מספר שלם, מיקום: שלם) תצוגת פעולה LCDInteger (ערך: שלם, מיקום: מספר שלם) פעולה clearLCDRow (מיקום: שלם) פנימי: // משתנים לאחסון var cnt: מספר שלם var timeCnt: מספר = 0

לאחר יצירת קוד C ++, יש לנתק את אירועי ה- in ולחבר אותם לממשק. קטע קוד זה מראה כיצד לעשות זאת.

בתחילה יוגדרו הכפתורים:

#define NONE 0 #הגדר SELECT 1 #הגדר LEFT 2 #הגדר למטה 3 #הגדר למעלה 4 #הגדר RIGHT 5

לאחר מכן קיימת פונקציה המוגדרת לקריאת הכפתור. הערכים עשויים להשתנות, בהתאם ליצרן LCD Shield.

static int readButton () {int result = 0; result = analogRead (0); אם (תוצאה <50) {החזר ימינה; } if (תוצאה <150) {return UP; } if (תוצאה <300) {return DOWN; } if (תוצאה <550) {return LEFT; } if (תוצאה <850) {return SELECT; } החזר NONE; }

בסוף הכפתורים יופסקו. עשיתי תוצאות טובות עם 80 ms. לאחר שחרור כפתור, הוא יעלה את הסכום במקרה.

int oldState = NONE; static void raiseEvents () {int buttonPressed = readButton (); עיכוב (80); oldState = buttonPressed; if (oldState! = NONE && readButton () == NONE) {switch (oldState) {case SELECT: {stateMachine-> raise_select (); לשבור; } מקרה LEFT: {stateMachine-> raise_left (); לשבור; } מקרה למטה: {stateMachine-> raise_down (); לשבור; } מקרה UP: {stateMachine-> raise_up (); לשבור; } מקרה ימין: {stateMachine-> raise_right (); לשבור; } ברירת מחדל: {הפסקה; }}}}

שלב 4: בקרת HMI

כל מדינה משמשת לחלק אחד מהתפריט. ישנן מדינות משנה, שבהן האפליקציה - למשל שעון העצר - תבוצע.

בעזרת עיצוב זה ניתן להרחיב את הממשק בקלות. ניתן להוסיף תפריטים נוספים פשוט באמצעות אותו תבנית עיצוב. קריאת ערך של חיישן והצגתו בפריט התפריט הרביעי היא לא דבר גדול.

לעת עתה, רק שמאל וימין משמשים כבקרה. אך למעלה ולמטה ניתן להשתמש גם כתוסף ניווט בתפריט הראשי. רק כפתור הבחירה ישמש לכניסה לפריט תפריט ספציפי.

שלב 5: טיפול במדינות

לטפל במדינות
לטפל במדינות

תפריט מצבי הידית משמש רק כדוגמה נוספת לניווט. שימוש למעלה, למטה, ימינה או שמאלה מאפשר מעבר בין המצבים. המצב הנוכחי תמיד יודפס בשורה השנייה בתצוגת LCD.

שלב 6: שעון עצר

סטוֹפֶּר
סטוֹפֶּר

שעון העצר די פשוט. בתחילה, ערך הטיימר יתאפס. ניתן להפעיל את הטיימר באמצעות הכפתור השמאלי ולחלוף באמצעות שמאל וימין. שימוש למעלה או למטה מאפס את הטיימר. ניתן גם להחזיר את הטיימר לאפס באמצעות כפתור הבחירה פעמיים - לצאת מהתפריט ולהיכנס אליו שוב, מכיוון שהטיימר יוגדר לאפס על ידי כניסה תחילה לשעון העצור.

שלב 7: מונה

דֶלְפֵּק
דֶלְפֵּק

לפחות, יש מונה מיושם. כניסה למצב המונה מאפסת את המונה. ניתן להתחיל אותו באמצעות כל לחצן, למעט כפתור הבחירה. הוא מיושם כמונה פשוט למעלה/למטה, שערכו אינו יכול להיות קטן מ- 0.

שלב 8: סימולציה

שלב 9: קבל את הדוגמה

אתה יכול להוריד את ה- IDE כאן: YAKINDU Statechart Tools

לאחר הורדת ה- IDE, אתה מוצא את הדוגמה באמצעות קובץ -> N ew -> דוגמה

זה חופשי לשימוש עבור חובבים, אך אתה יכול גם להשתמש בניסיון של 30 יום.

מוּמלָץ: