2012-06-27 5 views
0

내 메가 ADK와 Galaxy Nexus 4.0.4의 연결에 대해 흥미로운 점이 몇 가지 발견되었습니다. 나는이 같은 루프가있는 경우간헐적 인 안드로이드 연결

, 그것은

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() 호출은 연결된 후에 만 ​​발생합니다. 보드가 연결될 때까지 보드는 폴링을 계속 유지하고 안드로이드 시간대를 놓치지 않을 것입니다.

그러나 두 번째 버전에서는 delay()가 loop() 함수가 실행될 때마다 호출됩니다. 따라서 설문 조사는 매초마다 발생합니다.