2012-06-27 4 views
0

Я обнаружил довольно интересные вещи при подключении своего Mega ADK к Galaxy Nexus 4.0.4.Прерывистое подключение к Android

Если у меня есть цикл, как это, она работает просто отлично

void loop() { 

    if(acc.isConnected()){ 
     Serial.println("Accessory Connected"); 
     delay(1000); 
    } 
    else 
     Serial.println("Accessory Not Connected"); 

} 

Но если я сделать небольшое изменение в этом роде, он не подключается к телефону.

void loop() { 

    if(acc.isConnected()) 
     Serial.println("Accessory Connected"); 
    else 
     Serial.println("Accessory Not Connected"); 

    delay(1000); 

} 

Моя установка выглядит следующим образом:

void setup() { 

    Serial.begin(115200); 

    pinMode(led, OUTPUT); 

    pinMode(HabilitaMotores, OUTPUT); 
    pinMode(Motor0FW, OUTPUT); 
    pinMode(Motor0RW, OUTPUT); 
    pinMode(Motor1FW, OUTPUT); 
    pinMode(Motor1RW, OUTPUT); 

    acc.powerOn(); 
} 

Вы когда-нибудь видели это раньше? Я совершаю ужасную ошибку, которую я не вижу?

ответ

1

Когда плата ADK пытается подключиться к Android, она будет постоянно опроса. Android ждет только несколько секунд и после этого не разрешает соединение.

В первой версии кода вызов delay() происходит только после его подключения. Таким образом, до тех пор, пока плата не будет подключена, плата будет продолжать опрос и не пропустит окно времени Android.

Но во второй версии функция delay() вызывается каждый раз, когда выполняется функция loop(). Таким образом, опрос происходит только каждый раз в секунду.