Как исправить этот код, чтобы Arduino не реагировал на помехи? Код (Text): int val = 0; int led1 = 10; int led2 = 9; int led3 = 8; void setup() { pinMode(led1, OUTPUT); pinMode(led2, OUTPUT); pinMode(led3, OUTPUT); } void loop() { if (val == 0 && digitalRead(5) == HIGH) { val += 1; digitalWrite(led1, HIGH); } if (val == 1 && digitalRead(5) == HIGH) { val += 1; digitalWrite(led2, HIGH); } if (val == 2 && digitalRead(5) == HIGH) { val += 1; digitalWrite(led3, HIGH); } if (val == 3 && digitalRead(5) == HIGH) { val += 1; digitalWrite(led3, HIGH); } if (val == 4 && digitalRead(5) == HIGH) { val -= 4; digitalWrite(led3, LOW); digitalWrite(led1, HIGH); delay(1000); digitalWrite(led1, LOW); digitalWrite(led2, HIGH); delay(1000); digitalWrite(led2, LOW); digitalWrite(led3, HIGH); delay(1000); } }
1. Прочитайте значение кнопки в переменную, не надо каждый раз ее опрашивать. Например, так: Код (Text): boolean buttonPressed = digitalRead(5) == HIGH; if(buttonPressed) { // реагируем } 2. Воспользуйтесь библиотекой Bounce для подавления дребезга, там есть отличный пример. 3. Вместо кучи условий используйте switch: Код (Text): switch(val) { case 0: break; case 1: break; ... default: // для всех остальных случаев break; }