狀態機的全名是有限狀態機,在很多的應用場合會看到它的存在,例如紅綠燈、自動販賣機等。
上個月的元宵節讓筆者想到用紅外線遙控器來控制 mBot 上的三色 LED 燈,於是設計兩個版本的程式。
版本一(有限狀態機):
紅外線按鍵
|
D
|
A
|
B
|
C
|
E
|
狀態
|
控制車子行走
|
控制紅色燈
|
控制綠色燈
|
控制藍色燈
|
控制三色燈
|
狀態一:控制車子行走
紅外線按鍵
|
↑
|
↓
|
←
|
→
|
車子行進方向
|
前進
|
後退
|
左轉
|
右轉
|
狀態二:控制紅色燈
紅外線按鍵
|
↑
|
↓
|
紅色燈
|
亮度增加
|
亮度減少
|
狀態三:控制綠色燈
紅外線按鍵
|
↑
|
↓
|
綠色燈
|
亮度增加
|
亮度減少
|
狀態四:控制藍色燈
紅外線按鍵
|
↑
|
↓
|
藍色燈
|
亮度增加
|
亮度減少
|
狀態五:控制三色燈
紅外線按鍵
|
↑
|
↓
|
三色燈
|
亮度增加
|
亮度減少
|
版本二(只有一種狀態--等待紅外線的指令):
控制車子行走
紅外線按鍵
|
↑
|
↓
|
←
|
→
|
車子行進方向
|
前進
|
後退
|
左轉
|
右轉
|
控制紅色燈
紅外線按鍵
|
1
|
4
|
紅色燈
|
亮度增加
|
亮度減少
|
控制綠色燈
紅外線按鍵
|
2
|
5
|
綠色燈
|
亮度增加
|
亮度減少
|
控制藍色燈
紅外線按鍵
|
3
|
6
|
藍色燈
|
亮度增加
|
亮度減少
|
控制三色燈
紅外線按鍵
|
A
|
D
|
三色燈
|
亮度增加
|
亮度減少
|
給小朋友試了之後,他們都說第二個版本比較好用,那麼我們幹嘛用有限狀態機呢?!
沒有留言:
張貼留言