Как исправить код, чтобы он считывал текст с последовательного монитора?
Я создал код, который должен распечатать "Введите true, чтобы отключить тревогу" в последовательном мониторе, затем сохранить ответ пользователя и напечатать "alarm off", если они вводят true и "alarm on" в противном случае. Тем не менее, он возвращает "alarm on" каждый раз, даже если я ввожу true. Вот мой код:
String deactivate = "";
void setup() {
Serial.println("Enter \"true\" to deactivate alarm");
}
void loop() {
while (Serial.available() == 0){}
deactivate = Serial.readString();
if (deactivate.equals("true"))
{
Serial.println("alarm off");
}
else
{
Serial.println("alarm on");
}
}
Любая помощь здесь была бы очень признательна, я новичок в Arduino, и мы застряли на этом шаге в течение нескольких недель; Я просто в растерянности, пытаясь понять, почему это не работает.
@Jillian, 👍2
2 ответа
Вы не установили последовательный
порт:
Serial.begin(9600);
Добавьте это в функцию настройки
.
Также проверьте на своем последовательном мониторе, равны ли скорости.
Если это все еще не работает, выведите переменную deactivate
после назначения, ее длину и каждый символ, чтобы увидеть, добавляет ли она символ новой строки или любой другой неожиданный символ.
Затем, если это символ пробела, используйте функцию для удаления пробела или изменения сравнения.
Часто кодеры добавляют "отладочные" операторы печати, чтобы помочь понять, что происходит в их коде. Распечатка того, что вы получили, может помочь понять неожиданные результаты.
Тем не менее, рассмотрите возможность использования Serial.readStringUntil() вместо Serial.ReadString(). Со страницы, на которую дана ссылка:
ВОЗВРАТ
Вся строка считывается из последовательного буфера, вплоть до символа терминатора
- Как разделить входящую строку?
- Как вывести несколько переменных в строке?
- форматирование строк в Arduino для вывода
- Очень простая операция Arduino Uno Serial.readString()
- Чтение из Serial
- Arduino Преобразование std:string в String
- Как прочитать входящие ШЕСТНАДЦАТИРИЧНОЕ значение из serial метод read ()?
- Arduino Serial.ReadString() проблема