Первые шаги · статья

Монитор порта Arduino

Монитор порта — это окно, в котором плата «разговаривает» с вами: присылает числа и сообщения, а вы читаете их на экране. Это главный инструмент, чтобы понять, что происходит внутри программы. Разберём всё с нуля: две команды, как открыть монитор, и как превратить поток чисел в наглядный график.

Зачем он нужен

У платы Arduino нет экрана. Пока программа работает правильно, это не мешает. Но стоит чему-то пойти не так — и вы вслепую гадаете: датчик сломался или код неверный? Дошла ли программа до нужного места? Монитор порта отвечает на такие вопросы. Плата отправляет текст и числа по тому же USB-кабелю, которым вы её программируете, а компьютер их показывает.

Чаще всего монитор используют, чтобы видеть показания датчика (света, температуры, расстояния) и чтобы отлаживать программу — печатать «метки» вроде «кнопка нажата» и следить за ходом выполнения.

Две команды, которые всё делают

Чтобы плата начала «говорить», в программе нужны всего две вещи. Первая — один раз в setup() открыть связь командой Serial.begin(9600). Число 9600 — это скорость обмена (бит в секунду); запомните его, оно понадобится в мониторе. Вторая — Serial.println(...) — отправить значение и перейти на новую строку. Вот полный рабочий скетч:

void setup() {
  Serial.begin(9600);          // Открываем связь с компьютером на скорости 9600.
}

void loop() {
  int value = analogRead(A0);  // Читаем напряжение на входе A0 (число 0–1023).
  Serial.println(value);       // Отправляем число на компьютер.
  delay(100);                  // Небольшая пауза: десять измерений в секунду.
}

Он десять раз в секунду читает напряжение на входе A0 и печатает число от 0 до 1023. Подключите к A0 потенциометр (крутилку) или фоторезистор — и числа начнут меняться, когда вы крутите ручку или закрываете датчик рукой. Готовый такой скетч уже есть в программе: пример AnalogReadSerial в разделе «01. Основы».

Встроенные примеры Arduino в Trema IDE: AnalogReadSerial и DigitalReadSerial для монитора порта
Пример AnalogReadSerial — в разделе «01. Основы». Откройте его, чтобы не набирать код вручную.

Шаг за шагом: как открыть монитор

  1. Подключите плату к компьютеру USB-кабелем.
  2. Выберите плату и порт в верхней панели программы.
  3. Загрузите скетч с командами Serial (например, AnalogReadSerial).
  4. Откройте монитор порта — значок терминала на панели слева.

В окне побегут строки с числами. Вверху видно состояние: порт, скорость и счётчик принятых строк. Здесь же — кнопки «Пауза» (остановить прокрутку, чтобы рассмотреть значения), «Очистить» и переключатель скорости.

Монитор порта в Trema IDE: живые показания датчика бегут строками, скорость 9600 бод
Монитор порта: реальные показания с входа A0 идут потоком. Вкладка «График» рядом превращает эти же числа в кривую.

Золотое правило: скорость в мониторе должна совпадать с числом в Serial.begin(). Если в скетче 9600, а в мониторе стоит другое значение — вместо чисел появятся «кракозябры». В Trema IDE есть кнопка «Подобрать скорость» — она угадает нужную сама.

График вместо колонки цифр

Колонка бегущих чисел мало о чём говорит. Гораздо нагляднее видеть форму сигнала: как плавно нарастает освещённость, дрожит ли значение датчика, есть ли резкие выбросы. Для этого рядом с монитором есть вкладка «График»: она рисует те же числа из Serial.println живой линией во времени.

График (плоттер) последовательного порта в Trema IDE: значения датчика в виде живой кривой
Тот же поток чисел на графике: слева — шкала значений, снизу — время. Ширину окна (сколько секунд показывать) можно менять.

Никакого отдельного кода для графика не нужно: он строится из тех же Serial.println, что и монитор. Крутите потенциометр — и кривая повторяет ваши движения.

Если что-то пошло не так

  • В мониторе пусто. Проверьте, что в setup() есть Serial.begin(), выбран правильный порт, а скетч уже загружен в плату.
  • Вместо текста «кракозябры». Скорость монитора не совпадает со скоростью в Serial.begin(). Выставьте одинаковую или нажмите «Подобрать скорость».
  • Числа не меняются. Для AnalogReadSerial это нормально, если к A0 ничего не подключено — вывод «висит» и показывает шум. Подключите потенциометр или датчик.
  • Порт занят, загрузка не идёт. Монитор держит порт открытым. Обычно программа сама освобождает его на время загрузки; если нет — закройте монитор и повторите.
  • Порта нет в списке. Это уже про драйвер или кабель — разбираемся здесь.

Вопросы

Частые вопросы о мониторе порта

Все статьи — в базе знаний, раздел «Монитор порта и график»

Монитор порта ничего не показывает

Проверьте три вещи: в setup() скетча есть Serial.begin(9600); скорость в мониторе совпадает с числом из Serial.begin; выбран правильный COM-порт. И убедитесь, что прошивка с командами Serial.println уже загружена в плату.

В мониторе «кракозябры» вместо текста

Скорость монитора не совпадает со скоростью в Serial.begin(). Поставьте одинаковое значение с обеих сторон — чаще всего используют 9600.

Можно ли смотреть данные графиком?

Да. Числа, которые скетч печатает через Serial.println, можно наблюдать в виде графика — так удобно следить за показаниями датчиков: видно не цифры, а форму сигнала.

Почему порт «занят» и загрузка не идёт?

Порт может держать другая программа — например, монитор порта в другой среде разработки. Закройте её и повторите загрузку. Плата подключается только к одной программе за раз.

Посмотрите, что чувствует ваш датчик

Скачайте Trema IDE — пример AnalogReadSerial уже внутри.