2012年1月15日日曜日

イチからつくるADK「AdkLedの作成その8」USBホスト側 Arduinoスケッチ

一からつくるADK「AdkLedの作成その7」の続きです。前回はAndroidManifest.xmlの編集をしました。今回からようやくArduinoのスケッチに入ります。

Arduino UNO + USB Hostシールドの組み合わせでADK接続を行います。
LEDを4番ピンに接続して光らせてみたいと思います。 


8. Arduinoスケッチの作成

8.1. Arduinoを起動させてください。メニューから「Sketch」ー「Import Library」を選び、「AndroidAccesory」と「USB_Host_Shield」があるかを確認します。


2つのライブラリが無い場合は、うまく「Verify」(コンパイル)ができません。
さらにArduino UNO + USB Hostシールドの場合、「USB_Host_Shield」ライブラリは以下のサイトから入手しておく必要があります。

github felis / USB_Host_Shield_2.0

8.2. Arduinoスケッチを作成します。以下のソースコードを貼付けてください。
#include <Max3421e.h>
#include <Usb.h>

#include <Wire.h>
#include <AndroidAccessory.h>

#define  LED       4

AndroidAccessory acc("yokorobo",
       "AdkLed",
       "AdkLed - Arduino USB Host",
       "1.0",
       "http://www.android.com",
       "0000000012345678");

void setup()
{
    Serial.begin(115200);
    Serial.print("\r\nStart");

    // 4番ピン の DIGITAL を LED 用の出力にする
    pinMode(LED, OUTPUT);
    //Androidを起動/接続する命令を送る
    acc.powerOn();
}

void loop()
{
    byte msg[2];
    byte led;

    if (acc.isConnected()) {
        int len = acc.read(msg, sizeof(msg), 1);

        if (len > 0) {
            if (msg[0] == 0x1) {
                if(msg[1] == 0x1) {
                    digitalWrite(LED, HIGH);
                    msg[0] = 0x1;
                    msg[1] = 0x1;
                    acc.write(msg, 2);
                }
                else {
                    digitalWrite(LED, LOW);
                    msg[0] = 0x1;
                    msg[1] = 0x2;
                    acc.write(msg, 2);
                }
            }
        }
    } 
    else {
        digitalWrite(LED, LOW);
    }

    delay(10);
}
上記スケッチを書き終えたら、Verifyを行います。
Verifyする前に、ボードの確認を行います。

8.3.「Tools」ー「Board」を選んで、「Arduino Uno」にチェックが入っているか、確認します。

8.4. 「Verify」ボタンをクリックし、コンパイルします。


8.5. 「Compile compiling.」と出たら、「Upload」ボタンで繋いでおいたArduino Unoにスケッチをアップロードします。

「Done uploading.」が出たらアップロードが完了しました。

以上で、一通りArduino側のプログラムができました。

0 件のコメント:

コメントを投稿