Работа реле на определенное время

Хочу сделать код со следующей задумкой - реле должно работать то количество времени которое я веду в Serial Monitor. Изначально я не стал подключать реле, просто хотел сделать проверку - получится ли вообще получить обратную связь, если да то думаю проблем с тем чтобы уже сделать реализацию на реле не будет. Хелпаните пожалуйста

unsigned long time_point;
byte seconds;

void setup() {
  Serial.begin(9600);
}

void loop() {
  if (Serial.available() > 0) {
    seconds = Serial.parseInt();

    if(millis() - seconds > 30000){
      seconds = millis(); 
      Serial.println("Zabor");
    }
  }
  delay(10);
}

Вы время в каких единицах измеряете?

volatile uint32_t old_millis;
int seconds;

void setup() {
  Serial.begin(9600);
  pinMode(LED_BUILTIN, OUTPUT);
  digitalWrite(LED_BUILTIN, LOW);
}


void loop() {
  if (Serial.available() > 0) {
    seconds = Serial.parseInt();
    old_millis = millis();
  }
  if (millis() - old_millis < 1000UL * seconds) {
    digitalWrite(LED_BUILTIN, HIGH);
  } else {
    digitalWrite(LED_BUILTIN, LOW);
  }
  delay(10);
}


по кд указывают в мкс по моему, но могу ошибаться.
По моему специальные ловкости позволяющие автоматические переводить в секунды по типу деления переменной на 1000 и т.д

Во первых - нахуа volatile тут? Ну во вторых - оно ж работать будет только когда что-то отправляется в сериал :smiley:

Так по сути мне и нужно чтобы работало именно в тот момент когда что то отправили.
Отправили кол во секунд в течении которых реле должно быть открыто, реле открылось потом закрылось и цикл завершился.

да ты что, не на чем проверить, мог и налажать, но не должен

Если так, значит я изначальное условие не правильно понял. Используй код @ua6em

А почему имя у переменной seconds?
И еще: какой диапазон “количества времени” Вам хотелось бы использовать?

Бум у нас писатель )))

код не хочет работать(

Читай выше, читатель!

Что выводит?

Код всегда работает в точности так, как его написали.

Код ничего не выводит
Итак попробую еще раз обьяснить чего я хочу добиться.
Я ввожу в сериал монитор значение секунд в течение которых цикл должен работать
То есть я ввожу значение к примеру 20 - значит реле должно работать 20 секунд

код работает именно в тот момент когда я что то накалякал в чат. тобишь любое сообщение в чат сопровождает включение реле на 1 секунду

Что за плата у вас? nano? Uno?

/
uno

Реле на D13 подключено при использовании кода от @ua6em ?

да тут дело не в этом, а в том что код не тот что я хотел. ты был прав и предсказал поведение реле.
Мне нужно реализовать действие реле в определленное кол во секунд которое я задаю в сериал монитор.