מכונת מצבים — מה שיש מול מה שחסר

הקושחה היא bool autoMode ועוד «האם ל־AccelStepper נשאר מרחק». setup() קורא setCurrentPosition(0) בלי מפסק קצה. אין UNHOMED, אין FAULT, אין סטול, אין WDT ייעודי. אותו אירוע נשלח לשתי המכונות — זו הנקודה.

המכונה ה«בטוחה» לא נכתבה ל־.ino ולא נבדקה מול חומרה. אי אפשר לעשות הומינג בתוכנה בלי מפסק. בלי תולעת / בלם, POWER_LOSS הוא נפילה — ראו מומנט.

מה שה־.ino עושה

BOOT ואז RUN בלבד BOOT RUN autoMode · distanceToGo

BOOT

0°believed (הקושחה)
0°מכני (הזרוע)
0°יעד
—דגלים

—

מוצע — לא בקושחה

BOOT, UNHOMED, HOMING, IDLE, MOVING, FAULT, DEAD BOOT UNHOMED HOMING IDLE_AUTO IDLE_MANUAL MOVING FAULT_SENSOR FAULT_HOME FAULT_STALL FAULT_LIMIT DEAD

BOOT

0°believed
0°מכני
0°יעד
—דגלים

—

אותו אירוע — שתי תשובות

אתחול

דגימה ופקודות

תנועה והומינג

כשלים

0 אירועים ביומן

הקוד: src/lib/fsm.js + src/lib/fsm-table.js. כל תא בטבלה הוא step() אמיתי על דייר קנוני של המצב. 11 × 16 = 176 תאים במכונה המוצעת, 2 × 16 בקושחה — כולם נעולים ב־npm test.

טבלת מעברים מלאה — מה ש־walk() מחזיר

תא כחול משנה מצב. אדום נכנס ל־FAULT/DEAD. מסגרת צהובה היא reject. לחיצה על תא בשורה של המצב הנוכחי שולחת את האירוע לשתי המכונות.

—