2011-08-13 17 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は一定のループで動作するので、前のボタンの状態が真で現在の状態が真であれば、今は本当に偽であると言いました。状態が以前は偽であった場合にのみ、今度は真実になります。 –

関連する問題