#arduino #integer #arduino-uno #serial-monitor
#arduino #целое число #arduino-uno #последовательный монитор
Вопрос:
Я изучал, как использовать Arduino в течение 3 дней после учебных пособий YT. В настоящее время я изучаю ввод-вывод с последовательным монитором.
После выполнения цикла один раз последовательный монитор автоматически вводит 0 и регистрируется как ввод, затем возвращается к принятию пользовательского ввода.
Скриншот того, что я имею в виду:
Ниже приведен код:
//inputs
int blinks;
String question = "How many times would you like the LED to blink? ";
//LED
int LEDPin = 8;
//while loop
int i = 1;
//delay
int delayTime = 500;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(LEDPin, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
Serial.print(question);
//this waits for an input <while serial is empty>
while (Serial.available() == 0) {
};
//this reads the input
blinks = Serial.parseInt();
Serial.println(blinks);
//output
while (i <= blinks) {
digitalWrite(LEDPin, HIGH);
delay(delayTime);
digitalWrite(LEDPin, LOW);
delay(delayTime);
Serial.println(i);
i ;
};
i = 1;
}
Ответ №1:
Я полагаю, что последовательный порт может считывать нулевой терминатор (») или во входном буфере остается какой-то мусор.
Используйте Serial.flush()
после цикла while и посмотрите, решит ли это вашу проблему.
РЕДАКТИРОВАТЬ: я забыл упомянуть, что я бы предложил использовать SerialEvent()
(прочитайте это) вместо проверки последовательного ввода в вашем основном цикле. Этот подход более надежен, поскольку он основан на прерываниях.
Продолжайте учиться!
Комментарии:
1. я попробую. вернется для обновления, хахахха
Ответ №2:
Новое в этом. 4 часа боролся с этой проблемой.
В нижней части последовательного монитора есть флажок. Выберите значение «Нет новой строки» вместо «Новая строка», и проблема решена.
Если вы введете, например, 80. Он сохраняет значение 80 и не сбрасывает его на 0.
Да
Комментарии:
1. Это ответ. Спасибо.