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 件のコメント:
コメントを投稿