Кодировщик колес Arduino DUE
У меня есть Arduino, я пытаюсь отслеживать галочки на двух колесных кодерах, опрос в бесконечном цикле приводит к ужасной производительности. Есть какие-нибудь предложения?
Похоже, что у due может быть внутренний счетчик, но я не знаю, как его использовать, есть ли библиотека?
@FourierFlux, 👍0
Обсуждение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;
,
@PMF
Смотрите также:
- Чтение двух квадратурных кодировщиков с помощью одного ардуино
- Как настроить выводы ввода-вывода второго квадратурного декодера в Arduino IDE
- Сможет ли Arduino Uno считывать 3-кратные инкрементальные энкодеры?
- Счетчик времени установки
- Arduino Due vs Mega 2560
- Точность часов времени Arduino
- Регистры ввода-вывода SAM3X8E (Arduino Due)
- Считывание нескольких поворотных энкодеров
пожалуйста, добавьте свой код в сообщение ... проблема с производительностью может быть вызвана плохим кодом, @jsotola