2. Brain GO 穿越十字線


這次要練習的是如何讓自走車穿越十字線,並停終點停止。十字線的寬度是18mm黑色電火布,而終點線則是兩個電火布寬度。

在循跡程式中,我們已經處理好直行、偏左修正與偏右修正。



緊接著我們要處理的便是待處理區塊的程式邏輯,當左、右兩邊的紅外線感應器同時壓在黑線上。

讓我們繼續往下看,先思考自走車如何穿越單條寬度的黑線,當循跡車走道黑色橫線時,車子左、右兩邊的紅外線感應器都會在黑線上方,此時兩邊都會傳回值 1。


因為要穿越,所以我將馬達設定為往前直行約0.04秒後停止。這0.04秒的時間是在測試時,自走車剛好可越過黑線的時間。


沒錯,程式是可以穿越第一條黑色線了,想一想當自走車走道終點時會發生甚麼事呢?自走車穿越一個寬度的黑線距離後停下來,此時,兩側的感應器一樣是在黑線上,所以自走車將會繼續往前穿越一個寬度的距離。也就是,終點並不會停止。

那該怎麼辦呢?


增加一個變數 go ,並在一開始將變數 go 設定為 0,讓我們來看看程式的邏輯。

中間十字線:
我們先來看看自走車走道一個寬度的黑線時的運作方式,因兩側感測器都在黑線上,所以傳為 1,因為初始 go = 1,自走車將會穿越黑線並將變數 go 設定為1 後便停止。至時感測器應已越過黑線,所以程式會再次進入直行狀態,並將 go 再次設定為 0 。

終點線:
當自走車穿越第一條黑線寬度時,go 變數會變為 1 ,並停止前進,這時左右紅外線將落在第二條橫黑線上,所以 兩邊將同時傳回 1。因為變數 go 並不等於 0,所以程式不會進入條件區塊內執行直走指令,自走車將依然停止。