Yaoadkライブラリ集の使い方(Windows7) - ADKstudyGroupTokyo/Yaoadk GitHub Wiki
以下のgithubサイトにアクセスします。
【URL】 https://github.com/ADKstudyGroupTokyo/Yaoadk/
「ZIP」のボタンをクリックしてダウンロードします。
![]()
図1 Yaoadkライブラリ集をzipファイルでダウンロード
ダウンロードするZIPファイルは、長々としたファイル名になりますが、気にせずそのまま保存しください。
ZIPファイルを解凍すると、以下のようにArduinoライブラリのフォルダが並びます。すべてのフォルダを選んでコピーしてください。
![]()
図2 解凍したArduinoライブラリのフォルダ
パソコンに配置した「arduino-1.0」フォルダ(ここではC:ドライブ直下)の中にある「Libraries」フォルダに貼り付けてください。
![]()
図3 「C:\Arduino-1.0\Libraries」フォルダ
コピーが完了したら「Libraries」フォルダを閉じて、Arduino IDEを起動してください。すでにArduinoIDEを起動している場合ライブラリの反映がされていませんので、いったんArduinoを終了する必要があります。
Androidに接続するにあたり、ArduinoからAndroid側にADKの接続が可能か確認するスケッチを作ります。
Androidに接続すると、以下のようなダイアログが表示されます。
![]()
図4 外部インテントによるダイアログ
USBデバイスとなるAndroidでADKを使える状態をAndroidアクセサリモードといい、アクセサリモードとの接続が可能か問い合わせるスケッチです。
リスト1 AdkIsConnect.ino
#include <Max3421e.h> //ADKを利用するための3つのライブラリを読み込む(1)
#include <Usb.h>
#include <AndroidAccessory.h>
//外部インテントのための指定(2)
AndroidAccessory acc("ADKstudyGroupTokyo ", //第1引数:組織名
"AdkNoSuchAppTitle", //第2引数:存在しないアプリのタイトル名
"このAndroidはADKが使えます ADK Connection Test", //第3引数:ダイアログ表示メッセージ
"1.0", //第4引数:バージョン
"http://accessories.android.com/", //第5引数:ジャンプ先URL
"0000000012345678"); //第6引数:シリアル番号
void setup() //最初に一度だけ実行される部分
{
Serial.begin(115200);
Serial.print("\r\nStart");
//USBホスト機能を有効にする
acc.powerOn();
}
void loop() //繰り返し実行される部分
{
if (acc.isConnected()) { //Androidを起動・接続する命令を送る(3)
//communicate with Android application(4)
} else {
//set the accessory to its default state(5)
}
delay(10); //10ミリ秒処理を停止(10ミリ秒おきにloop()を繰り返す) (6)
}
ソースコードの解説
(1)コピーしたライブラリを指定し読み込むコードです。ADKを使う場合必ずこの3行をスケッチの先頭に入れておく必要があります。
(2)外部インテントのための指定を行う部分です。外部インテントとはAndroidの外部(ここではArduino)から起動するアプリの指定のことです。第2引数に"AdkNoSuchAppTitle"という存在しないAndroidアプリ名を指定し、第5引数に「表示」ボタンをタップしたときにジャンプするサイトのURLを入れます。
(3)Androidと接続を確認する処理です。ADKに対応したAndroidは存在しないアプリを起動しようとしますが、通常"AdkNoSuchAppTitle"というアプリ名は存在しないため図4のダイアログを表示します。
(4)このスケッチでは何も書かれていませんが、実際にADKのためのAndroidアプリと通信を行い、データのやり取りを行う部分になります。
(5)ADKが接続されていない際に処理する部分です。接続されていない際のピンの状態などを記述します(省略される場合もあります)。
(6)delay()関数はミリ秒単位で処理を停止し、loop部分の繰り返しタイミングを決めます。ここではloop部分が10ミリ秒おきに繰り返されます。