Arduino задерживается в общении с Android - PullRequest
2 голосов
/ 27 февраля 2012

Я тестирую Arduino MEGA ADK, подключенный к планшету с Android 3.2 (Archos 80 G9), и заметил странную задержку.

Я сделал простую программу для Arduino, чтобы найти причину проблемы, и заметил, что если я прокомментирую строку acc.write(data, 3);, то выход № 22 включается или выключается, когда я меняю входной вывод № 6 , С другой стороны, для линии acc.write(data, 3); вывод № 22 имеет случайную задержку.
Это нормально? Могу ли я избежать этой задержки?

Вот мой тестовый код:

#include <Usb.h>
#include <AndroidAccessory.h>

AndroidAccessory acc("Google, Inc.",
             "DemoKit",
             "DemoKit Arduino Board",
             "1.0",
             "http://www.android.com",
             "0000000012345678");

int precVal = 0;

const int inPin = 6;

void init_leds()
{
    pinMode(inPin, INPUT);

    pinMode(12, OUTPUT);
    pinMode(22, OUTPUT);

    digitalWrite(12, LOW);
}

void setup()
{
  Serial.begin(115200);
  Serial.print("\r\nStart");
  init_leds();
  acc.powerOn();
}

void loop() {
  delay(100);

  int val = digitalRead(inPin);   // read the input pin
  digitalWrite(22, val);

  byte data[3];

  if (acc.isConnected()) {
    digitalWrite(12, HIGH);  //connected
    int len = acc.read(data, sizeof(data), 1);
    if (len > 0) {
       digitalWrite(data[1], data[2] ? HIGH : LOW);
    }

    if (val != precVal) {
        data[0] = 0x1;
    data[1] = 0;
    data[2] = val ? 1 : 0;
    acc.write(data, 3);
    precVal = val;
    }
  } else {
     digitalWrite(12, LOW);
  }
}
...