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
Arduino 检测最先按下的按钮?_Arduino_Arduino Uno_Arduino Ide - Fatal编程技术网

Arduino 检测最先按下的按钮?

Arduino 检测最先按下的按钮?,arduino,arduino-uno,arduino-ide,Arduino,Arduino Uno,Arduino Ide,我正在尝试编写一个简单的程序,检测我的两个按钮中的哪一个先按下。虽然我认为代码编写正确,但输出似乎与我期望的不一样 我使用一个简单的整数数组来记录第一次和第二次按下按钮的“位置”,如下所示 void setup() { Serial.begin(9600); pinMode(5, INPUT); pinMode(7, INPUT); pinMode(8, INPUT); } int location = 0; int placement[2] = {99, 99}; boo

我正在尝试编写一个简单的程序,检测我的两个按钮中的哪一个先按下。虽然我认为代码编写正确,但输出似乎与我期望的不一样

我使用一个简单的整数数组来记录第一次和第二次按下按钮的“位置”,如下所示

void setup() {
  Serial.begin(9600);
  pinMode(5, INPUT);
  pinMode(7, INPUT);
  pinMode(8, INPUT);
}

int location = 0;
int placement[2] = {99, 99}; 

bool pressed = false;

void loop() {

  if (digitalRead(5) == HIGH)
  {
    Serial.println("RESET BUTTON IS PRESSED");
    placement[0] = 99;
    placement[1] = 99;
    pressed = false;
    location = 0;
  }

  if (digitalRead(7) == HIGH)
  {
    if (placement[location] == 99)
    {
      placement[location] = 7;
      location++;
      pressed = true;
    }
  }

  if (digitalRead(8) == HIGH)
  {
    if (placement[location] == 99)
    {
      placement[location] = 8;
      location++;
      pressed = true;
    }
  }

  if (pressed == true)
  {
    String text = String(location) + ". place: button n. " +     String(placement[location]);
    Serial.println(text);
    pressed = false;
  }

}
在几乎同时按下两个按钮后,我期望从程序中得到的是控制台中的一个简单输出:

  • 地点=按钮。八,
  • 地点=按钮。七,
  • 如果只按下一个按钮,那么我只希望控制台中打印一行。但是,即使我只按下一个按钮,控制台也会打印如下两行:


    有人知道这是什么原因吗?这是我第一次用这种“循环”方式编程,所以如果这是新手犯的错误,我真的很抱歉。感谢所有回答问题并花时间阅读本文的人,我真的很感激。

    String(placement[location])
    在您已经将位置增加了一个之后正在打印。因此,您将获得
    placement[1]
    placement[2]
    (位于数组的边界之外),从而显示99和0

    字符串(placement[location])
    在您已将位置增加1后正在打印。因此,您将获得
    placement[1]
    placement[2]
    (位于数组的边界之外),从而显示99和0

    天哪,我怎么会看不到呢?非常感谢你!我现在很尴尬:太谢谢你了!天哪,我怎么会看不到呢?非常感谢你!我现在很尴尬:太谢谢你了!