2014年7月13日 星期日

EzGo : 以 NQC 寫 LEGO RCX 程式

2014年7月13日 星期日
多年前買的 LEGO 9794 動力機械組中附的是 RCX 1.0,原廠並沒有給 Linux 用的寫程式工具,不過有 LEGO 的愛好者開發了其它可跨平台使用的工具。「NQC」是其中一種替代的工具,我們可以在文字編輯軟體中用類似 C 語言的語法來寫 RCX 的控制程式,再利用 nqc 編譯並將程式傳給 RCX,雖然不像 Windows 下的 ROBOLAB 有圖形化的操作界面,但是能直接在 Linux 下寫 LEGO 的程式,也是不錯的選擇。

 我的 LEGO 9794 附的是 USB 的紅外線傳輸器,插入安裝 EzGo 11 的電腦後即可自動抓到裝置,底下是執行「dmesg」後可以看到的訊息,自動載入「legousbtower」的驅動程式了。不像在 Mac OS 10.9 底下就沒反應了。


再執行「lsusb」及「ls /dev/usb」確認一下。


安裝 NQC


在 ezgo 11 下安裝 NQC 很簡單,只要在終端機中執行底下指令即可:

sudo apt-get install nqc

使用 NQC


NQC 提供了蠻詳細的說明文件,有需要可以到網站中下載 PDF 檔來看:




安裝 firmware

我的 LEGO RCX 很久沒用了,想將寫好的測試程式寫入 RCX 時卻出現了「No firmware installed on RCX」的錯誤訊息:


所以必須先用 nqc 將 firmware 寫入 RCX 中才行,到下列網站中可以下載到 RCX 的 firmware:


我下載了其中的 RCX firmware version 3.32 (firm0332.lgo),網站提供的是 ZIP 格式的壓縮檔,使用前記得要先解壓縮。

然後切換到放 firmware 的目錄中執行底下的指令,將 firmware 傳入 RCX 中:

sudo nqc -Susb -firmware firm0332.lgo

上面的指令使用到兩個參數:

  • -Susb : 告訴 nqc 使用 USB 來進行 IR 傳輸
  • -firmware : 告訴 nqc 使用哪一個 firmware 的檔案。

如果沒有問題,應該可以看到 LEGO 的紅外線傳輸器閃燈,而 RCX 的螢幕中有數字在跑,傳輸完畢則會聽到 RCX 清脆的嗶嗶聲。

編譯及傳輸程式

我是直接以 ezgo 中的文字編輯工具 nano 來編寫程式,最後儲存為 xxx.nqc,接著可以執行底下的指令來利用 nqc 編譯為 RCX 的程式碼:

sudo nqc -Susb -d xxx.nqc

如果成功,目錄中應該會多一個編譯好的 xxx.rcx 檔案,接著編譯完的程式碼會自動傳送給 RCX,完成後,應該會聽到 RCX 傳輸完成的嗶嗶聲。

如果想在傳輸完程式以後,立即執行程式,可以再多加一個「-run 」的參數,改為:

sudo nqc -Susb -run -d xxx.nqc

詳細的參數說明可以查手冊,或是執行「nqc -help」。



沒有留言:

張貼留言

 
雄::gsyan © 2009. Design by Pocket