#include <SoftwareSerial.h>

// Настройка программного UART: RX=GPIO14 (D5), TX=GPIO12 (D6)


int counter = 0;           // Текущее значение счётчика
bool countUp = true;       // Флаг направления счёта
unsigned long lastSend = 0; // Время последней отправки

void setup() {
  Serial.begin(9600);      // Для отладки через USB

}

void loop() {
  // 🔹 Приём команд от ESP32
  if (Serial.available() > 0) {
    char cmd = Serial.read();
    if (cmd == 'U' || cmd == 'u') {
      countUp = true;      // Команда "считать вверх"
    } 
    else if (cmd == 'D' || cmd == 'd') {
      countUp = false;     // Команда "считать вниз"
    }
  }

  // 🔹 Отправка значения счётчика каждую секунду
  if (millis() - lastSend >= 1000) {
    // Формируем строку из 3 символов (например: "  5", " 42", "100")
    char buf[4];
    sprintf(buf, "%3d", counter);
    
    Serial.print(buf);   // Отправляем на ESP32

    
    // Обновляем счётчик
    if (countUp) {
      counter = (counter >= 100) ? 0 : counter + 1;
    } else {
      counter = (counter <= 0) ? 100 : counter - 1;
    }
    
    lastSend = millis();
  }
  
  delay(10); // Небольшая задержка для стабильности SoftwareSerial
}