2017年3月1日 星期三

狀態機的應用:紅外線遙控 mBot 的三色燈

狀態機的全名是有限狀態機,在很多的應用場合會看到它的存在,例如紅綠燈、自動販賣機等。

上個月的元宵節讓筆者想到用紅外線遙控器來控制 mBot 上的三色 LED 燈,於是設計兩個版本的程式。

版本一(有限狀態機):

紅外線按鍵
D
A
B
C
E
狀態
控制車子行走
控制紅色燈
控制綠色燈
控制藍色燈
控制三色燈


狀態一:控制車子行走
紅外線按鍵
車子行進方向
前進
後退
左轉
右轉


狀態二:控制紅色燈
紅外線按鍵
紅色燈
亮度增加
亮度減少

狀態三:控制綠色燈
紅外線按鍵
綠色燈
亮度增加
亮度減少

狀態四:控制藍色燈
紅外線按鍵
藍色燈
亮度增加
亮度減少

狀態五:控制三色燈
紅外線按鍵
三色燈
亮度增加
亮度減少



版本二(只有一種狀態--等待紅外線的指令):
控制車子行走
紅外線按鍵
車子行進方向
前進
後退
左轉
右轉

控制紅色燈
紅外線按鍵
1
4
紅色燈
亮度增加
亮度減少

控制綠色燈
紅外線按鍵
2
5
綠色燈
亮度增加
亮度減少

控制藍色燈
紅外線按鍵
3
6
藍色燈
亮度增加
亮度減少

控制三色燈
紅外線按鍵
A
D
三色燈
亮度增加
亮度減少


給小朋友試了之後,他們都說第二個版本比較好用,那麼我們幹嘛用有限狀態機呢?!