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

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

void setup() {
  pinMode(5, OUTPUT);
  // Устанавливаем прерывание
  // Функция 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) {
      // тут что-то делаем
	  digitalWrite(5, LOW);
    }
    if (count > 1500 && count < 2400) {
      // тут что-то делаем
	  digitalWrite(5, HIGH);
    }
    if (count > 2400 && count < 6500) {
      // тут что-то делаем
	  digitalWrite(5, HIGH);
    }
    count = 0;
    old_millis = millis();
  }
}

void myEventListener() {
  flag_imp = true;
}

вот так

Виктор? Жив?
Всё еще не понимаю, но: а что будет если счётчик не досчитает до 1000 или пересчитает за 6500? Может стоит почитать про if-else и про изначальные настройки пина!?

Дак мне можно как то оставить только от 1100-1500 а потом if else

Нужно чтоб до 1100небыло минуса на пине от 1600 и больше небыло минуса~~,как~~ то так

При таком раскладе минус не появляется в диапазоне от1100 до 1600 на 5 пине,вообще ничего не появляется)

у тебя импульс всего 12 милливольт, надо его поднять до диапазона логики (усилить) в 35-40 раз
и код можно поправить так:

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

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

void loop() {
  if (flag_imp) {
    count++;
    delayMicroseconds(10);  // задержка на дребезг по переднему фронту
    flag_imp = false;
  }
  if (millis() - old_millis >= 1000) {
    // считаем импульсы
    if (count > 1100 && count <= 1500) {
      // тут что-то делаем
      digitalWrite(5, LOW);
    } else {
      digitalWrite(5, HIGH);
    }

    count = 0;
    old_millis = millis();
  }
}

void myEventListener() {
  flag_imp = true;
}

Как поднять его до диапазона логики?

существует 99 способов, а профессор говорит, что 100
LM358 к примеру, два каскада первый с усилением раз в 30 остальное добрать вторым, за ним поставить LM393, это аппаратно,
компаратор есть и в атмега 358, тогда освободить пины 5 и 6 придётся, перенести выход на 7 пин или 13 там уже светодиод есть
Схем в инет масса, всё стандартное

может поможете в атмега 358 организовать ? что нужно сделать если без lm358

а обязательно диапазон подымать .он же видит как диапазоны меняются

мне нужно чтоб шаги на осцилографе такие были?квадратные а не как сейчас?

да, очень желательно

Я еще поменял по новой,у меня ac стояло я выбрал dc сейчас

фронты хорошие, дребезга нет, но я бы оставил задержку в 10, а лучше увеличил её до 15 микросекунд
LM358, надо отсечь минусовой импульс, для этого выставить на инвертирующем входе напряжение порядка 100 милливольт

это с помошью LM358 нужно сделать?есть схема как это сделать я сьезжу куплю LM358

в интернете 100 схем, мне за тебя полезть и сюда перетащить, по резисторам подскажу какие нужны, есть? и конденсаторы тоже

Это действительно управление коробкой в машине? Импульсами 12 мВ? Вы ничего не перепутали?