Импульсы от датчика холла штатного тахометра нужно подать на вход D2, желательно через оптрон или через диод (анодом к D2)
Для теста скетча предусмотрел имитацию датчика холла, на выходе D5 постоянно выходят импульсы с частотой 61Гц, для проверки этот вывод нужно соединить с выводом D2
PHP код:
//http://www.compcar.ru/forum/showpost.php?p=86448&postcount=33
//LOW — вызов прерывания по низкому уровню напряжения;
//CHANGE – прерывание вызывается при любом изменении значения на входе;
//RISING – вызов прерывания при изменении уровня напряжения с низкого (LOW) на высокий(HIGH)
//FALLING – вызов прерывания при изменении уровня напряжения с высокого (HIGH) на низкий (LOW)
#include <MsTimer2.h>
#define PinA 2
static boolean output = HIGH;
word count = 0; // счетчик импульсов
void setup()
{
Serial.begin (115200);
pinMode(5, OUTPUT); //выход ШИМ
TCCR0B = TCCR0B & 0b11111000 |5; //настроить ШИМ на частоту 61Гц
pinMode(PinA, INPUT);
digitalWrite(PinA, HIGH); // подключить подтягивающий резистор
attachInterrupt(0, int_on, RISING); // настроить прерывание interrupt 0 на pin 2
MsTimer2::set(500, flash); // таймер будет срабатывать через каждые 500ms
MsTimer2::start();//запустить таймер
}
void loop()
{
//......здесь будет код Вашей программы
analogWrite(5,10); //имитация датчика холла на пине D5
}
// обработка внешнего прерывания
void int_on()
{
count++; //увеличить счетчик
}
void flash() //обработка прерывания таймера
{
Serial.println(count*120); //посмотреть результат
count=0;//обнулить счетчик
}