Button arduino 5秒计时器

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

我想在arduino中制作一个5秒计时器,更详细地说,我有一个RGB led,我想点亮一种颜色,显示我按下按钮的次数(我也有一个按钮),比如,在这5秒钟内,led必须保持不亮,在相同的5秒钟内,如果我按下一次按钮,计时器结束后(5秒钟),led将变为红色,如果我按两次按钮,led就会变成蓝色或其他颜色

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);
      }

      }
    }
    }
  }