實驗目的
練習透過 Serial 通訊控制 5 顆 LED。利用 Bitlash 以下指令的方式來控制 LED 的開關。
這篇是「透過 Serial 通訊控制 LED」的重新改寫。我假設你已經看過「Bitlash 新手入門」這幾篇,對 Bitlash 有相當程度的了解。
軟體需求
你必須先把 Bitlash 函式庫安裝起來,安裝辦法請參考「Bitlash 新手入門」一文。
材料
- 麵包板 x 1
- Arduino 主板 x 1
- LED x 5
- 220 ohm 電阻 x 5
- 單心線 x N
接線
- 將 5 顆 LED 分別接到 pin 2 到 pin 6 這 5 支接腳 。LED 的接法為: 長腳(陽極)接到 pin 腳,短腳(陰極)串接一顆 220 ohm 電阻接到 GND
Arduino 程式
啟動 Arduino IDE 並打開 bitlashdemo 範例程式,bitlashdemo 的位置在 File > Examples > bitlash > bitlashdemo (須安裝 bitlash 函式庫並重啟 Arduino IDE 才看得到)。
你也可以用底下的這個 Bitlashdemo.pde,我在程式裏面加了中文註解。另外,由於這個實驗接了 5 顆 LED,所以我順便在 setup() 函式裏加了一個迴圈,把 pin 2 到 pin 6 這 5 支接腳初始化通通設成 output:
請編譯這支程式,然後 Upload 上傳到 Arduino 板子上。
開始使用
好了,Arduino 的程式已經完成了,接著就可以透過 Serial Port 以下指令的方式控制 LED 的開關了。
啟動你慣用的終端機程式並打開 Serial port,通訊速率請設定為 57600 bps,當你打開 Serial port 的時候,你首先會看到是 Bitlash 的看板訊息(Bitlash Banner):
▲ 我用的終端機程式是 Tera Term。如使用 Serial Monitor,換行符號記得要選 "Carriage Return"。
實驗的目的是透過 Serial 通訊控制 LED 的開關。要打開 LED,只要直接設定 d2 到 d6 腳位變數就可以了,作用就跟 Arduino 的函式 digitalWrite(pin, 1) 一樣:
> d2=1
> d3=1
▲ 打開 d2 和 d3 上的 LED。> 為指令提示符號(Command Prompt)
把腳位變數設成 0 會關掉 LED:
> d2=0
▲ 關掉 d2 上的 LED
要把 5 顆 LED 全部關掉,你只要像底下這樣寫個巨集(Bitlash function):
> function turnoffall {i=2;while i<=6 {dw(i,0); i++;}}
saved
▲ 關掉 d2 到 d6 的 LED
然後呼叫 turnoffall 就可以把 5 顆 LED 都關掉:
> turnoffall
▲ 呼叫 turnoffall 巨集關掉 d2 到 d6 上的 5 顆 LED
就這樣,你已經完成了實驗。
在「透過 Serial 通訊控制 LED」的練習裏,我們是自己用 Serial Library 來讀取 Serial port 的資料,然後再根據 Serial 輸入進來的字元 (字元 1 到 5)來決定不同顆 LED 的開關,並呼叫 digitalWrite() 函式實際開關 LED。一樣是透過 Serial 通訊控制 LED,但是跟自行用 Serial Library 比起來,使用 Bitlash 簡單多了。
在 startup 巨集初始化腳位
在這個實驗裏,我們把 pin 2 到 pin6 腳位初始化的 code 寫在 Bitlashdemo.pde 裏,其實你也可以寫在 startup 巨集裏,就像這樣:
> function startup {i = 2; while i<=6 {pinmode(i,1); i++;}}
save
▲ startup 巨集會在開機的時候自動執行
寫個巨集開 LED
就像函式一樣,Bitlash 的巨集也可以傳遞參數。像底下這樣,我們可以寫個可打開指定 LED 的 turnon 巨集:
> function turnon {if arg(0)==1 && arg(1)>=2 && arg(1)<=6 dw(arg(1),1);}
saved
▲ arg(0) 是參數數量(count of arguments),arg(1..n) 是參數
然後用 turnon 巨集來打開指定的 LED,例如:
> turnon(2)
> turnon(3)
▲ 打開 d2 和 d3 上的 LED
寫成巨集讓動作變得有意義多了。
動動腦
請用 Bitlash 重新寫一遍「Arduino 筆記 – Lab5 LED Bar Graph」 這個實驗的程式。
0 意見:
張貼留言