Почему срабатывает else?
- Войдите на сайт для отправки комментариев
Ср, 07/08/2019 - 02:35
Всем привет. Только начал разбираься с ардуино, но не могу зажечь диод с помощью клавиатуры. Точнее он зажигается. Но сразу же тухнет. Потому что циклы loop выполняется повторно, данные из порта не приходят и срабатывает else.
Но ведь я пишу условие Serial.available() > 0, которое вроде как не должно пустить программу внутрь условия.
Помогите плз разобраться. Вот мой код:
int led = 13;
void setup() {
pinMode(led, OUTPUT);
Serial.begin(9600);
}
void loop(){
if(Serial.available() > 0){
char i = Serial.read();
Serial.println(i);
if(i == '1'){
digitalWrite(led, HIGH);
}else{
digitalWrite(led, LOW);
}
}
}
потому что при отсылке символа '1' вы нажимаете на клавиатуре "Enter", а эта клавиша тоже имеет код, котрый передается на Ардуину. Вот этот служебный код ваш диод и гасит
Потому что еще отправляется символ перевода строки
Спасибо за отклик. Попробовал нажимать "отправить" в мониторе порта, но ситуация та же
О, всем спасибо. Нашел... У меня в выпадающем списке в мониторе порта, стояло NL (новая строка)
О, всем спасибо. Нашел... У меня в выпадающем списке в мониторе порта, стояло NL (новая строка)
не самое лучшее решение. Правильнее было бы чуть поменять код, чтобы нагрузка включалась символом "1", а выключалась, к примеру, "0" - и это будет работать независимо и от перевода строк, и от любого другого "мусора" в линии