2011-08-13 6 views
0

보드에서 버튼을 누르면 직렬 포트를 통해 데이터를보고하는 Arduino 스케치가 있습니다. 직렬 포트를 읽는 것은 버튼을 누를 때 OS와 상호 작용하는 Node.js 서버입니다.버튼이 눌려지지 않은 경우 모니터링

처음 발견 한 문제는 루프가 끝날 때 지연을 두지 않으면 Node.js 서버가 병목 현상이있는 것처럼 보였고 마지막 세트를 완료하기 전에 다음 명령어 세트를 읽는 것입니다. . 각 루프는 항상 데이터를 직렬 포트로 보냅니다.

어쨌든 각 루프의 끝에서 100 밀리 초 지연되도록 스케치를 설정했습니다.

내가 지금 발견 한 문제는 버튼을 100ms 이상 누르고 있으면 버튼이 2 번 눌려 지므로 각 버튼 누름에서 실행되는 node.js 코드가 두 배가된다는 것입니다. 버튼을 누른 사용자가 언론을 발표했는지 알 수있는 방법이 있습니까?

답변

1

스위치를 디 바운스하려면 소프트웨어를 추가해야합니다.

스위치가 해제 될 때 앱에 따라 자동 반복을 사용하거나 다른 코드를 전송할 수 있습니다. 하나만하여 전송을 원하는 경우에

, 당신은 다음과 같은 코드를 추가 할 수 있습니다 내가하고 결국 무엇

If (buttonpressed==TRUE) 
    { 
     If (buttonsent==FALSE) 
     { 
      sendbutton(); 
      buttonsent=TRUE; 
     } 
    } 
    else 
    { 
     buttonsent=FALSE; 
    } 
+0

이 약간 다르지만 핵심은 기본적으로 동일합니다. Arduino가 일정한 루프에서 작동하기 때문에 이전 단추 상태가 true이고 현재 상태가 true이면 이제는 실제로 false입니다. 국가가 이전에 거짓이었고 지금 사실 일 때만 그것이 사실 일 것입니다. –

관련 문제