Я тестирую 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);
}
}