首先,請原諒,如果這不是正確的網站發佈這個問題,但我不知道在哪裏問這個問題。FSM在C/Arduino房間櫃檯的人和圖
我需要實現一個FSM來代表一個房間裏的人的櫃檯,有兩種可能性,人們可以進入房間或離開房間。一開始就保證空房間,一次只能有一個人通過門。
要知道一個人是否進入或離開,有兩個傳感器A和B,這取決於激活的順序,表示一個人是否正在進入或離開。 A表示一個人進入房間,B表示一個人退出房間。現在
,我要實現這個上的Arduino,使FSM圖,但我有搞清楚圖表,即使我想我已經得到了C程序權的問題(沒有測試過)
所以,基本上這裏是我的C/Arduino的程序
int currentPeople = 0;
PeopleState currentState = None;
enum PeopleState {
A,
B,
None
};
的一部分,現在這兩個函數被調用爲各自的傳感器
//Gets called every time sensor A is activated
void countPeopleA(){
if (currentState == None){
currentState = A;
} else if (currentState == B){
if(currentPeople > 0){
currentPeople--;
}
currentState = None;
}
}
//Gets called every time sensor B is activated
void countPeopleB(){
if (currentState == None){
currentState = B;
} else if (currentState == A){
currentPeople++;
currentState = None;
}
}
我的擔心是次ese:
- 我定義的狀態是否正確?我的意思是,每當傳感器被激活時定義一個狀態是正確的,或者應該是狀態是進入還是離開?
- 我如何繪製狀態圖?我只是在瞭解FSM,所以我在解決它時遇到了問題,比如如何保證如果房間是空的,一個人不會離開?我可以用代碼檢查這種情況,但我不知道如何表示它。
什麼是[FSM](https://en.wikipedia.org/wiki/Flying_Spaghetti_Monster)? –
我不認爲在C中實現一個飛行意大利麪怪物會是明智的 –