我正在测试一个与 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);
}
}