[重要]Output Blocks「並行順序」

當個1個以上的output同時運作,我們稱之為「並行」。

經過一連串的學習後,我們可以得知有3個output blocks可以做到同時執行的效果。他們分別是聲音的「Play sound」、燈光的「Set led」和摩打的「Set motor speed」。

然而,這裡產生了兩大問題:

  1. 我們之前只玩過2個output,那麼3個或更多的output可以同時執行嗎?
  2. 我們一直強調這些「並行」blocks都有順序(意思即是如果上下放錯將會無法並行),那三者之間應如何排列?

問題一、3個block可以同時運行嗎?

例子:

我們不妨隨便把這3個blocks亂放再播放試試看

如無意外你應該會發現他們無法同時運行。例如上面的例子,你會發現它是先播聲音然後轉摩打再轉燈,是一個跟著一個執行。

這裡要注意的你,你很多可能會誤會了摩打和燈在上圖的例子是同時運行的,但只要你播放多幾次細心留意一下,你會發現他們並不是同步的。

但是,這並不代表3個output是不可行的,只要我們跟從並行次序。

說了這麼久,並行次序到底是怎樣的?

與其直接寫出答案,我建議大家自己一個一個測試,調亂次序直到成功,因為這樣才可以深刻地記住。

把Set led和Set motor speed掉轉,得出的結果是:先播放聲音,然後摩打和燈是同時亮著的。由此得知燈和摩打的擺放沒有問題。

到了這裡,大家可以自己試一試聲音應該放在哪裡,再看下面的答案!

經過多次試驗後,我們得出這個結論。

燈光>摩打>聲音

燈光永遠是最優先的,即是例如你想做「車子行走同時開燈,便應該把燈光放在上面」。

其次是摩打,所以無論你想做任何聲音同步的動作,也請把聲音放在下面。

為什麼我有時看似跟從了順序,也做不到並行 ?

記得它嗎?我們在先前已經做過一次了。

你有沒有發現,當我們使用blink時,黃色(燈光)的block是放在摩打(藍色)下面的。

但是,當我們使用Set led to時,Set Speed block就在下方,為什麼?

這裡有很重要的一點,上面的rules只適用在聲音的「Play sound」、燈光的「Set led」和摩打的「Set motor speed」這三個block之間。

如果我們使用其他的block做同步,例如之前做的blink,就不適用這個規則。當配合其他block時,Set Led、Set Speed和play Sound block永遠在上面。

我的編程完全沒有錯,為什麼還是不能並行?

  1. 同一個block是不能並行的,除非你插上2個(如兩個摩打、兩個燈),這一點很簡單但也經常出現錯誤(例如有些人想同一時間播放2種聲音,這是不可能的,你只有一個主塊)。
  2. 同時,也有人會忘記設定led1、led2。就算你插上了2個rgb燈,你也別忘了設定「Set led 1」和「Set led 2」才可行。
  3. 最後,「Shine」和「Set led」在同一個rgb燈上也不可能並行,燈不可能同時長亮和閃動吧?這些看似是常識但也是常犯錯誤。