定義兩狀態:`OPEN`(斷開)、`CLOSED`(閉合)。根據電壓與當前狀態轉移:
typedef enum { OPEN, CLOSED } SwitchState;
SwitchState state = CLOSED; // 初始閉合
void updateSwitch(float voltage) {
switch (state) {
case CLOSED:
if (voltage > 5.0f) state = OPEN;
break;
case OPEN:
if (voltage < 3.0f) state = CLOSED;
break;
}
// 輸出控制信號
setRelay(state == CLOSED);
}
單純 `if (v>5) open; else if (v<3) close;` 無法表達「保持當前狀態直到閾值反轉」的**滯後特性**,會在 3V-5V 區間反覆震盪。狀態機天然體現歷史相關性。
若需去抖動,可增加計數器:連續 N 次採樣滿足閾值才轉移。