Arduino のスケッチをコマンドラインからビルドする
http://32bits.io/Arturo/ を使うといいっぽい。ino というコマンドがあったがメンテされてないので ano というフォークができたらしい。
使いかた
$ ano init
すると新規プロジェクトができる。
既存プロジェクトの場合、.ino ファイルは src ディレクトリ以下に入っている必要がある。
$ ano list-models
yun: Arduino Yún
uno: [DEFAULT] Arduino Uno
diecimila: Arduino Duemilanove or Diecimila
nano: Arduino Nano
mega: Arduino Mega or Mega 2560
megaADK: Arduino Mega ADK
leonardo: Arduino Leonardo
micro: Arduino Micro
esplora: Arduino Esplora
mini: Arduino Mini
ethernet: Arduino Ethernet
fio: Arduino Fio
bt: Arduino BT
LilyPadUSB: LilyPad Arduino USB
lilypad: LilyPad Arduino
pro: Arduino Pro or Pro Mini
atmegang: Arduino NG or older
robotControl: Arduino Robot Control
robotMotor: Arduino Robot Motor
gemma: Arduino Gemma で対応モデル名が出る。
nano 向けにビルドするにはオプションをつける。
$ ano build -m nano --cpu atmega328
アップロード(書きこみ)する場合は build を upload に変えて、-p でシリアルポートへのパスを指定する。ポート指定をつけないと勝手に推測して書きこもうとするが、意図せず違うデバイスに書きこむのを避けるためにも絶対に指定したほうが良い。
.ino とかやめたい場合
.ino はほぼ cpp だが include とかがないというなんか中途半端な状態のファイル型式になっている。
ano preproc src/sketch.ino をすると cpp の完全な形で吐いてくれるので、これを src/sketch.cpp として保存して .ino を消しさっても問題なくビルドできる。
ビルドプロセス
ちなみにおおまかなビルドプロセスは https://www.arduino.cc/en/Hacking/BuildProcess に書いてある
Arduino IDE はヘッダファイルなどのパスを解決しつつ .ino を .cpp に変換(ちょっと足すだけ)して avr-gcc している。
setup() と loop() の定義:
Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/Arduino.h
HIGH とか LOW とか定数定義マクロもここに書いてある。
型のエイリアスもここで定義してある。
実際に実行している場所
Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/main.cpp
よくある main ループ。
関連エントリー
- ESP32 を BLE SPP / UART 変換器にする ヘタなの買うより安いですね。 Arduino をフレームワークにした場合これだけです。 // main.ino #include "Blue...
- FTDI チップの Arduino Nano コンパチボード 700円 中華互換 Arduino Nano を ebay で買ってみた 700円ぐらい。 Arduino 互換という意味ではもっと安いのもあるが、安...
- OS X で avr-gcc 5.3.0 をビルドする AVR のビルドツールといえば Arduino.app 1.6.5 に含まれているのでそれ使うのが一番楽だけど、この avr-gcc は 4...
- Raspberry Pi / BeagleBoard Black / Intel Galileo / Arduino の違いのメモ いろいろでてきてる。 Raspberry Pi Type A と Type B があり、Type A はイーサネットポートと組込みUSBハブ...
- Arduino の digitalWrite / pinMode / digitalRead をコンパイル時に展開する 先日 [tech] Arduino の digitalWrite をコンパイルタイムに解決する | Tue, Dec 15. 2015 - ...