上一章的最後,雖然小車經過編程、在加上Edge sensor後感應到快要出界時可以馬上令馬達停止,但只是停止的話車子還是會有慣性向前衝、以致最後還是會出界。
如果把出界的指令改成倒後,一旦回到場中馬上又會變成正常的向前動作,變成兩個動作不斷循環
為了解決上面的問題﹐在車子倒後我們應該加入轉向的動作,由於前方的sensor有兩個,我們甚至可以把倒後的轉向分為向左及向右
以左方出界的情況為例,其中一個方法是讓車子先倒後、再向右後方轉向。由於是兩個動作,所以我們要加入delay( );指令,不然第一個動作馬上就會被跳過然後執行下一個動作了。
注意的是﹐delay時間如果設定得太短、車子可能未回到安全區馬上又會向前衝;delay時間設得太長則車子可能跑到場地的另一邊邊界出界,所以每個人的delay時間、甚至車速都需要不斷用車子調試。
由於前方的sensor有兩個,故我們可以分成4個Case來設定動作。先和組員商量各自的Case小車應該做出什麼動作,然後填在工作紙上
例:如果認為Es_L和Es_R皆為0時應該停車、則填上Stop,然後寫上對應的program motor_drive(0,0);
完成上方的內容後,試把其內容轉換成完整的program、並填到工作紙下方的內容。
上方的指令放回到loop的部分就完成了Edge sensor防出界的部份了