c - Arduino:检测 while 循环内按下的按钮

标签 c loops if-statement while-loop arduino

我一直在尝试编写一段代码,以便在一定时间耗尽时按下按钮时基本上为分数添加分数。我发现的问题是,当时间减少时,它不会检测到何时按下按钮,事实上,它只能检测到时间何时开始减少,然后按钮处于哪种状态并不重要继续增加分数。无论如何,这是主要代码:

void loop() {
  buttonState01 = digitalRead(button01);
  buttonState02 = digitalRead(button02);
  buttonState03 = digitalRead(button03);

if (buttonState01){

time = 3000;
    while(time > 0){
      if (buttonState02){
        score += 10;
        Serial.println(score);
      }
  time--;
Serial.println(time);
    }
  }
}

如果需要的话,这里是完整的代码:

int button01 = 4;
int button02 = 3;
int button03 = 2;

int buttonState01 = 0;
int buttonState02 = 0;
int buttonState03 = 0;

float time;
int score;

void setup() {
  score = 0;

  time = 0;

  pinMode(button01, INPUT);
  pinMode(button02, INPUT);
  pinMode(button03, INPUT);

  Serial.begin(9600);
}

void loop() {
  buttonState01 = digitalRead(button01);
  buttonState02 = digitalRead(button02);
  buttonState03 = digitalRead(button03);

  if (buttonState01){
    time = 3000;
    while(time > 0){
      if (buttonState02){
        Serial.println("Points");
      }
      time--;
      Serial.println(time);  
    }
  }
}

最佳答案

您应该读取 while 循环内按钮的状态。像这样:

while(time > 0)
{
  buttonState02 = digitalRead(button02);
  if (buttonState02){
    Serial.println("Points");
  }
  time--;
  Serial.println(time);  
}

并且在您的代码中,没有为分数添加分数的逻辑。

关于c - Arduino:检测 while 循环内按下的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43654042/

相关文章:

c# - 如果 C# .NET 出现错误,如何让我的代码跳过某些内容

java - 使用Character.isLetter和Character.isDigit忽略数字、空格并读取字符串输入

将温度从摄氏温度转换为华氏温度

c - 为什么 read() 在 scanf() 之后不起作用?

c - ANSI C - 使用动态数组创建的嵌套 BER TLV 元素的释放

JavaScript、nodejs : give a "string not found" messege on console. 日志

Java简单的while循环困惑

c - 每次在 C 中执行程序时,指针地址都会改变吗?

c - 学习好的设计有哪些值得研究的开源C项目?

java - 将 if-else 修改为策略模式