Считывание импульсов

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

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

Ох, ну очень хочется ответить, но не могу, опять забанят.
Нуланна высначала сформулируйтевопрос чтобыегоможнобылопона ть! Потом выложитескетч,(а ..ть поставил)чтобыегоможнобылопроверитьусебя.

1 лайк

@franhzyz
Прочитайте, плиз, первое сообщение этой темы и задайте вопрос правильно

1 лайк
  1. надо использовать прерывание
  2. по входу поставить LM393
  3. на возможный дребезг ввести задержку на разрешение прерываний после получения сигнала, задержку рассчитать исходя из макс. кол.импульсов
    PS ориентировочно 50 микросекунд

ТС считывает при помощи пульслнена(ну или рекламирует сайт), а вы ему про прерывание? :roll_eyes:

как отредактировать пост?))))

если внизу поста карандашика нет, то никак!
Измерь длительность фронта лучше, по нему можно определиться с задержкой на включение прерывания

int pin = A2;

unsigned long duration;

void setup() {

Serial.begin(9600);

pinMode(pin, INPUT);

}

void loop() {

duration = pulseIn(pin, HIGH);

Serial.println(duration);

if ((digitalRead(pin) > 1100) && (digitalRead(pin) < 1500)) {

digitalWrite(13, HIGH);

digitalWrite(2, LOW);

} else {

digitalWrite(13, LOW);

digitalWrite(2, HIGH);

}

}

ты глупости брось писать, на выходе digitalRead либо ноль либо единица

как измерять?

осциллографом, параметрами развёртки естественно, поставь 500 микросекунд к примеру

дак вот я за этим и здесь.я спкрва аналоговым считыват .потому что мультик показывает 1.1в 3в 5в .а как оказалось это импульсы.теперь пытаюсь как то настроить на цифровом

у тебя развёртка сейчас 2 миллисекунды, крути в сторону микросекунд, пока импульс не растянется на клетку

..я, они друг друга понимают?! :open_mouth:

2 лайка

Чуть чуть,я осцелограф,первый раз в руках держал когда мерял))

А понял,а потом что ?показать сюда что подучилось?для понимания,это датчик задней скорости и нейтрали на авто,я пытаюсь как то датчик ней ради сделать,я даже в Кан и в лин шинах в машине не нашел этого сигнала,а если сканер обд подключить то там его видео,когда машина на скорости когда на нейтралке

следующий этап милипильметр и циркулярка )
PS и пусть все обзавидуются

2 лайка

Мультиметр видит стабильно все,там не скачков ничего нет

держи:

bool flag_imp = false;
unsigned long old_millis;
unsigned long count;  // счетчик

void setup() {
  // Устанавливаем прерывание
  // Функция myEventListener вызовется тогда, когда
  // на 2 пине (прерываниие 0 связано с пином 2)
  // изменится сигнал c LOW на HIGH
  attachInterrupt(0, myEventListener, RISING);  // ловим LOW-HIGH
  old_millis = millis();
}

void loop() {
  if (flag_imp) {
    count++;
    delayMicroseconds(50);
    flag_imp = false;
  }
  if (millis() - old_millis >= 1000) {
    // считаем импульсы
    if (count > 1100 && count <= 1500) {
      // тут что-то делаем
    }
    if (count > 1500 && count < 2400) {
      // тут что-то делаем
    }
    if (count > 2400 && count < 6500) {
      // тут что-то делаем
    }
    count = 0;
    old_millis = millis();
  }
}

void myEventListener() {
  flag_imp = true;
}

Спасибо)сейчас буду разбираться