autoua
×
Это мобильная версия форума. Перейти на обычную версию форума ×
Вход
Autoua.netФорумРадіо

Энкодер KY-040, интересная проблема

Mistreated | СуперСтар ***
Энкодер KY-040, интересная проблема
18 февраля 2019 в 09:44
Суть проблемы в следующем. Кручу энкодер - первый щелчок ничего, второй - срабатывание. Что влево, что вправо. Тоесть, иформативный каждый второй поворот энкодера. Ставил второй - без разницы. Программы разные использовал для тестирования - везде одинаковый результат. ( Подключаю к Ардуино Уно ).
El Erizo | Hombre Rayo **
Re: Энкодер KY-040, интересная проблема
[Re: Mistreated] 18 февраля 2019 в 17:46
Как он включен аппаратно (вроде есть ли RC low pass для подавления дребезга или что-то еще "необычное")? Как происходит опрос входов (просто цикл и все)? Или предусмотрено прерывание на обработку энкодера (тогда надо задействовать те немногочисленные ноги, изменение уровня на которых задает внешнее прерывание)? Потому что по описанию выглядит так, что первое действие включает опрос входов и тогда второе действие обрабатывается как должно, но пока что это не более чем фантазии, а не ответ на вопрос.

Как мне кажется, тема скорее для "Информатики и бытовой электроники", а не для "Радио" - там больше общих электронщиков и программистов, а здесь больше связисты.
Mistreated | СуперСтар ***
Re: Энкодер KY-040, интересная проблема
[Re: El Erizo] 18 февраля 2019 в 23:18
UT7UX 18.02.2019 17:46 пишет:

но пока что это не более чем фантазии, а не ответ на вопрос.

Как мне кажется, тема скорее для "Информатики и бытовой электроники", а не для "Радио" - там больше общих электронщиков и программистов, а здесь больше связисты.



Изначально проверялось на схеме синтезатора на Si5351. После обнаружения этого явления работа энкодера проверялась на простой программе проверки. Результат одинаковый.
/*
Rotary Encoder - Interrupt Example

The circuit:
* encoder pin A to Arduino pin 2
* encoder pin B to Arduino pin 3
* encoder ground pin to ground (GND)
*/

#include "Rotary.h"

Rotary r = Rotary(2, 3);

void setup() {
Serial.begin(57600);
r.begin();
PCICR |= (1 << PCIE2);
PCMSK2 |= (1 << PCINT18) | (1 << PCINT19);
sei();
}

void loop() {

}

ISR(PCINT2_vect) {
unsigned char result = r.process();
if (result == DIR_NONE) {
// do nothing
}
else if (result == DIR_CW) {
Serial.println("ClockWise");
}
else if (result == DIR_CCW) {
Serial.println("CounterClockWise");
}
}

Если изменить выводы подключения ( поменять местами ) то меняется направления отсчета, а черезшаговость остается. Оно вроде и не сильно напрягает, но непонятно с чего бы так ?
Ладно, буду копать дальше..
Autoua.netФорумРадіо

Энкодер KY-040, интересная проблема

Додаткова інформація
Модератор:

 plexmen, moderator 

0 користувачів і 16 що побажали залишитися невідомими читають цей форум.

Переглядів теми: 27391