Функция Millis() Arduino
Я хотел бы сделать обратный отсчет с помощью Arduino. Для этого я использую функцию millis(), но у меня возникла проблема: я не могу ее сбросить. Читая в интернете я прочитал, что это сделать невозможно. Так как же мне найти альтернативу этому? На практике, когда я нажимал кнопку, я начинал обратный отсчет, а когда возвращал ее на место, я переходил в режим паузы.
void inizio(){
Serial.println("INIZIO");
currentMillis1_general = millis();
total_1 = currentMillis1_general - currentMillis_general;
Serial.println(total_1);
buttonState = digitalRead(buttonPin);
if(buttonState == HIGH){
step_funzione = 1;
delay(200);
}
}
void countdown(){
Serial.println("COUNTDOWN");
display.setBrightness(7);
currentMillis_general = millis();
total_general = currentMillis_general - total_1;
if(total_general - previousMillis_general >= interval_general){
previousMillis_general += interval_general;
//previousMillis_general = currentMillis_general;
m = new_tempo/60;
s = new_tempo%60;
new_tempo--;
}
display.showNumberDec(m, true,2,0);
display.showNumberDec(s, true,2,2);
Serial.println(total_general);
buttonState = digitalRead(buttonPin);
if(buttonState == HIGH){
step_funzione = 0;
delay(200);
}
}
@user3465752, 👍0
1 ответ
Способ выполнить «Сброс» — снова установить начальное значение равным millis(). Чтобы сделать эквивалент «Паузы», вам нужен счетчик пауз. Когда вы начинаете паузу, сохраните millis() в pauseTime
. Когда вы снова возобновите работу, добавьте millis() - pauseTime
к вашему pauseCounter. Тогда ваш интервал не должен истечь до тех пор, пока millis() - pauseCounter > Interval)
.
- Использовать timer0, не влияя на millis() и micros().
- Сброс Arduino с помощью ПО (каждый день)
- Нельзя использовать millis() вместо задержки
- Использование millis() и micros() внутри процедуры прерывания
- Как сделать очень долгую функцию delay(), несколько часов
- Разница между «time_t» и «DateTime»
- Получение BPM из данного кода
- Создание таймера с использованием часов реального времени с указанием времени начала и остановки