micro:bit 自走車登月計畫 – 單元(七) 隔空傳訊-紅外線遙控器

這個單元將教大家如何使用紅外線遙控器操控MoonCar,並使用MoonCar自己的紅外線發射器與其他MoonCar溝通。

MoonCar有一對紅外線發射與接收,不是底下的循線感測器喔~雖然都是紅外線但用途可是不同的呢!底下的紅外線發射是常駐的~開著不關的,而本篇的紅外線發射是根據傳送訊號的不同,做出類似摩斯密碼般,開開關關控制紅外光發射來傳送資訊,紅外線接收的部分也是如此。

要使用MoonCar的紅外線發射與接收時,需要先知道紅外線傳輸有分幾種通訊協定,你可以把它想成是各種不同的規定,每個通訊協定有自己的傳輸格式,要符合才能接收到正確的資訊。通訊協定有SONY、NEC、RC5、RC6…等,在MakeCode裡我們使用的MoonCar程式庫,支援的是NEC格式。只要是符合NEC格式的紅外線遙控器,都可以用來操控MoonCar。

接收遙控器訊息:

事不宜遲~就讓我們立即來試試看吧!首先從如何接收紅外線訊號開始,請您準備一個符合NEC通訊的紅外線遙控器,像是一般Arduino使用的那種即可(紅外線遙控器採購連結)

打開MakeCode並點選登月小車程式庫,我們需要用到的讀取程式如下圖所示:

使用紅外線遙控器遙控小車之前,我們需要先進行初始化,目的是告訴登月小車接下來要準備好接收遙控器傳來的訊息囉~類似這樣的感覺。因為準備工作只要做一次即可,所以程式要放在"當啟動時",如下圖所示:

因為在接收訊號時需要一字不漏才能得到完整且正確的訊息,所以在使用上不能與其他程式一起在"重複無限次"內使用,以下將針對接收方式做個說明,如下圖所示:

因為程式是從最上面一條一條執行到最下面,若是在偵測超音波時,突然有訊息傳送過來就會讓登月小車接收不到。所以我們必須將接收的部分獨立開來。所以在程式上要使用"當接收到紅外線遙控器訊息(NEC)時"這個程式,作為獨立的程式區塊,使用方法如下圖所示:

剛剛只是打個比方,讓大家知道使用的方式,在正確的遙控之前,我們需要知道當您按下遙控器上的按鍵時,登月小車接收到的訊號是什麼。如下圖寫一個接收訊號並顯示的程式:

這個程式會透過micro:bit 5*5的LED,顯示從您的遙控器接收到的訊息。

接收到的訊息可以多按幾次確認是否是同一個,有時總共會跑兩組數字,只要記第一組即可。小編選擇了五個按鈕,分別代表前進、後退、左轉、右轉與停止,對應的數字如下:

以下的程式會以上表對應的訊息撰寫,大家要依照自己的登月小車收到的訊號為主喔。遙控的程式如下:

有時小車會接收到亂碼,特別是遙控器要沒電時,所以如果發現遙控登月小車有異常發生,除了檢查訊息是否打錯,也能換顆電池再試試看喔。

發送訊息:

發送訊息比起接收訊息簡單很多,不像接收訊息需要一直處於接收狀態,想傳送就傳送,可與其他程式一起混用,所以不需要獨立程式區塊與初始化。傳送訊息以十進制表示,範圍是0~255,程式寫法如下:

是不是超簡單!適用的場合例如有~

A. 幾台小車一起大隊接力,利用超音波偵測是否接近要接棒的小車,再透過傳訊息的方式告訴它可以開跑囉~

B. 執行營救任務,當某台小車將物品搬離時,可以透過發送訊息告訴其他小車道路已淨空~

總結:

看完這次的單元,您已經學會如何用紅外線遙控器遙控登月小車,也知道如何透過紅外線發射訊號,來對其他小車發送訊息。

下個單元將教大家如何使用登月小車的顏色感測器來識別顏色,並搭配RGB LED來顯示辨識到的色彩~下個單元見!