Terminal+EmacsなArduino開発環境

f:id:horimislime:20130305010642j:plain

UNOを買ってLチカさせたり7セグを光らせて遊んでいたんだけど、どうもArduino IDEが使いづらく、Cocoaアプリと違いEmacsキーバインドも使えない(超重要!!!)ので、普段使っているターミナルとEmacsだけでArduino開発ができるようにしてみた。

準備編

ひとまずIDE無しでもスケッチをビルド&Arduinoに転送できるようにmjoldfield/Arduino-Makefile · GitHubを導入。

まず必要なライブラリの導入から。

$ perl -MCPAN -e shell
cpan[1]> install YAML
cpan[1]> install Device::SerialPort

続いてArduino-Makeファイルをcloneしてきて各ファイルを移動。

git clone http://github.com/mjoldfield/Arduino-Makefile.git
cp Arduino-Makefile/bin/* /usr/local/bin/
cp Arduino-Makefile/Arduino.mk /usr/local/share/

Arduino.mkにはArduino.appとビルド用スクリプトへのパスを通しておく。

ARDUINO_DIR   = /Applications/Arduino.app/Contents/Resources/Java
ARDMK_DIR     = /usr/local

ビルドしてみる

試しにによくあるLチカプログラムを作成する。

void setup() {
    pinMode(13,OUTPUT);
}

void loop() {
    digitalWrite(13,HIGH);
    delay(1000);
    digitalWrite(13,LOW);
    delay(1000);
}

.inoファイルとして保存して、同じ階層にMakefileを作成。中身はこんな感じに。

BOARD_TAG    = uno
ARDUINO_PORT = /dev/tty.usbmodemfd121

include /usr/local/share/Arduino.mk

Arduinoのシリアルポートはls /dev/tty.usb* で見つかるはず。あとはmakeでプログラムを転送する。

$ make upload

LEDが点滅したら成功!

Emacsの設定

スケッチ編集時にsyntaxハイライトが効くようにbookest/arduino-mode · GitHub を入れとく。init.elには以下を追記。

(add-to-list 'load-path "~/.emacs.d/vendor/arduino")
(setq auto-mode-alist (cons '("\\.\\(pde\\|ino\\)$" . arduino-mode) auto-mode-alist))
(autoload 'arduino-mode "arduino-mode" "Arduino editing mode." t)

これでCUIベースのArduino開発環境がひと通り出来上がった。

参考