Взаимозаменяем потенциометр, джойстик и энкодер в схемах на Arduino (Часть III)

12 января 2021

В первых двух частях было разобрано управление яркостью светодиода привычным нам способом: с помощью потенциометра. А затем было решено заменить его на джойстик на тот случай, если окажется под рукой именно он. Но самая важная ценность этих действий заключалась в получении новых знаний и навыков по работе с Arduino!

Давайте же приступим к следующему модулю — энкодеру.

Приветствую всех читателей блога магазина Amperkot.ru. Это третья часть цикла статей про взаимозамену потенциометра, джойстика и энкодера в различных схемах. Рекомендую прочитать первые две, чтобы быть в курсе, о чем идет речь:

Ссылка на первую часть: https://amperkot.ru/blog/arduino-potentiometer-1

Ссылка на вторую часть: https://amperkot.ru/blog/arduino-potentiometer-2

В первых двух частях было разобрано управление яркостью светодиода привычным нам способом: с помощью потенциометра. А затем было решено заменить его на джойстик на тот случай, если окажется под рукой именно он. Но самая важная ценность этих действий заключалась в получении новых знаний и навыков по работе с Arduino!

Давайте же приступим к следующему модулю — энкодеру. В первой части я описывал кратко его устройство:


Энкодер — это уже крутилка с ручкой и кнопкой, но важным изменением в практическом смысле является то, что у потенциометра диапазон вращения ручки ограничен минимальным и максимальным значениями, а у энкодера ручка вращается безостановочно все стороны. В теоретическом плане тоже есть отличие — при изменении угла поворота ручки энкодера меняются значения двух сигналов, генерируемых устройством на выходах DT и CLC. Они сообщают контроллеру о направлении и скорости вращения ручки.

Для начала разберемся с подключением к нашей схеме. Существует два распространенных типа энкодеров: без обвязки (а) и с обвязкой (б) в качестве готового модуля на плате.

а) Просто энкодер

б) Готовый модуль с обвязкой KY-040


Обвязка энкодера заключается во встроенных подтягивающих резисторах и RC фильтрах (резистор + конденсатор) для устранения дребезга контактов аппаратным путём и устранения "шума" в значениях по аналоговому сигналу. Также подтягивающие резисторы могут обезопасить пины Arduino от короткого замыкания. Если же перед нами “голый” модуль, то берем в руки электронные компоненты, макетную плату (паяльник) и ... дальше всё по схеме.

Схемы подключения для обоих случаев приведены ниже:

а)

б)

Программирование

В этом и последующем случаях писать код для схем с использованием энкодера будем, опираясь на библиотеку “RotaryEncoder.h” (скачать можно тут).

В интуитивном смысле ничего принципиально нового мы здесь не увидим, кроме некоторые новых функций из свежеподключенной библиотеки RotaryEncoder.h (подключение происходит через директиву #include в самом начале кода).

Среди них:

1) Функция присвоения имени энкодеру: RotaryEncoder <имя> (номер пина для контакта DT, номер пина для контакта CLK);

2) Функция установки начального положения энкодера: <имя>.setPosition (<положение энкодера>);

3) Функция проверки положения энкодера .tick();

4) Функция смены значения энкодера (при вращении его ручки) .getPosition()

Весь остальной код содержит уже знакомые слова: через #define вводятся новые константы, хранящие значения, которыми удобно будет оперировать в процессе настройки энкодера (установка шага, максимальной и минимальной позиции), а после следуют два условия, где при каждой смене позиции ручки энкодера изменяется значение переменной lastPos, которая в конечном итоге и отвечает за яркость светодиода. Весь код приведен ниже:


Вообще, как автор, я рекомендую самому писать код, вписывать все эти символы и слова в среду разработки, чтобы запомнить синтаксис и функции.

Понимаю также и тех, кто во всем этом разбирается и хочет усовершенствовать код под свои нужды: для экономии времени, а также по той причине, что в магазине Амперкот.ру ценят каждого клиента, я оставлю ссылку на скачивание скетча вот тут.

Заключение

На этом всё! Задавайте вопросы и оставляйте пожелания в комментариях под этой статьей. Желаю удачи и успешной компиляции:)


Данная статья является собственностью Amperkot.ru. При перепечатке данного материала активная ссылка на первоисточник, не закрытая для индексации поисковыми системами, обязательна.


Поделиться: