Я пытаюсь написать простую программу, которая определяет, какая из моих 2 кнопок была нажата первой. Хотя я думаю, что код написан правильно, вывод не соответствует ожиданиям.
Я использую простой массив целых чисел для записи «мест размещения», кнопки которых были нажаты первой и второй, как вы можете видеть ниже.
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;
}
}
То, что я ожидаю от программы после одновременного нажатия двух кнопок, представляет собой простой вывод в консоли:
- место = кнопка n. 8
- место = кнопка n. 7
Если нажата только одна кнопка, то я ожидаю, что в консоли будет напечатана только одна строка. Однако, даже если я нажму только одну кнопку, консоль напечатает 2 строки, например:
Кто-нибудь знает, что может быть причиной этого? Я впервые программирую таким «цикличным» способом, поэтому, если это какая-то ошибка новичка, мне очень жаль. Спасибо всем, кто отвечает и кто находит время, чтобы прочитать это, я действительно ценю это.