2012年2月13日月曜日

ダ・ヴィンチ32U でADK


Arduino Leonardo 互換ボード、ダ・ヴィンチ32U と Sparkfun USB Host Shield の組み合わせで、ADK が動きました。

ソフトウェアは Arduino IDE 1.0 と USB Host Shield Library 2.0 (Circuits At Home オフィシャル版)の組み合わせ。

写真は USB Host Shield Library のサンプル(demokit_20)を動かしているところです。

Arduino IDE 1.0 でダ・ヴィンチ32U を使う方法はこちら
USB Host Shield Library 2.0 についてはこちらの記事を参照して下さい。

demokit_20 をコンパイルすると、通常(Uno 等)では問題ないのですが、
ボードで Leonardo を指定すると、USB 関連で error になります。

この問題は、ATmega32U4 のUSB 関連機能を使うAPI で使用する変数名「USB」と、USB Host Shield で使うクラス名「USB」がバッティングするためのようです。

Library の方を修正するのが筋かと思いますが、変更箇所が多くなりそうだったので、IDE の中身を変更しました。

アプリケーション内部 (Mac は右クリックから「パッケージの内容を表示」) に、Arduino API 群のファイルがあります。
/Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/cores/arduino

以下の4つのファイル
CDC.cpp (28行目)
main.cpp (8行目)
USBAPI.h (22行目)
USBCore.cpp (624行目)

の中に 変数 USB を使っている箇所があるので、すべて別の名前に変更します。
(私はとりあえず USB1 にしました。)

これでコンパイルエラーは無くなりました。

次に、どうやって配線をするか、、、
Sparkfun のUSB Host Shield は Library2.0用に改造済みの場合、D9(INT), D10(SS), D11(MOSI), D12(MISO), D13(SCK) の線とRESET, 5V, GND の8本を繋げば動作します。

ダ・ヴィンチ32U と Arduino Leonardo のピン名称対応表(再掲)。

MOSI, MISO, SCK, RESET, 5V, GND はダ・ヴィンチ32U に対応する所に接続します。

シールドのD9 はダ・ヴィンチの D5(PC6) に、D10 はD13(PC7)に接続します。
これは Usb.h とavrpins.h で指定されています。
他のピンに変更したい場合は、これらのファイルを編集すれば良いと思います。

とりあえず動作させるのが目的だったので、今回はここまで。

0 件のコメント:

コメントを投稿