согласен, залез на wokwi чтобы глянуть, а сериал не выводит для набора, что-то изменили? раньше он был ниже картинки
Что не так я сделал, где монитор порта? -
Выдыхаешь. Забываешь о том, что ранее писал и просто говоришь что-то вроде этого:
«Хотел бы что бы реле срабатывало через 50 секунд после того как я отправил команду в виде 50 сек». Или же «Реле должно срабатывать каждые N секунд, которые я задаю в в сериал».
Пиши свой вариант «хотелки».
Я хочу чтобы реле работало только определенное время которое я сам задаю
Написал первый раз 20, значит реле открыто следующие 20 сек
Написал 50, значит реле работает последующие 50 секунд и цикл завершается, до тех пор пока я опять не напишу что-то.
Ну так включай реле сразу как что то пришло из монитор порта… И флаг там же поднимай.
не совсем понял бро
у него не работает мой код, кто может проверить?
uint32_t seconds = 0, prev;
void setup() {
Serial.begin(9600);
}
void loop() {
if (Serial.available() > 0) {
seconds = Serial.parseInt();
prev = millis();
}
if(millis() - prev > (seconds * 1000)) {
seconds = millis();
Serial.println("Zabor");
}
}
delay(10);
}
Как Вы думаете, что получится в результате, если складывать миллисекунды с секундами?
Самое простое:
digitalWrite(<нужный пин>, HIGH);
delay(seconds*1000);
digitalWrite(<нужный пин>, LOW);
Попробуй этот код.
Или это:
uint32_t seconds = 0, prev;
void setup() {
Serial.begin(9600);
}
void loop() {
if (Serial.available() > 0) {
seconds = Serial.parseInt();
prev = millis();
Serial.println("Zabor Nachalo ");
}
if(millis() - prev > (seconds * 1000)) {
seconds = millis();
Serial.println("Zabor konecc”);
}
}
delay(10);
}
Проверил - светодиод включается и выключается, но временные интервалы не держит.
А мой последний?
Проверил, скобка лишняя, но суть та же интервалы не работают.
uint32_t seconds = 0, prev;
void setup() {
Serial.begin(9600);
}
void loop() {
if (Serial.available() > 0) {
seconds = Serial.parseInt();
prev = millis();
Serial.println("Zabor Nachalo ");
Serial.print(“time start: “):
Serial.println(prev):
}
if(millis() - prev > (seconds * 1000)) {
Serial.println("Zabor konecc”);
Serial.print(“time stop: “):
Serial.println(millis):
Serial.println(“vremya: “);
Serial.print((millis() - prev));
}
}
delay(10);
}
А этот?
delay(10) замаркировать
может глянишь на wokwi чего монитор не открывается?
10 миллисекунд «погоды не делает»…
Попробовал, ошибки исправил - не работает как надо. Пойду спать, завтра под настроение попробую без этих Serial.parseInt();
Да я тоже пожалуй пойду…
кстати вполне возможно что ошибка была связана с этим.
установил при включении отработать 20 секунд, в эмуляторе всё пучком