什麼是 bitlash?
Bitlash 是一個 Open Source 的 Arduino Shell,作者是 Bill Roy。它是一個指令直譯器(Command Line Interpreter),可以讓你透過 serial port 下指令跟 Arduino 互動,它同時也是一個簡易的劇本語言(Scripting Language),可以讓你用類似 C 的語法寫程式(或稱 Script -- 劇本)。
如果你有聽過 DOS Shell 或 UNIX 的 bash, csh,相信你一定聽得懂,因為 Bitlash 其實就是類似 DOS, bash, csh 的東西,只不過它是在 Arduino 上面跑的,而且它很小,只用了 14K 左右的 Flash 空間。
特色
- 交談式的命令環境:我們可以用 "Serial Monitor" 或超級終端機, Tera Term 這類終端機程式,透過 serial port 輸入指令,Bitlash 會負責解譯並且執行指令,假如輸入的指令有回傳值的話,Bitlash 它會回覆你執行的結果。
- Bitlash Functions:就像巨集一樣,Bitlash 可以讓我們任意組合 Bitlash 指令並為它取一個名字,Bitlash 會把它儲存起來變成一個 Bitlash function。只要有需要,我們隨時都可以執行已經寫好的 Bitlash functions,經由這種方式把一些工作自動化 。
- 內建函式(Build-in Functions):Bitlash 提供了一些內建的函式,可以讓我們直接控制 Arduino 的硬體,內建函式大部份直通 Arduino 的函式,例如:ar() 通 analogRead(), aw() 通 analogWrite(), delay() 通 delay(), dr() 通 digtalRead(), dw() 通 digitalWrite() 等。
- 自訂函式(User Functions):Bitlash 也允許我們利用 addBitlashFunction() 增加自己的函式。
註:因為 Bitlash Functions 與內建函式很容易造成混淆,建議你把 Bitlash Function 當作巨集看待,不然的話,有時候它們兩個可能會讓你腦筋一時轉不過來。
安裝 bitlash
到官網下載 Bitlash,把檔案解壓縮放到 Arduino 的 Libraires 資料夾底下即可:
▲ bitlash library 的安裝
安裝完後的資料夾結構如下:
執行 bitlashdemo 範例程式
雙擊 Arduino.exe 啟動 Arduino IDE,點選 File > Examples > bitlash > bitlashdemo 打開 bitlashdemo 範例程式:
這篇文章只是個開始,目前你只需要知道怎麼使用 bitlash 就好,不必知道這段程式在做什麼。所以,儘管編譯這支程式並上傳到 Arduino 就對了。
上傳完畢後,你就可以跟 Arduino 建立連線,準備開始學習使用 Bitlash 了。
啟動終端機程式並與 Arduino 建立連線
啟動你慣用的終端機程式並打開 Serial port,通訊速率請設定為 57600 bps。
▲ 如果你使用 Serial Monitor,記得換行符號要選 "Carriage Return" 這個選項。
我用的終端機程式是 Tera Term,當我打開 Serial port 的時候,印入眼簾的是 Bitlash 的看板訊息(Bitlash Banner):
如果你也看到了同樣的訊息,那麼恭禧你,你已經準備好了。Bitlash 已經在等待你的指令,而 > 是指令提示符號(Command Prompot)。
下指令控制 LED
首先,有件事你一定要先知道,Bitlash 透過 a0, a1, a2, … 和 d0, d1, d2, … 這些變數,讓我們可以直接存取類比和數位腳位(analog 和 digital pins)。你可以用這些變數讀取並印出接腳的讀值,像底下這樣:
> print d13
0
▲ 印出 digital pin 13 的狀態,Bitlash 告訴我們 d13 的狀態是 0。
> print a0
168
▲ 印出 analog pin 0 的狀態。記得 > 是 command prompt。
我們知道 Arduino 板子上 pin 13 線路上有顆 LED(標記 為 L) 。要怎麼用 Bitlash 打開這顆 LED 呢?非常簡單!
首先,因為數位腳位(digital pins)預設都是 input,所以你必須先把 pin 13 設成 output (1 代表 output, 0 代表 input):
> pinmode(13,1)
▲ 接腳很少既當 input 又當 output 使用,通常在 Arduino 開機後只要呼叫一次 pinmode() 設定完成就行了
接著輸入底下這條指令:
> d13 = 1
就可以把 pin 13 上的 LED 打開:
夠簡單吧?那要怎麼關掉 LED 呢?不用我說,我相信你一定會。
bitlash 版的 Blink 程式
上面這支程式是 Blink 程式(Blink.pde,可以在 File > Examples > 1.Basics > Blink 找到),是大家 Arduino 入門的第一支程式,它的功能是讓 pin 13 上的 LED 燈號不斷閃爍,每隔一秒鐘切換一次燈號。底下教你用 Bitlash 做出同樣的功能:
1) 先定義一個 toggle13 的 function,如下:
> function toggle13 {d13=!d13;}
2) 接著用 run 指令跑 toggle13:
> run toggle13,1000
就這樣,你已經完成了跟 Blink 程式一樣的功能了。上列的 run 指令,會讓 toggle13 每一秒鐘跑一次。
記得要先跑一次 pinmode(13,1) 把 pin 13 設成 output。
如果要把它停下來,只要下個 stop 指令就好,每秒跑一次 toggle13 的工作會馬上停下來:
> stop
一切從 bitlashdemo 範本開始
大部份時候,我們只需要跑 bitlashdemo 範例程式就可以開始使用 bitlash,bitlashdemo 的位置在 File > Examples > bitlash > bitlashdemo:
底下幫 bitlashdemo.pde 加上中文註解(bitlashdemo.pde)。
其實 bitlashdemo.pde 程式很簡單,不過是呼叫 initBitlash() 和 runBitlash() 把 Bitlash 跑起來而已。
下一步
前面這支 Bitlash 版的 Blink 程式,確實達到了我們的目的,可以讓 LED 每秒閃爍一次,但是在 Arduino 重新開機後並不會自動執行,如何把 run toggle13,1000 的工作安排在開機的時候自動執行,請見下回分曉。
動動腦
- 請實際接上一些 LED, 可變電阻, 光敏電阻等簡單的電子裝置,然後練習用 bitlash 來存取這些電子裝置,例如讀可變電阻和光敏電阻的讀值和控制 LED 的開關。
- 我們可以在哪些場合應用 Bitlash 呢?
0 意見:
張貼留言