Есть код, залитый в ардуину - на каждое нажатие кнопки должен происходить один проход цикла for и в монитор порта должен выводиться номер нажатой кнопки. Код (Text): int btnPin1 = 12; int btnPin2 = 4; int state1 = 0; int state2 = 0; int getButton() { int val1 = digitalRead(btnPin1); int val2 = digitalRead(btnPin2); if (val1 == HIGH && state1 == 0) { state1 = 1; return 1; delay(50); } else { if (val1 == LOW && state1 == 1) { state1 = 0; } } if (val2 == HIGH && state2 == 0) { state2 = 1; return 2; delay(50); } else { if (val2 == LOW && state2 == 1) { state2 = 0; } } } void setup() { pinMode(btnPin1, INPUT); pinMode(btnPin1, INPUT); Serial.begin(9600); for (int i = 0; i < 10;) { int b = getButton(); if (b == 1 || b == 2) { Serial.print("I= "); Serial.print(i); Serial.print(" "); Serial.println(b); i++; } else { i = i; } } } void loop() { } И вывод: Кнопка 1 (на каждое нажатие один вывод) I= 0 1 I= 1 1 I= 2 1 Кнопка 2 (на первое же нажатие оставшаяся часть цикла, и почему то неверно) I= 3 2 I= 4 1 I= 5 1 I= 6 1 I= 7 1 I= 8 1 I= 9 1
А что должна вернуть функция getButton(), когда обе кнопки отпущены? В чем смысл куска "else { i = i; }"?
Я с программированием пока не очень дружу, так что могу допускать абсолютно дурацкие ошибки. Функция должна что то вернуть и в этом случае?