Как написать таймер без delay

Yer
Offline
Зарегистрирован: 12.02.2016

Как написать таймер без delay но время включения и отлючения можно будет менять то есть включения от 2-20 миллисекунд отключения от 50-500мс

yul-i-an
yul-i-an аватар
Offline
Зарегистрирован: 10.12.2012

вариант http://arduino.ru/
forum/programmirovanie/biblioteka-dlya-tsifrovogo-
vykh...
пост #57
Или arduino.ru/forum/programmirovanie/upravlenie-elektrokotlom-i-nasosom-otopleniya пост#26

at0mix
at0mix аватар
Offline
Зарегистрирован: 23.11.2015

http://arduino.ru/Reference/Millis

http://arduino.ru/Reference/Micros

Запоминаешь время, потом сравниваешь текущее. Если разница больше чем нужно - выполняешь функцию.

Ограничение - переполнение счетчика за 70 мин для микроса и 50 дней для миллиса. если МК должен работать в этом режиме более 50 дней делать доп-проверку на переход через 0.

yul-i-an
yul-i-an аватар
Offline
Зарегистрирован: 10.12.2012

Сейчас Уважемый at0mix Вас местные знатоки начнут учить беззнаковым вычислениям как меня в свое время.

Yer
Offline
Зарегистрирован: 12.02.2016

Спасибо за ответ но я не понял как включать определенный выход ардуино с помошю millis,

dur=pulseIn(pin1,LOW);
  Serial.print("ms:");
  Serial.println(dur/1000);
TFors1_1=dur/1000;
 
 digitalWrite(pinout,HIGH);
 delay(TFors1_1);

 digitalWrite(pinout,LOW);

вот мой код скетча хочу чтобы работал без delay 

at0mix
at0mix аватар
Offline
Зарегистрирован: 23.11.2015
      if (SetMode>0&&NextCMD>0&&PrevCMD>0)//если режим установлен в 1 или 2. Если 0 - пропускаем
      {
        buffMillis=CMDmillis[NextCMD];//вносим в буфер 
        NextMillis=millis();//читаем миллсы
        if(SetTimerMode)
        {
          CMDmillis[NextCMD]+=NextMillis-PrevMillis;//добавляем миллсы в счетчик команды
        }

        PrevMillis=NextMillis;//запоминаем время
        if (buffMillis/TimeXX!=CMDmillis[NextCMD]/TimeXX)//если число минут предыдущей записи отличается от минут текущих - выводим на экран
        {
          buffMillis=CMDmillis[NextCMD]/TimeXX;
          TimeDisplay(NextCMD,buffMillis);
        }
      }    

 

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Yer пишет:

Спасибо за ответ но я не понял как включать определенный выход ардуино с помошю millis,

Изучай, как работать с millis:

http://arduino.ru/tutorials/BlinkWithoutDelay
http://robocraft.ru/blog/arduino/385.html

Yer пишет:

вот мой код скетча хочу чтобы работал без delay

Не хотеть надо, а изучать и делать.