2011-08-13 27 views
0

我有一个Arduino草图,当在主板上按下按钮时,通过串口报告数据。什么是读取串行端口是一个Node.js服务器,当按下按钮时,它与操作系统有一些交互。监视一个按钮是否已经停止被推动

我首先发现的问题是,如果我在循环结束时没有延迟,那么Node.js服务器似乎是瓶颈,并在完成最后一组之前开始阅读下一组指令。每个循环总是将数据发送到串行端口。

无论如何,我设置我的草图延迟100毫秒在每个循环的结束。

我现在发现的问题是,如果我按住按钮超过100毫秒,它会将其视为2按钮按下,因此每个按钮按下时运行的node.js代码会加倍。有没有一种方法可以告诉用户按下按钮是否已经释放了媒体?

回答

1

您需要添加一个软件来消除开关。

根据您的应用程序的不同,当开关被释放时,可能需要自动重复或发送不同的 代码。

如果你只想要一个发送的,你可以像下面添加代码:

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

我最终什么事做的是略有不同,但在核心是基本相同。由于Arduino以一个不变的循环运行,我只是说如果前一个按钮状态为真,并且当前状态为真,那么现在它真的是错误的。只有当国家以前是虚假的,现在才是真实的。 –