Arduino Serial.ReadString() проблема
Всем привет я пишу свой код и есть некоторые проблемы. Когда я пишу на своем серийном мониторе, мое состояние зуммера не изменилось. Вы можете помочь мне понять причину. Я написал код с типом int, и он работает с функцией Serial.parseInt() правильно.
String ask="Please enter buzzer condition";
int buzzerPin=2;
String state;
void setup() {
pinMode(buzzerPin,OUTPUT);
Serial.begin(115200);
}
void loop() {
Serial.println(ask);
state=Serial.readString();
Serial.println(state);
while(Serial.available()==0){
}
if(state=="on"){
digitalWrite(buzzerPin,HIGH);
}
if(state=="off"){
digitalWrite(buzzerPin,LOW);
}
}
@Shushan Abovyan, 👍1
Обсуждение1 ответ
Лучший ответ:
Вам нужно использовать Serial.readStringUntil('\n')
вместо Serial.ReadString
, если вы используете последовательный монитор Arduino IDE (где a \n
добавляется в качестве символа завершения при нажатии клавиши enter).
Также удалите это время(Serial.available()==0)
. Он будет ждать до тех пор, пока в последовательном буфере есть какие-либо байты, и поскольку вы не делаете Serial.read()
в цикле, буфер не будет опустошен. Таким образом, если что-либо получено при вызове Serial.println(state)
или если вы отправите два символа завершения, программа застрянет в этом цикле.
- Как разделить входящую строку?
- Создание строк с символами UTF-8 из данных
- Серийный монитор, когда порт используется другим приложением
- String() против char для простого управления потоком
- Как анализировать многострочные последовательные данные с неизвестным количеством строк?
- Найдите ОК или ОШИБКУ в последовательной строке
- Новичок, изучающий Serial.readString()
- Назначение светодиодного индикатора
Какое окончание строки вы выбрали на мониторе последовательного подключения? И почему вы ждете поступления дополнительных данных **после того, как** вы прочитали строку из Serial?, @chrisl
@christl спасибо, ты действительно помогаешь мне найти свою ошибку, @Shushan Abovyan