РАДИОСХЕМЫ



СТАРЫЙ ФОРУМ

Форум на ЭЛВО


РАДИОФОРУМЫ


СХЕМЫ И СТАТЬИ



  • Страница 1 из 1
  • 1
Архив - только для чтения
Сброс задержки перед началом задержки arduino
Сообщение # 1        
SaperEx
аватар
  Постов: 26   ОК 
Как можно вывернуться и сделать задержку, которая будет работать по принципу перезапуска при вызове задержки, до того, как она вызовет событие?

Например дошло до delay, пошел таймер отсчитывать 500мс, а тут прилетает следующее срабатывание delay, и она должна сбросить свой таймер и начать отсчитывать заного, а если delay был вызван и последующего срабатывания delay нету, то она должна дойти до 500мс и вызвать положенное ей событие

Так полагаю нужно обычный таймер вложить в тот таймер который уже есть или же можно как то обойтись другим методом?

Суть кода:
Читать каждые 50мс напряжение u1, если значение превысило то сразу записать 0, если же напряжение упало, то через 500мс записать 1, если во время того как идет отсчет 500мс, появится опять высокое напряжение, то сделать сброс счетчика на 500мс

Код

#include <MsTimer2.h>

#define MEASURE_PERIOD 500 // время периода измерения
#define R1  17.8  // сопротивление резистора R1
#define R2  5.5 // сопротивление резистора R2

const int vg    =   2;

int timeCount;  // счетчик времени
float u1;   // измеренные напряжения
float u2;   // измеренные напряжения
int onof;

void  timerInterupt() {
  timeCount++;
}

void setup() {
  Serial.begin(9600);  // инициализируем порт, скорость 9600
  MsTimer2::set(1, timerInterupt); // прерывания по таймеру, период 1 мс
  MsTimer2::start();              // разрешение прерывания
  pinMode(vg,OUTPUT);
}

void loop() {

  if ( timeCount >= MEASURE_PERIOD ) {
    timeCount= 0;

    // чтение кода канала
    u1=  ((float)analogRead(A0)) * 5. / 1024. / R2 * (R1 + R2);

if (u1 > 7.35)
{digitalWrite(vg,LOW);
onof=1;}

else
//delay(500);
{digitalWrite(vg,HIGH);
onof=0;}

// отладка, вывод значений в COM порт
Serial.print("V");
Serial.print(onof, 2);
Serial.print("-");
Serial.print(u1, 2);
Serial.print("T");
  }
}

// обработка прерывания 1 мс
  • Страница 1 из 1
  • 1
Поиск:

Внимание! Форум переехал на Tehnodium.ru



© 2010-2022 "Форум Радиосхемы". All Rights Reserved  Почта  PDA