Таймер с регулируемой задержкой времени

У меня есть светодиодная лента, и каждый светодиод должен включаться последовательно, например этот: [http:// 1.bp.blogspot.com/-CTT6yvYtdos/VihhhBItwjI/AAAAAAAAAvM/q1jbUylMMdM/s400/ezgif.com-video-to-gif.gif][1] Временная задержка между двумя последовательными светодиодами составляет ts, и это время следует регулировать снаружи с помощью кнопочного переключателя. При каждом нажатии кнопки период времени должен увеличиваться на фиксированную величину. Я уже использовал библиотеку timerOne, но она работает только с фиксированной задержкой ts. Как я могу решить эту проблему с ПЕРЕМЕННОЙ задержкой? Я предпочитаю использовать прерывания, а не опрос, так как эта система будет более сложной (будут задействованы другие кнопки и переменные). Спасибо! Фернандо

, 👍0

Обсуждение

Что касается «библиотеки timerOne [...] просто работает с фиксированной задержкой»: что заставляет вас в это верить?, @Edgar Bonet


2 ответа


1

https://github.com/PaulStoffregen/TimerOne/blob/master/TimerOne.h #L55

Определяет функцию в TimerOne под названием SetPeriod(). Это изменит период.

,

Я нашел решение с помощью функции AttachInterrupt (функция, период); внутри цикла() Другими словами, я написал петля(){ Timer1.attachInterrupt(функция,период); // остальная часть кода } где период изменяется внутри ISR, вызываемого при нажатии внешней кнопки. Большое спасибо @jose can uc!!, @fmarengo


0

Я нашел решение с помощью функции

attachInterrupt(function,period);

внутри

loop()

Другими словами, я написал

loop(){
Timer1.attachInterrupt(function,period);
// остальная часть кода
}

где «период» изменяется внутри ISR, вызываемого при нажатии внешней кнопки. Большое спасибо @jose can uc!!

,