6-1 模組說明
所謂的「函式」是指一組已經寫好的程式碼,對應不同的功能會有不同的函式,將所有相關的函式放在一個檔案中稱為函式庫。
本章所使用的「函式庫型模組」,主板無法從輸入/輸出腳位的電壓高低去獲取資料或要求模組動作,需要使用腳位來傳輸或接收一連串模組已定義好的脈波,跟模組做資料傳輸,我們只要使用廠商已經寫好的模組相關函式來讀取或寫入資料,例如:DHT11溫溼度模組、超音波模組、無源蜂鳴器模組等。
當我們使用積木程式操作這些模組時,積木內部已經包含相關的函式庫了,所以,不需要知道函式的程式內容也能輕易操作「函式庫型模組」。
6-2 可接至主板腳位
一般使用 D2 ~ D12
特殊模組如WS2812燈環模組需使用D6,LCD需使用A4、A5做I2C傳輸。
6-3 範例1:顯示溫溼度(DHT11溫溼度模組)
說明:
「DHT11溫溼度模組」能偵測環境中的溫度及濕度,電源開啟後至少需要等待1秒鐘,模組才會穩定,模組屬於單線式傳輸,只有用到一個傳輸腳,程式積木每次只能讀取一種數值,如果讀到的值為「nan」(Not a Number)表示讀取錯誤 ,讀取溫度或濕度後至少要延遲1秒才不會讀取錯誤。
將「DHT11溫溼度模組」的傳輸腳「Data」接到擴充板的「D2」數位腳位(如接線圖)。
接線圖:
程式碼:
執行結果:
6-4 範例2:LCD顯示溫溼度(LCD1602液晶模組+DHT11模組)
說明:
「LCD1602液晶模組」可顯示2列每列16個字母或符號(第一列為第「0」列;第一個字為第「0」格),模組背面已插上I2C傳輸介面,I2C使用到兩個傳輸腳位(A4和A5),在之前介紹的主板與模組連接時,一旦腳位被其他模組使用就無法再使用該腳位,這使得主板能連接的模組過少,而只要是I2C介面的模組,都能使用並聯的方式接在同一傳輸腳上,最多可達112個模組,每個I2C模組必需有不同的位址,已利與主板傳輸資料,「LCD1602液晶模組」的預設位址為「0x27」(0x代表27是十六進位)。
「LCD1602液晶模組」背面有個可用小十字螺絲起子調整的半可變電阻,可調整顯示文字的對比,如果看不到液晶螢幕上的文字,有可能是對比太低所導致。
※PS. I2C(讀音"I-squared-C")
繼續上一個範例,將「LCD1602液晶模組」再接上主板,要注意模組的「SDA」腳位接主板的「A4」;「SCL」腳位接主板的「A5」,擴充板已將「A4」和「A5」獨立分別為「SDA」和「SCL」(如接線圖)。
接線圖:
程式碼:
執行結果:影片
※特別注意:LCD背面是KSRobot的模組其IIC位址為0x20無法在bDesigner中使用,需做以下修改(廠商提供)
※更新訊息:2021/03/21 bDesigner新版本已增加支援位址為0x20的IIC LCD模組。
6-5 範例3:角色說出物件距離(超音波感測模組)
說明:
一般汽車的倒車雷達就是使用超音波偵測距離,「超音波感測模組」有兩個圓筒的探頭,一個負責發射超音波,當超音波撞到物體反彈回來後,另一個探頭負責接收(超音波原理),因此,超音波感測探頭和偵測物體距離不能小於2公分(依產品不同有所差異)。
「超音波感測模組」有4個接腳,除了2個電源腳位外,此範例將「Trig」為觸發超音波發射腳位接至主板「D2」,「Echo」為收到回訊的腳位接至主板「D3」(如接線圖)。
接線圖:
程式碼:
執行結果:
6-6 範例4:使用方向鍵轉動伺服馬達 (伺服馬達模組)
說明:
180度的伺服馬達內部除了有減速齒輪機構外,還有反饋裝置,可讓伺服馬達停在指定的角度(0 ~ 180度),遙控飛機上牽動各個舵面角度就是使用伺服馬達,因此,伺服馬達又被稱為「舵機」。
「伺服馬達模組」有引出兩條電源線(紅線為VCC,棕線為GND)和一個信號輸入線(橘線),其中信號輸入線是控制角度(0 ~ 180度),正中間為90度,將信號線接至「D2」(直接將伺服馬達排線插到「D2」那組排針上即可),為了節省電力,角度如果未改變盡量不要重複執行角度設定積木。
接線圖:
程式碼:
執行結果: 影片
依以下表格動作:
6-7 範例5:小星星歌曲(無源蜂鳴器模組)
說明:
蜂鳴器模組」依內部是否帶震盪源分為「有源蜂鳴器」和「無源蜂鳴器」,「有源蜂鳴器模組」輸入高電位(或低電位)時蜂鳴器發聲,聲音頻率是固定的,無源蜂鳴器會依輸入的方波頻率產生有音階和音高的聲音。
我們常見的音階,依序有「Do、Re、Mi、Fa、So、La、Si」再接著就是高八度的「Do、Re、Mi、Fa、So、La、Si」,要使用無源蜂鳴器積木指令需先指定「音高」,再指定「音階」。
將「無源蜂鳴器模組」的輸入腳「S」接到擴充板的「D2」數位腳位(如接線圖)。
PS. 如果蜂鳴器接上主板後會有雜音,請按擴充版上的「RESET」按鈕,重置Arduino主板。
接線圖:
程式碼:
執行結果:
無源蜂鳴器演奏出小星星歌曲。
6-8 範例6:環型燈依序點亮三種顏色LED(WS2812燈環模組)
說明:
「WS2812燈環模組」由12顆全彩LED所組成,每顆全彩LED內含紅(R)、綠(G)、藍(B)三個顏色的LED,每個顏色可分別控制256種(0 ~ 255)亮度,模組除了二個電源腳位,還有一個資料輸入腳「DI」(Data IN),積木已預設「DI」需接至主板的「D6」腳位(如下接線圖)。
因為要讓環型燈繞三圈,一圈12顆每次點亮一顆,所以需點亮LED共36次,使用「N」變數來計數,讓「N」從0計數到35,但點亮積木要指定第幾顆LED(編號0 ~ 11),因此,使用「N除以12的餘數」來達到指定的0 ~ 11需求。程式中設定LED的狀態後,必須使用「讓WS2812發光」積木,主板才會將資料送出給環型燈。
接線圖:
程式碼:
6-9 範例7:文字跑馬燈+霹靂燈(Max7219矩陣LED模組)
說明:
使用「Max7219矩陣LED模組」積木,需另外擴展積木,點選Scratch主畫面左下「添加積木」圖示,並選取「Max7219矩陣LED模組」圖,在積木分類中的「Arduino積木」分類下會出現「Max7219矩陣LED模組」積木。
「Max7219矩陣LED模組」由8列8行共64顆LED所組成,模組兩側各有5個腳位,兩側的腳位有4個是共同的腳位,中間腳位兩側不一樣,左側中間腳位為資料輸入「DIN」須接至主板,右側中間腳位為資料輸出「DOUT」可串接下一個模組,因此,可由左至右串接多個「Max7219矩陣LED模組」,目前積木支援串接最多8個模組。
※PS. 多個矩陣模組串接時,將第1顆矩陣模組右側的5個腳位,拉至第2顆矩陣模組的左側5個腳位,以此串接下去即可。
依以下表格接線:
接線圖:
程式碼: