もりねずみーのやつ

インターネット上でしか生きられません

Arduino IDEを使わない方法 Emacs+Ino

Arduino

最近Arduinoとかラズパイとか触ってる。 超楽しい。

可変抵抗器をつないで自由にサーボモータ動かしたり、 PWM出力から音を出してシンセサイズしたり、 こんなことがこんな簡単に出来るんだと、感動してる。

Arduinoと可変抵抗器1つでサーボモータ動かす


Arduino + Adafruit Motor Shield + Analog input0 ...

Audionoサンプルを動かす(1)


Auduino in Arduino - YouTube

Audionoサンプルを動かす(2)


Auduino in Arduino (2) - YouTube

Arduino IDE

Arduinoソースコードコンパイルして、Arduino実機にアップロードするために、 Arduino IDEというのが用意されています。

ちょろっと書いてちょろっと動かすっていう程度には、 とてもシンプルで楽でいいと思う。

ただ、フォントの種類やサイズ、背景色などのカラースキームが設定できないなど、 普段EmacsVimに脳をやられてしまっている人達には、禁断症状的なものが 出てきてしまい、なかなかつらいものがある。

Ino

Arduino IDEの機能をコマンドラインから操作できるようにするためのツール。 http://inotool.org/

さっくりと紹介

$ mkdir beep  <-- Arduinoプロジェクトディレクトリを作成して
$ cd beep  <-- そこに移動しておく
$ ino init -t beep <-- inoを使って、Arduinoプロジェクト用にlibとsrcディレクトリを生成出来る
$ ino init -t empty <-- -tオプションはテンプレートを使用する意味で、emptyを指定すると空のプロジェクトが生成される
$ ino build <-- Arduinoプロジェクトをビルド
$ ino upload <-- Arduinoプロジェクトを実機にアップロード

基本的には、USBやシリアル接続先、ArduinoIDEのライブラリなどは、 自動的に引っ張って設定してくれる。 接続先を指定するには.iniファイルで設定も出来る。

素晴らしい機能や使い方等は、公式を参考にするといいとして、 少しハマってしまったので、わざわざブログにした次第でして。 結果から先に言うと、今のところ、inotool.orgのInoはArduino IDE 1.5.xでは使えない。

今現在、Arduino IDEには1.0.xと1.5.x(Beta)のニ種類がある。 で、Betaである1.5.xでは、オリジナルのInoでは動作しない報告が出てる。 https://github.com/amperka/ino/issues/119

ていうか実際、ino buildが動作しなかった。

os-MacBook-Air:beep morinezumiiii$ ino build
Searching for Board description file (boards.txt) ... found multiple:
  - /Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/avr/boards.txt
  - /Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/sam/boards.txt
  - /usr/local/share/arduino/hardware/arduino/boards.txt
Searching for Arduino lib version file (version.txt) ... /Applications/Arduino.app/Contents/Resources/Java/lib/version.txt
Detecting Arduino software version ...  1.5.6 (1.5.6-r2)
Searching for Arduino core library ... /usr/local/share/arduino/hardware/arduino/cores/arduino
Searching for Arduino variants directory ... /usr/local/share/arduino/hardware/arduino/variants
Searching for Arduino standard libraries ... /Applications/Arduino.app/Contents/Resources/Java/libraries
Searching for make ... /Applications/Arduino.app/Contents/Resources/Java/hardware/tools/avr/bin/make
Searching for avr-gcc ... /Applications/Arduino.app/Contents/Resources/Java/hardware/tools/avr/bin/avr-gcc
Searching for avr-g++ ... /Applications/Arduino.app/Contents/Resources/Java/hardware/tools/avr/bin/avr-g++
Searching for avr-ar ... /Applications/Arduino.app/Contents/Resources/Java/hardware/tools/avr/bin/avr-ar
Searching for avr-objcopy ... /Applications/Arduino.app/Contents/Resources/Java/hardware/tools/avr/bin/avr-objcopy
src/sketch.ino
Searching for Arduino lib version file (version.txt) ... /Applications/Arduino.app/Contents/Resources/Java/lib/version.txt
Detecting Arduino software version ...  1.5.6 (1.5.6-r2)
make: execvp: /bin/sh: Argument list too long
make: *** [.build/uno/src/sketch.d] Error 127
Make failed with code 2

で、上記のissueを見ると、 「amperka/inoからForkしてjustonia/inoを作ったよーこっち使ってねー。」 っていうコメントがあって、そっちからgit cloneしてmake installしたら、 問題なくInoが使えた。 https://github.com/justonia/ino/tree/ide1.5x

このamperkaさんとjustoniaさんがこの後やりとりしてるかどうかは 調べてないからわからないけど、多分そのうちどっちかにMergeされるんじゃないかな、と。

とりあえずこれで、コマンドラインでのArduinoプロジェクトを操作できるようになった。

Emacs

エディタは別になんでも良いです(震え声 とりあえずエディタからターミナル使えるものがあれば、Inoの機能を呼び出せるね。 Emacsの場合は、arduino-mode.elがelpaに登録されているので、以下でインストール出来る。

-- M-x
package-install [Enter]
arduino-mode [Enter]

これだけ。

Emacs+InoでArduinoのLEDをチカチカ

環境整った。素敵。

f:id:aburos:20140504184938j:plain

どうでもいい余談

Auduino、思った以上にすごくエグイ音が出た。 SharmanのFilterbankに負けないくらいのもの作れるんじゃねっていうくらい。 某メーカの某おもちゃよりよっぽどry