В первых двух частях было разобрано управление яркостью светодиода привычным нам способом: с помощью потенциометра. А затем было решено заменить его на джойстик на тот случай, если окажется под рукой именно он. Но самая важная ценность этих действий заключалась в получении новых знаний и навыков по работе с 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. При перепечатке данного материала активная ссылка на первоисточник, не закрытая для индексации поисковыми системами, обязательна.
Комментарии