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 ループ。

  1. トップ
  2. tech
  3. Arduino のスケッチをコマンドラインからビルドする
▲ この日のエントリ