2015年4月4日土曜日

YosemiteとArduino IDE 1.6.3でStuduinoを使う

前のエントリを出した翌日にArduino IDE 1.6.3が出たのと、4月1日付けでアーテックのArduino IDE用ライブラリが更新されたので、新たに書き起こします。

ちなみに、「スタディーノとはなにか」は、前のエントリをご参照ください。

Arduino IDE 1.6.3では、ライブラリマネージャとボードマネージャを使う方向が一応完成したようで、1.6.2の混乱した状況は「なかったこと」になっているようです。一応、1.6.2の設定のままでも動くようになっているようですが、将来的にどうなるのかわからないので、思い切って ~/Library/Arduino15 以下は、必要なもののバックアップをとった上でごっそり捨ててしまったほうがよいように思います。

それでArduino IDE 1.6.3を再起動すると、~/Library/Arduino15 以下は以下の内容だけになります。
  • library_index.json
  • package_index.json
まじかよって感じですが、JSONで記述された、それぞれライブラリマネージャとボードマネージャが参照する設定ファイルのようです。

あと、何か設定を変えたりスケッチを編集するなどすると、これまで通りのpreferences.txtもできます。

それで、これらに追記してライブラリマネージャやボードマネージャで対応できるようにすればいいかと思いきや、ボードはArduino IDEのパッケージとして組込みなので、「ボードだけの設定はない」わけです。ライブラリも、アーテックはひとまとめにして提供しているので、簡単に追記というわけにいかない。せめてlibraries以下でないようにしてくれればいいのに。

結局、/Applications/Arduino.app以下が再び整理されて、一通り展開されたものが入っている形に戻ったので、そちらに手を加えればよいことになりました。

まず、boards.txtは、以下のところになりました。アーキテクチャが増えたので、アーキテクチャごとのディレクトリ以下(今回はavr以下)になります。
/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/boards.txt
 このファイルの末尾あたりに以下を追記します。
proo.name=Studuino (3.3V, 8 MHz) w/ ATmega168
proo.upload.tool=avrdude
proo.upload.protocol=arduino
proo.upload.maximum_size=15872
proo.upload.speed=115200
proo.bootloader.tool=avrdude
proo.bootloader.low_fuses=0xc6
proo.bootloader.high_fuses=0xdd
proo.bootloader.extended_fuses=0x02
proo.bootloader.path=optiboot
proo.bootloader.file=optiboot_pro_8MHz.hex
proo.bootloader.unlock_bits=0x3F
proo.bootloader.lock_bits=0x0F
proo.build.mcu=atmega168
proo.build.f_cpu=8000000L
proo.build.core=arduino:arduino
proo.build.variant=arduino:standard
proo.build.board=AVR_PROO
アーテックのライブラリは、新しいセンサ類(Bluetoothシリアル、赤外線リモコン受信器、カラーセンサ、超音波距離センサ、温度センサ、ジャイロ・加速度センサ)のドライバが追加され、APIドキュメントも4月1日付で改訂されています。Webには何のアナウンスもないので、開いてみて初めて気づくという仕様です。

そこで、新しい「Studuinoライブラリセット」(libraries.zip)をアーテックのサイトからダウンロードしてunzipします。すると、libraries以下に、
  • ColorSensor
  • IRremoteForStuduino
  • MMA8653
  • MPU6050
  • Studuino
 の5つのディレクトリができるので、これを
/Applications/Arduino.app/Contents/Java/libraries
以下に移動します。これで完了。もし、以前のライブラリを自分のプロジェクトディレクトリ以下に置いていた方は、そちらを置き換えるか、消しておかないとコンパイラが「ライブラリが複数ある」といってエラーを出しますのでご注意ください。

ついでですが、Studuinoの下のexamplesは消滅したので、Blinkを試すことはできなくなりました。

記憶にあるものと同内容を再現するなら、こうなるかと思います(delay()使っていたのをboard.Timer()に直しました)。
#include"arduino.h"
#include<Arduino.h>
#include<Servo.h>
#include<Wire.h>
#include<MMA8653.h>
#include<MPU6050.h>
#include<ColorSensor.h>
#include<IRremoteForStuduino.h>
#include"Bluetooth.h"
#include"Studuino.h"
Studuino board;
 
void setup() {
  board.InitSensorPort(PORT_A4, PIDLED);
}
 
void loop() {
  board.LED(PORT_A4, ON);
  board.Timer(1000);
  board.LED(PORT_A4, OFF);
  board.Timer(1000);
}
このスケッチをBlinkの名称で保存し、/Applications/Arduino.app/Contents/Java/libraries/Studuino の下にexamplesディレクトリを作成し、そこに移せば「ファイル」→「スケッチの例」 メニューにStuduinoが現れて、以前と同じになります。