תוכן עניינים:
- אספקה
- שלב 1: החומרה
- שלב 2: הגדר כיצד זה אמור לפעול
- שלב 3: ממשק מכונת המדינה
- שלב 4: בקרת HMI
- שלב 5: טיפול במדינות
- שלב 6: שעון עצר
- שלב 7: מונה
- שלב 8: סימולציה
- שלב 9: קבל את הדוגמה
וִידֵאוֹ: Arduino HMI באמצעות מכונות מדינה: 9 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:14
במדריך זה, אראה לך כיצד להשתמש ב- 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: החומרה
ניתן לחבר את מגן לוח המקשים LCD ל- Arduino. יש לו צג LCD בגודל 16x2 ובנוסף קיבל שישה כפתורים:
- שמאלה
- ימין
- לְמַעלָה
- מטה
- בחר
- (אִתחוּל)
ברור שניתן להשתמש בחמישה מהם. המפתחות מחוברים למפריד מתח ומתגלים באמצעות Pin A0 בהתאם למתח. השתמשתי בתוכנת הפסקת תוכנות כדי לאתר אותן בצורה נכונה.
שלב 2: הגדר כיצד זה אמור לפעול
היישום צריך להיות מסוגל לבצע שלושה דברים.
- כאן אני רוצה להשתמש בכפתורים כדי לנווט בין חמש מצבים: למעלה, אמצע, תחתון, שמאל וימין
- שעון עצר פשוט שניתן להפעיל, לעצור ולאפס. יש להגדיל אותו כל 100 אלפיות השנייה
- מונה החלק השלישי מכיל מונה פשוט למעלה/למטה. הוא אמור להיות מסוגל לספור מספרים חיוביים והוא אמור להיות ניתן לאפס
התפריט הפעיל (או המדינה) יוצג על מסך ה- 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 יום.
מוּמלָץ:
רובוט ארדואינו אוטו עם מכונת מדינה: 4 שלבים
ארדואינו אוטו רובוט עם מכונת מדינה: סקירת הפרויקט בפרויקט זה, אני רוצה להראות לך דרך לתכנת את רובוט אוטו, שהוא רובוט DIY מבוסס ארדואינו. באמצעות YAKINDU Statechart Tools (בחינם ללא מסחרי) אנו יכולים בקלות להשתמש במכונות מדינה כדי לדגמן באופן גרפי את ההתנהגות
מכונת מדינה על ארדואינו - רמזור להולכי רגל: 6 שלבים (עם תמונות)
מכונת מדינות בארדואינו - רמזור להולכי רגל: היי, אני הולך להראות לכם כיצד לתכנת רמזור להולכי רגל עבור ארדואינו ב- C ++ באמצעות מכונת מדינה סופית באמצעות YAKINDU Statechart Tools. זה יוכיח את העוצמה של מכונות מדינה ויכול לשמש כתוכנית להמשך
מכונת מדינה ורב משימות בארדואינו עם מרחיבי SPI: 3 שלבים
מכונת מדינה ורב -משימות בארדואינו עם מרחיבי SPI: בשבוע שעבר ביקשתי ליצור מערכת לניווט זיקוקים עם ארדואינו. זה היה צריך כ -64 יציאות כדי לשלוט בשריפות. אחת הדרכים לעשות זאת היא להשתמש במרחיבי IC. אז 2 פתרונות זמינים:- מרחיב I2C אך הוא זקוק למהפך כאשר אתה עושה
תחזוקה קדומה של מכונות מסתובבות באמצעות רטט ודבר דברים: 8 שלבים
תחזוקה קדומה של מכונות מסתובבות באמצעות רטט ו- Thingspeak: מכונות מסתובבות כמו טורבינות רוח, טורבינות הידרו, מנועי אינדוקציה וכו 'מתמודדות עם בלאי ודמעות מסוג אחר. רוב התקלות והבלאי הנגרמים כתוצאה מהרעידות החריגות במכשיר. מכונות אלה מופעלות לעתים קרובות תחת כבד רב
Arduino PLC 32 קלט/פלט+מכונת מדינה+SCADA או HMI: 8 שלבים
Arduino PLC 32 I/O+State Machine+SCADA או HMI: דרכים רבות לתכנת, לשלוט ולפקח על מערכת תעשייתית עם arduino