2

我正在测试一个与 Android 3.2 (Archos 80 G9) 平板电脑连接的 Arduino MEGA ADK,我注意到一个奇怪的延迟。

我已经为 Arduino 制作了一个简单的程序来查找问题的原因,我注意到如果我注释该行acc.write(data, 3);而不是在我更改输入引脚 #6 时打开或关闭输出 #22。另一方面,与线路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);
  }
}
4

0 回答 0