Как сбросить millis()?

Сейчас я делаю школьный проект. Там вы должны запрограммировать секундомер с помощью Arduino. Я написал программу, в которой запускается миллис. Но когда я нажимаю кнопку запуска, миллисекунды не начинаются с 0. У кого-нибудь есть идея? Пожалуйста, дайте мне знать.

Ps: я немец, поэтому прошу прощения за мой плохой английский

, 👍0


1 ответ


2

Нет. Вместо этого вы просто запоминаете, какой был millis(), когда вы нажимали кнопку запуска, а затем вычитаете это из того, что millis() показывает в любой другой момент в будущем.

,

Я только что добавил изображение своей программы, может быть, вы сможете взглянуть, @Laurentien

@Laurentien Пожалуйста... не публикуйте фотографии кода. Опубликуйте *фактический* код., @Majenko

Кстати: millis() возвращает **unsigned** long. Это будет иметь значение после 24 дней непрерывной работы. И это позволит работать вечно, даже когда этот unsigned long перевернется., @DataFiddler

@DataFiddler, но выполнение stopmillis-startmillis всегда будет возвращать правильное значение, если время между запуском и остановкой меньше 24-дневного перехода., @ratchet freak

Это перенос на 49+ дней. unsigned long позволяет millis() возвращать значение от 0 до 4 294 967 295 мс. x 1 секунда/1000 мс, x 1 минута/60 секунд, x 1 час/60 минут, x 1 день/24 часа = 49,59 дня, @CrossRoads

@ratchet freak, вы правы: расчет один и тот же, независимо от того, интерпретируется ли он без знака или со знаком, поэтому любой результирующий интервал <24,x дней будет положительным, даже если stopmillis и (в следующем периоде) startmillis станут отрицательными. Но отрицательные временные метки (и интервалы со знаком) представить труднее. :), @DataFiddler