Как работает энкодер?

Вы видимо прочитали только заголовок. Не смею Вас задерживать.

@Corp , ты катушкой случайно не натираешься по утрам?
Тебе же был дан ответ.

Что не ясно то?

Откуда этот код?

Специально написанный код для демонстрации ситуации, которая мне не ясна.

Надо же, какие хамоватые новички пошли )))

2 лайка

Согласен

Кем написанный? Если вами - то правильно ли я понял ситуацию, что вы сначала накидали в скетч операторов, которые не понимаете - а когда оказалось что они работают черти как - просите обьснить почему?
Например - почему ваш код печатает “changed” только при взведенном флаге?
Чего вы удивляетесь, что у вас changed всегда CLK=1 при таком раскладе?

Исключительно чтобы не засорять вывод. Без флага будет тоже самое, но из-за дребезга кроме описанного вывода будет ещё и много других срабатываний. при этом все равно практически всегда при повороте направо первый вывод clk=1 (дальше еще много записей ибо дребезг), а при повороте налево первый вывод clk=0 (дальше много ибо дребезг).

  1. не всегда (см. выше)
  2. flag то сбрасывается, когда на пине как раз высокий уровень, поэтому и ожидаю, что при CHANGED будет clk=0;

Я не понимаю, чего вы пытаетесь добиться в коде. Для чего вообще у вас вторая ножка энкодера?
Обычно если работают с одним прерыванием, то прерывание настраивают по одному пину, а читают в нем второй.

Какая модель энкодера у вас?

с чего вы это взяли? Посмотрите в код. У вас флаг сбрасывается в ЛУП раз в секунду, независимо от уровня

KY-040

Код для демонстрации ситуации.

в это время никто не трогает энкодер, а выводы подтянуты к +3,3В. что и выводится в Сериал (clk=1). Если ситуация меняется (по любой причине) и на ножке становится низкий уровень, ожидаю срабатвания прерывания и вывода: clk changed. clk=0

Прочитайте как работает энкодер:

когда вы поворачиваете ручку по часовой стрелке, сначала подключается вывод А, а затем вывод В. Когда вы поворачиваете ручку против часовой стрелки, сначала подключается вывод B, а затем штифт A. Отслеживая, когда каждый вывод соединяется с землей и отсоединяется от нее, можно понять в каком направлении вращается ручка.

Отслеживая изменения только CLK, понять направление невозможно.

ТС своим постом пытается уверить нас в обратном

что за бред? Вы думаете ЛУП работает только тогда, когда энкодер не трогают?

Я думаю, что когда энкодер не трогают, на пине высокий уровень.

Но когда энкодер трогают, срабатывает прерывания и да, пока обрабатывается прерывание, луп “на паузе”. Это бред?

Ни одним словом не пытался такое утверждать. Наоборот, ожидаю что

Но при этом столкнулся с описанной ситуацией. И прошу уважаемых формучан объяснить или хотя бы предположить, с чем такое может быть связано.

это бред

Первым делом выкиньте печать значения CLK из прерывания - Сериал не работает в прерывании и потому у вас черти что печатается

1 лайк