как считать импульсы

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

Здравствуйтем на вход ардуино подается сигнал с вкючением 10мс и отключением 200мс,теперь не могу сделать так чтобы ардуино определял на сколько милисекунд вкючается импульс сигнала

long microsold = 2;
int sw=4;//выход сигнала с ардуино
volatile unsigned long micros_sp = 0; 
volatile byte sz = 0;
volatile boolean st =false;  
volatile unsigned int sp =0;
void setup() {
  // put your setup code here, to run once:
Serial.begin(9600);
        attachInterrupt(0, RPM, RISING);
pinMode(sw,OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
Serial.println(sp/1000);
  if (sz!=0){sz--;} else {sp=0;};
delay(50);

digitalWrite(sw,HIGH);
delay(10);
digitalWrite(sw,LOW);
delay(200);
}
void RPM (){
  if (!st){
    micros_sp=micros();}
   else {
    sp=(1000000/micros()-micros_sp);micros_sp=micros();}
  st=!st;
 sz=30;
}

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

А зачем две темы? Вам их надо два раза считать? :))))

Во-первых, обязательно перепостите Ваш код по правилам. Иначе невозможно его обсуждать (например, номеров строк нет).

Во-вторых, объясните толком свою проблемы. Пока я,например, не понял зачем Вам вообще считать длительности импульсов, если характеристики сигнала зарнее известны (10 и 200 мс)? Чего их считать, если Вы их и так знаете?

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

Пример скетча нашел в интернете написана для тахометра,имплуьсы подаются с датчика коленвала или с инжекторной форсункой .Чтобы туда сюда не ходит я их выдаю с самого ардуино главное хоть какой то импульс считовал.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Yer пишет:

Пример скетча нашел в интернете написана для тахометра,имплуьсы подаются с датчика коленвала или с инжекторной форсункой .Чтобы туда сюда не ходит я их выдаю с самого ардуино главное хоть какой то импульс считовал.

1. Перевыкладывать скетч по правилам я буду? Не буду. Сделайте сами.

2. Объясните наконец внято, что нужно сделать. Нужно выдать импульсы или принять? Что нужно измерить? Вы сами понимаете, что нужно сделать? Так напишите.

MacSim
Offline
Зарегистрирован: 28.11.2012

создайте переменную. импульс заведите через ногу прерывания. в лупе увеличивайте переменую, можно и по таймеру, точнее будет. при импульсе смотрите сколько в переменной, сбрасывайте ее.

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

Здравствуйте можете подробнее обяснить как в лупе или по таймеру увеличивать переменную и как его сбросить.Как все это в программе пишется меня вот это затрудняет