операторы if else
- Войдите на сайт для отправки комментариев
Ср, 11/09/2019 - 11:26
Доброго времени суток. Только начинаю работать с Arduino. Есть вот такой скетч (для работы через консоль)
byte val; void setup() { Serial.begin(9600); } void loop() { if (Serial.available()) { val = Serial.parseInt(); if (val == 1) { Serial.println("You enter 1"); } else if (val == 2){ Serial.println("You enter 2"); } else if (val == 3){ Serial.println("You enter 3"); } else if (val == 4){ Serial.println("You enter 4"); } else if (val == 5){ Serial.println("You enter 5"); } else { Serial.println("Error"); } } }
После компиляции при введении в консоль цифры от 1 до 5 имеет вывестись соответствующее сообщение, а если ввести что-то другое то выбьет ошибку. Но в моем случае результат на картинке (оператор else выполняется в любом случае). Буду искренне благодарен за подсказку.
Как я понимаю если быстро вводить нужную цифру то ошибка не выполняется. А если ввести цифру и подождать то освещается "Error". Я понимаю что в функции Loop все выполняется бесконечно. Поэтому скажите это нормальная реакция?
прочитайте соседнюю тему до конца
http://arduino.ru/forum/programmirovanie/ne-mogu-ostanovit-serialreadstringuntil
И вообще хороший тон - это сначала поискать на форуме похожие вопросы, а уже потом постить свой
Не выполняется, если введено число. Чтобы убедиться в этом, поставьте Печать чего-нибудь между строками №№ 6 и 7 и сразу увидите, что на самом деле числе и Error печатаются в разные проходы loop.
Ваш error печатается тогда, когда в Serial что-то есть, но это что-то не является нужным Вам числом.
Спасибо буду знать.
распечатайте переменную val после parseInt() как вы говорите в "консоль"