Button arduino 5秒计时器
我想在arduino中制作一个5秒计时器,更详细地说,我有一个RGB led,我想点亮一种颜色,显示我按下按钮的次数(我也有一个按钮),比如,在这5秒钟内,led必须保持不亮,在相同的5秒钟内,如果我按下一次按钮,计时器结束后(5秒钟),led将变为红色,如果我按两次按钮,led就会变成蓝色或其他颜色Button arduino 5秒计时器,button,timer,arduino,led,Button,Timer,Arduino,Led,我想在arduino中制作一个5秒计时器,更详细地说,我有一个RGB led,我想点亮一种颜色,显示我按下按钮的次数(我也有一个按钮),比如,在这5秒钟内,led必须保持不亮,在相同的5秒钟内,如果我按下一次按钮,计时器结束后(5秒钟),led将变为红色,如果我按两次按钮,led就会变成蓝色或其他颜色 const int buttonPin=2;//按钮销的编号 常量int ledbPin=13;//LED引脚的编号 常数int-ledgPin=12;//LED引脚的编号 常数int-ledr
const int buttonPin=2;//按钮销的编号
常量int ledbPin=13;//LED引脚的编号
常数int-ledgPin=12;//LED引脚的编号
常数int-ledrPin=11;//LED引脚的编号
整数计数=0;//数一数按钮按下的次数
无符号长时间;
无符号长循环时间;
//变量将发生变化:
int buttonState=0;//用于读取按钮状态的变量
无效设置(){
//将LED引脚初始化为输出:
引脚模式(ledrPin,输出);
引脚模式(ledgPin,输出);
引脚模式(ledbPin,输出);
当前时间=毫秒();
loopTime=当前时间;
//将按钮引脚初始化为输入:
pinMode(按钮输入,输入);
}
void循环(){
//读取按钮值的状态:
buttonState=digitalRead(buttonPin);
//检查按钮是否按下。
//如果是,则按钮状态为高:
如果(按钮状态==高){
count++;//将1添加到计数中
如果(计数>=1){
当前时间=毫秒();
如果(当前时间>=(循环时间+5000)){
如果(计数=1){
数字写入(ledrPin,高);
}
如果(计数=2){
数字写入(ledgPin,高);
}
如果(计数=3){
数字写入(ledbPin,高);
}
}
}
}
}
这是因为您正在循环中生成if语句。循环太快了。当您按下并释放按钮时,它已多次执行循环。在这几次中,你的计数还是越来越高。我会在按钮的If语句中添加一毫秒。
我只是举了个例子。你可以用你自己的方式
void loop(){
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin);
// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if (buttonState == HIGH && currentTime == 500 (didnt look which one your timer is)) {
count++; // add 1 to the count
if (count >= 1) {
currentTime = millis();
if(currentTime >= (loopTime + 5000)){
if (count == 1) {
digitalWrite(ledrPin, HIGH);
}
if (count == 2) {
digitalWrite(ledgPin, HIGH);
}
if (count == 3) {
digitalWrite(ledbPin, HIGH);
}
}
}
}
}