Уроки / Урок 3

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

Отправляем сообщения на компьютер и управляем платой командами.

Через тот же USB-кабель плата может обмениваться текстом с компьютером. Откройте Инструменты → Монитор порта и выберите скорость 115200.

const int LED = 2;
int seconds = 0;

void setup() {
  Serial.begin(115200);
  pinMode(LED, OUTPUT);
  Serial.println("Привет от ESP32! Напишите 1 или 0.");
}

void loop() {
  // читаем команды из монитора порта
  if (Serial.available()) {
    char c = Serial.read();
    if (c == '1') { digitalWrite(LED, HIGH); Serial.println("Светодиод включён"); }
    if (c == '0') { digitalWrite(LED, LOW);  Serial.println("Светодиод выключен"); }
  }

  // и раз в секунду сообщаем, сколько прошло времени
  static unsigned long last = 0;
  if (millis() - last >= 1000) {
    last = millis();
    Serial.printf("Прошло секунд: %d\n", ++seconds);
  }
}

Что здесь нового

  • Serial.available() — сколько символов пришло с компьютера; Serial.read() забирает один.
  • millis() — сколько миллисекунд прошло с включения. Проверка millis() - last >= 1000 позволяет делать что-то раз в секунду, не останавливая программу, как это делает delay().
  • Serial.printf() работает как в языке C: %d — целое число, %.2f — дробное с двумя знаками.

Нажмите на плате кнопку EN — плата перезагрузится, и в мониторе появятся служебные строки вроде rst:0x1 (POWERON_RESET). Это нормально: так ESP32 сообщает причину запуска.

Выводы GPIO1 (TX0) и GPIO3 (RX0) соединены с CH340. Если подключить к ним свою схему, пропадёт монитор порта, а иногда и прошивка.