我是Arduino的新手,试图用按钮制作一个随机数发生器。
我的问题是:
我该怎么做,如果我按下按钮一次,那么我会得到一个介于0到1024之间的一个随机数。之后,我想要从0循环到随机数,然后又回到0。
我如何消除按钮的弹跳
示例代码:
void setup(){
Serial.begin(57600);
pinMode(2,INPUT_PULLUP);
attachInterrupt(0,randomnumber,FALLING);
}
void randomnumber(){
int number=random(0,1024);
for(int x=0;x<=number; x++){
Serial.println(x);
delay(1000);
}
for(int y=number;y>=0; y--){
Serial.println(y);
delay(1000);
}
}
void loop(){
}
有什么好的建议吗?
答案 0 :(得分:0)
好吧,您正在寻找的是“信号反跳”。
当您按下按钮时,信号不会从低到高,而是在开始时会产生噪声(这是机械触点的一般属性),从而产生了多次“按钮按下”。常见且可行的方法是:
1)检测到按下按钮(输入引脚上的0到1转换)
2)delay(10)//等待几毫秒
3)再次检查按钮以查看是否仍在按动;如果为true,则表示确实按下了该按钮;如果不是,则只是一些声音,可以忽略
这将拒绝任何短于10 ms的脉冲
以下是一段简短的视频,介绍了您按下按钮时实际发生的情况:https://youtu.be/jYOYgU2vlSE
还有一篇文章和代码:https://programmingelectronics.com/tutorial-19-debouncing-a-button-with-arduino-old-version/