Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Button 监视按钮是否已停止按下_Button_Arduino - Fatal编程技术网

Button 监视按钮是否已停止按下

Button 监视按钮是否已停止按下,button,arduino,Button,Arduino,我有一个Arduino草图,当按下电路板上的按钮时,它通过串行端口报告数据。读取串行端口的是一个Node.js服务器,当按下按钮时,该服务器与操作系统进行一些交互 我首先发现的问题是,如果我没有在循环结束时设置延迟,Node.js服务器似乎会出现瓶颈,并在完成最后一组指令之前开始读取下一组指令。每个循环总是将数据发送到串行端口 无论如何,在每个循环结束时,我将草图设置为延迟100毫秒 我现在发现的问题是,如果我按住按钮超过100毫秒,它会将其视为按下两次按钮,因此每次按下按钮时运行的node.j

我有一个Arduino草图,当按下电路板上的按钮时,它通过串行端口报告数据。读取串行端口的是一个Node.js服务器,当按下按钮时,该服务器与操作系统进行一些交互

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

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


我现在发现的问题是,如果我按住按钮超过100毫秒,它会将其视为按下两次按钮,因此每次按下按钮时运行的node.js代码会加倍。有没有办法告诉我用户按下按钮是否释放了按钮?

您需要添加一个软件来解除开关的抖动

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

如果只希望发送一个,可以添加如下代码:

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

我最终所做的略有不同,但核心是基本相同的。由于Arduino在一个恒定的循环中运行,我刚才说,如果上一个按钮状态为真,而当前状态为真,那么现在就真的为假。只有当状态以前为false,现在为true时,它才会为true。