Как запустить задачу и заставить ее выполняться в течение заданного периода времени?

У меня есть проект, в котором мне нужно включить соленоид 24 В на определенное время, а затем выключить его. Я новичок в Arduino и не знаю, как это сделать и с чего начать. В идеале время также должно отображаться на ЖК-экране, но это чисто эстетически. Любые советы, помощь, примеры и т. д. будут оценены по достоинству. Спасибо!

, 👍0

Обсуждение

начните с примеров скетчей, которые мигают светодиодом..... их можно найти в arduino IDE, @jsotola

В онлайн-примере есть объяснение: https://www.arduino.cc/en/Tutorial/BlinkWithoutDelay., @Jot


1 ответ


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