Кодировщик колес Arduino DUE

У меня есть Arduino, я пытаюсь отслеживать галочки на двух колесных кодерах, опрос в бесконечном цикле приводит к ужасной производительности. Есть какие-нибудь предложения?

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

, 👍0

Обсуждение

пожалуйста, добавьте свой код в сообщение ... проблема с производительностью может быть вызвана плохим кодом, @jsotola


1 ответ


1

Вы можете использовать обработчик прерываний для измерения частоты. Работает довольно хорошо.

volatile int32_t _ticks = 0;
public void FrequencyIsr()
{
    _ticks++;
}

// Add this to setup()
// Mode can be FALLING, RISING or CHANGE
attachInterrupt(digitalPinToInterrupt(pin), FrequencyIsr, mode);

// Add this to loop()
int32_t currentTime = millis();
// Clear the interrupt flag, so that we can read out the counter
noInterrupts();
int32_t ticks = _ticks;
interrupts();
// and then calculate the amount of ticks since the last update (if you need the speed)
int32_t timeDelta = currentTime - _lastTime;
int32_t tickDelta = ticks - _lastTicks;
double ticksPerMs = (double)tickDelta/timeDelta;
_lastTime = currentTime;
_lastTicks = ticks;
,