Как зафиксировать масштаб графика в Serial Plotter Arduino?
Обновлено Редакция GAW
Плоттер Arduino IDE 2 подстраивает вертикальную ось под данные в окне (наше наблюдение): когда сигнал почти постоянный, шум растягивается на всю высоту, а при всплеске масштаб скачет. Ручной настройки шкалы в документации плоттера нет, но её легко задать самими данными.
Приём с постоянными линиями
В примере Arduino вместе с показанием потенциометра печатается постоянная переменная со значением 500 — как опорная линия. Тот же приём фиксирует масштаб: печатают две постоянные, нижнюю и верхнюю границу, и ось всегда их охватывает.
void loop() {
int raw = analogRead(A0);
Serial.print("min:0,max:1023,raw:");
Serial.println(raw);
delay(20);
}
| Данные | Нижняя граница | Верхняя граница |
|---|---|---|
| АЦП Arduino Uno, 10 бит | 0 | 1023 |
| АЦП ESP32, 12 бит | 0 | 4095 |
| Напряжение при опоре 5 В | 0 | 5 |
| Температура в комнате | 15 | 35 |
Подписи «имя:» и разделители — запятая, табуляция или пробел — описаны в документации Arduino. Если график не появляется совсем, причины разобраны в ответе «Почему Serial Plotter в Arduino IDE не показывает график».
Плоттер со своей шкалой
Онлайн-плоттер на нашем сайте читает тот же формат и позволяет задать пределы оси вручную, без лишних рядов, а также сохранить данные в CSV. Лишние ряды удлиняют строку: сколько строк в секунду проходит на выбранной скорости, считает калькулятор кадра UART, а нелинейность АЦП ESP32 у краёв диапазона показывает калькулятор АЦП ESP32.
Похожие вопросы
Не мешают ли лишние линии на графике?
Они видны как две горизонтальные прямые на краях графика и не искажают данные. Подписи вроде min и max сразу показывают, что это границы, а не измерения; в CSV и логах их легко отфильтровать по имени.
Какие пределы печатать для ESP32?
Для 12-битного АЦП ESP32 — 0 и 4095, для 10-битного АЦП Arduino Uno — 0 и 1023, для напряжения в вольтах — 0 и опорное напряжение. Можно и уже: например, 2000 и 2200, чтобы рассмотреть шум вокруг среднего значения.
Не замедлит ли это скетч?
Каждая лишняя пара «min:0,max:1023,» добавляет 15 байт в строку. Наш расчёт: на 115 200 бод это примерно 1,3 мс на строку — при частом выводе стоит поднять скорость порта.
Источники
- Arduino. Using the Serial Plotter Tool (Arduino IDE 2 documentation, Karl Söderby) — пример выводит вместе с потенциометром постоянную переменную static_variable = 500 как опорную линию; разделители — запятая, табуляция или пробел; строки заканчиваются CR LF или LF; подписи рядов — префикс «имя:»
- Arduino. arduino-serial-plotter-webapp, README — плоттер Arduino IDE 2 — веб-приложение на React и Chart.js, получает точки по WebSocket; настройки передаются параметрами URL и сообщениями, в том числе интерполяция графика
Нашли ошибку?
Смотрите также
- Плоттер COM-портаWeb Serial: графики до 8 рядов, формат Arduino, статистика, CSV
- Почему Serial Plotter в Arduino IDE не показывает график?Нет перевода строки, текст вместо чисел, другая скорость, открыт во время загрузки
- Кадр UART по битамБиты кадра, чётность, время символа, разбор и расхождение скоростей
- АЦП ESP32: ослабление и делительОслабление по напряжению, делитель, погрешность на входе, код Arduino и ESP-IDF