NXT-G教學 - NXT-G的迴圈中斷
Loop Block 迴圈命令方塊 探奇曾經在舊文章中討論 NXT-G 軟體的 Loop Block 迴圈命令方塊,這個命令方塊有五種模式,分別是 Forever , Sensor , Time , Count ,以及 Logic 。 利用這五種模式, Loop Block 可以依據不同的條件跳出迴圈,也就是停止重複執行。 一般來說,程式依照順序執行,滿足條件後,跳出迴圈,執行後續的程式。 如果這個條件由其他多工程序控制,又該如何通知 Loop Block 迴圈命令方塊停止這項任務呢? 例如:一台攤販車,同時進行「前進轉彎行動」,以及「音樂撥放」兩項工作,當車子到達目的地後,車輛停止,音樂也應該停止撥放。 你要如何撰寫這個程式? EV3 軟體的新命令 – Loop Interrupt 在 EV3 軟體中有個新的命令方塊, Loop Interrupt ,執行這個命令時,可以中斷特定的迴圈 ( 迴圈可以設定特定的名稱 ) 。如此一來,就能在多工程式中控制另一個分支程式。 讓我們看看下圖: 上圖的 EV3 程式有兩個多工程式,一個執行「前進轉彎行動」,一個執行「音樂播放」。前進轉彎行動只重複執行四次,當迴圈執行四次後,有個中斷迴圈命令方塊,這個命令方塊會對名稱為「 music 」的迴圈發出中斷訊息,跳出迴圈,執行後續的命令,發出 Goodbye 的聲音。 實際執行程式時,我們會發現,不論 music 迴圈內的程式執行到何處 ( 任何一個命令 ) ,也不管各個命令是否執行完畢,都會立即中斷。例如當 music 迴圈執行到第二個 E5 的命令,發出 Mi 的聲音 0.3 秒,迴圈依然立即中斷。 這個迴圈中斷命令除了中斷其他迴圈,也能夠中斷自身所在的迴圈,是不是很方便呢? NXT-G 模擬迴圈中斷 在 NXT-G 中,雖然沒有迴圈中斷的命令,我們也可以想辦法解決這類問題。 沒錯,就是變數, Variable 。我在這裡將這個變數稱為旗標。像是童軍或海軍的旗語,也像是遠方通訊用的狼煙、烽火台。 請看下圖: 扮演旗標角色就是變數 Logic 1 。上方程式中...