Оригинал взят у
elchupanibrei в
Маленькая и быстрая библиотека для энкодераДавно хотел разобраться с крутилкой и наконец нашлось время и желание. В паутине нашел три метода обработки
кода грея для экодра.
Первый самы тупой с и пользованием кучи if else и програмным debounce отжирающим ресурсы процессора.
Второй на основе таблицы состояний энкодера. Он намного-о-о резвее первого и ему не нужен прогаммный подавитель дребезга контактов. Его недостаток в том, что часть памяти съедается массивом состояний, а драгоценные такты расходуются на обращение к этому масиву.
Самы продвинутый - это расчет состяния таблицы на лету с помощью
булевой алгебры без применения тежелых вычислений и замена всех if else на более быстрый switch case. Именно так и сделано в библиотеке. Может работать с прерываниями и без.
Рекрмендую добавить два конденсатора по 0.1мкФ как показанно на картинке
Если купить популярный шилд KY-040 то резисторы допаивать не надо, они уже есть на плате. Энкодер установленный на шилде делает 4 пульса на клик и 20 кликов на один оборот.
Потом добавлю больше информации по всем трем методам.
Забирать как всегда
тут.