Серийный монитор, '\r' и Realterm

serial print

Я хочу, чтобы результаты каждого из 6 ультразвуковых модулей печатались в соответствующей строке после получения новых результатов, а не выдавали непрерывный поток (см. прикрепленное изображение). Я загрузил Realterm и получил результаты, чтобы показать там, поскольку я читал, что последовательный монитор не может этого сделать, но я не знаю, где поместить синтаксис '\ r' в моем скрипте, поскольку у меня есть несколько последовательных .prints для отображения нужных мне данных.

Вот раздел для одного из ультразвуковых модулей, они просто повторяются для разных модулей.

Заранее спасибо за любую помощь!

последовательный монитор

//Расстояние до объекта впереди.
большая продолжительность1, расстояние1;
digitalWrite(trigPin1, ВЫСОКИЙ);
digitalWrite(trigPin1, LOW);
длительность1 = ИмпульсВх(эхоПин1, ВЫСОКИЙ);
расстояние1 = (длительность1/2) / 29,1;

delay(500);
если (расстояние1 >= 40){
Serial.print("Ничего впереди, хорошо");
Serial.print (расстояние1);
Serial.println("см");}
иначе если (расстояние1 <= 39 || расстояние1 >= 29){
Serial.print("Автомобиль впереди, медленно");
Serial.print (расстояние1);
Serial.println("см");}```

, 👍0


1 ответ


1

\r возвращает курсор в начало текущей строки. Вы не можете использовать его для возврата к предыдущим строкам.

Вместо этого вам нужно выучить escape-последовательности ANSI, чтобы перемещать курсор.

Например, Serial.print("\e[2J"); очистит весь экран. Serial.print("\e[1;1H"); переместит курсор в левый верхний угол экрана (координаты: \e[{Y};{X} H кстати).

Вы также можете добавить цвет и множество других приятных вещей, которые не может сделать «Последовательный монитор» Arduino IDE.

Хороший справочник по escape-кодам ANSI можно найти здесь.

,

Спасибо, Serial.print("\e[1;1H"); сработало удовольствие, @Frank Warren