Arduino ADK用のADKライブラリを公開しました

初めての技術ネタで(^^;

Arduino ADK(旧Mega ADK)用のADKのライブラリをGithubで公開しました。 @itog さんのライブラリを修正しています。目的としては、一般に入手しやすいArduino ADKで最低限の動作確認ができるようにしたものです。初心者向けに出来るだけフレームワーク側で処理を行うように設計しています。おそらくもっとリファクタリングできると思いますが、そこは目的ではないので適当です。またADKをすでにわかっていてもっと活用したいという方は対象になりません。高いArduino ADKを買うより、Harpyとかの互換機でちゃっちゃと動かしてしまう方がいいでしょう。

 構成

(ネーミングが旧のままですが直すの面倒なのでそのままです)

サンプルを組み合わせると、AndroidのトグルスイッチでArduino ADKの13pinに接続されているオンボードのオレンジ色のLEDをON/OFFします。
(基板上に抵抗が接続されているため過大電流は流れません)

f:id:tomo_watanabe:20120407120914p:plain

全体のクラス構成

緑色がライブラリに含まれます。赤色がアプリで実装するクラスコードになります。出力、入力ともに接続するセンサーをクラスとして設計できるようにしています。USBのADKを認識するUSBAccessoryActivityとメインとなるConcreteActivityがあり、出力用にはOutputDataクラス、入力用にはInputDataクラスを継承しインスタンス化して使用します。

f:id:tomo_watanabe:20120406144937p:plain

このサンプルでは、ConcreteOutputを利用した「ADKへの出力」しか実装されていませんが、こちらのアプリでは「ADKからの入力」を実装していますので、入力サンプルを作る時の参考になると思います。(こちらはタクトスイッチを2pinに接続する想定。Arduinoのコードはarduinoディレクトリ以下に配置)もちろん入出力の混在も可能です。

 注意

  1. 全体的に説明不足ですがとりあえず公開します。より詳細はどこかで作らないといけなくなるはず(謎
  2. 動作はArduino Mega ADK(R2版)で確認しています、最新版はArduino ADKと名称が変更されR3版に変わっているようです。
  3. ConcreteActivityから別のActivityを起動してもUSBデバイスを離さないようにしています。(onPause()で離すようにしたら、onResume()で再接続してくれなくて困ったので) 
  4. アプリの終了時は「メニュー」キー「Quit」で終わるようにしてください(そうしないとUSBデバイスを握りっぱなしになってしまう)

 おまけ