Как запустить задачу и заставить ее выполняться в течение заданного периода времени?
У меня есть проект, в котором мне нужно включить соленоид 24 В на определенное время, а затем выключить его. Я новичок в Arduino и не знаю, как это сделать и с чего начать. В идеале время также должно отображаться на ЖК-экране, но это чисто эстетически. Любые советы, помощь, примеры и т. д. будут оценены по достоинству. Спасибо!
@nsbman, 👍0
Обсуждение1 ответ
Используйте millis();
Запишите millis()
в переменную long
, как показано ниже, при запуске соленоида.
StartTime = millis();
чтобы выключить соленоид через 60 секунд, вы можете это сделать
if ( (millis() - StartTime)/1000 ) > 60
{
// выключаем соленоид
}
наслаждайтесь программированием.
Есть и другие способы добиться этого... но это самый простой способ, и вам не придется ждать, используя delay();
Деление — очень дорогая операция на многих Arduino. Поэтому лучше написать if (millis() - StarTtime >= 60000)
., @Edgar Bonet
Хмм.. Приятно это знать.. Но не могли бы вы объяснить, что вы подразумеваете под «дорогим», потребляет ли он больше энергии?, @AmAr
Микроконтроллеры AVR не имеют аппаратной поддержки деления, которое, таким образом, выполняется программно, постепенно, и требует довольно большого количества циклов ЦП. Потребление энергии не должно быть затронуто, если только вас это не заботит. Если вас это волнует, вы, скорее всего, большую часть времени держите процессор в спящем режиме и пробуждаете его только тогда, когда есть работа. Затем все циклы, которые вы тратите на выполнение второстепенных операций, дольше не позволяют процессору работать и потребляют энергию., @Edgar Bonet
Хмм хорошо . Спасибо за информацию, Эдгар!!, @AmAr
- Разница между «time_t» и «DateTime»
- Как найти разницу между двумя timestamp
- Как отслеживать миллисекунды в спящем режиме
- Получение кода FFT arduino для работы более 9 часов с использованием micros()
- Как эффективно закодировать долговременный таймер
- Какую наименьшую продолжительность можно измерить с помощью micros()?
- Альтернатива RDTSC для Arduino
- Невозможно ввести клавишу клавиатуры в цикл while
начните с примеров скетчей, которые мигают светодиодом..... их можно найти в arduino IDE, @jsotola
В онлайн-примере есть объяснение: https://www.arduino.cc/en/Tutorial/BlinkWithoutDelay., @Jot