Показать сообщение отдельно
  #129  
Старый 14.08.2019, 03:25
NikKulik NikKulik вне форума
Новичок
 
Регистрация: 11.08.2019
Адрес: USSR
Сообщений: 5
По умолчанию

Импульсы собираю по attachInterrupt(1,sensSPD,RISING); // Спедометр - подключить прерывание на 3 пин при повышении сигнала. Spedometer
void sensSPD(){
SPDimpulse++;
}
А скорость обрабатываю по таймеру 1 раз в 50мс, это 20 раз в секунду.
MsTimer2::set(50,TimerSPD);//500ms period (1000ms=1s)
MsTimer2::start(); // MsTimer2::stop() отключает прерывание.

void TimerSPD(){
//round(SPDimpulse); //1.66); //округление: round() - ... в ближайшую сторону; ceil() - ... вверх; floor() - ... вниз.
//speedometer=round(SPDimpulse/0.94/2);
//speedometer=round(SPDimpulse/1.66);
speedometer=round(SPDimpulse/0.94/2*10);
SPDimpulse=0;
}

Скорость считает, но периодически виснет и не знаю что уже с этим делать... могу прислать весь код или попробую сюда скинуть - может что подскажите?
Ответить с цитированием