检测哪个按钮先被按下?
Detect which button was pressed first?
我正在尝试编写一个简单的程序来检测首先按下我的 2 个按钮中的哪一个。虽然我认为代码编写正确,但输出似乎不是我所期望的。
我正在使用一个简单的整数数组来记录 "placements" 第一次和第二次按下哪个按钮,如下所示。
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;
}
}
在几乎同时按下我的 2 个按钮后,我对程序的期望是控制台中的简单输出:
- 放置=按钮n。 8
- 放置=按钮n。 7
如果只按下一个按钮,那么我只希望在控制台中打印一行。但是,即使我只按一个按钮,控制台也会打印 2 行,如下所示:
有谁知道,这可能是什么原因造成的?这是我第一次以这种 "cyclic" 方式编程,所以如果这是一个菜鸟错误,我真的很抱歉。感谢任何回答并花时间阅读本文的人,我真的很感激。
String(placement[location])
在您已经将位置增加一个后正在打印。所以你得到 placement[1]
和 placement[2]
(在数组的边界之外),因此出现了 99 和 0。
我正在尝试编写一个简单的程序来检测首先按下我的 2 个按钮中的哪一个。虽然我认为代码编写正确,但输出似乎不是我所期望的。
我正在使用一个简单的整数数组来记录 "placements" 第一次和第二次按下哪个按钮,如下所示。
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;
}
}
在几乎同时按下我的 2 个按钮后,我对程序的期望是控制台中的简单输出:
- 放置=按钮n。 8
- 放置=按钮n。 7
如果只按下一个按钮,那么我只希望在控制台中打印一行。但是,即使我只按一个按钮,控制台也会打印 2 行,如下所示:
有谁知道,这可能是什么原因造成的?这是我第一次以这种 "cyclic" 方式编程,所以如果这是一个菜鸟错误,我真的很抱歉。感谢任何回答并花时间阅读本文的人,我真的很感激。
String(placement[location])
在您已经将位置增加一个后正在打印。所以你得到 placement[1]
和 placement[2]
(在数组的边界之外),因此出现了 99 和 0。