Skip to content Skip to main navigation Skip to footer

Arduino и энкодер

Описание


Энкодер – общее название устройств, преобразующих одну величину в другую. В данном случае энкодер – это устройство, преобразующее вращательное механическое движение в цифровой сигнал, а сам энкодер в этом случае называется “поворотным” (вращательным, круговым). В наборе GyverKIT идёт инкрементальный поворотный энкодер с кнопкой, который служит очень удобным органом управления для электронного устройства и заменяет сразу несколько кнопок или джойстик, обеспечивая быструю навигацию по пунктам меню и изменение настроек. По сути похож на потенциометр, но не имеет ограничения по углу поворота. Особенности данного модуля:

  • Качественный инкрементальный энкодер с кнопкой
  • 20 “щелчков” на один оборот
  • Выведено питание (5V, GND), два пина энкодера (S1, S2) и пин кнопки (KEY)
  • Работает также от 3.3V (для Wemos)
  • Все логические пины подтянуты к VCC резисторами на плате
  • RC цепи гашения дребезга на выводах энкодера

Инкрементальный энкодер выдаёт импульсные логические сигналы со своих пинов на каждый щелчок. Сигналы отличаются по фазе, что позволяет определить направление текущего щелчка.

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

Подключение


Модуль подключается на питание, логические выводы – на любые цифровые пины. В случае с Wemos – на все кроме D8, так как подтяжка к VCC помешает МК запуститься. Подключу выводы энкодера на D2 и D3, а кнопку – на D4.

 

Библиотеки


Существует несколько библиотек для работы с энкодером, например:

В примерах на этом сайте мы будем использовать EncButton, т.к. она имеет самый большой набор вариантов опроса энкодера (поворот, нажатый поворот, быстрый поворот), а также хорошо оптимизирована и поддерживает расширенную работу с кнопкой. Библиотека идёт в архиве к набору GyverKIT, а свежую версию всегда можно установить/обновить из встроенного менеджера библиотек Arduino по названию EncButton. Краткая документация находится по ссылке выше, базовые примеры есть в самой библиотеке.

Внимание! 22.08.2023 библиотека EncButton обновилась и работа с ней чуть отличается от старой версии, см. документацию по ссылке выше.

Примеры


Меняем значение переменной
/*
  Меняем значение переменной при помощи энкодера
  Обычный поворот +-1
  "Нажатый" поворот +-5
*/

#include <EncButton.h>
EncButton enc(2, 3, 4);

void setup() {
  // порт для связи
  Serial.begin(9600);
}

int val = 0;  // будем управлять этой переменной

void loop() {
  // опрос энкодера происходит тут
  enc.tick();

  if (enc.right()) {
    val += 1;
    Serial.println(val);
  }

  if (enc.left()) {
    val -= 1;
    Serial.println(val);
  }

  if (enc.rightH()) {
    val += 5;
    Serial.println(val);
  }

  if (enc.leftH()) {
    val -= 5;
    Serial.println(val);
  }
}
Меняем яркость и состояние светодиода
Войди или зарегистрируйся, чтобы видеть пример полностью!

Домашнее задание


  • Изучить остальные функции для работы с энкодером
  • Изучить примеры к библиотеке EncButton

Полезный пример?

Похожие примеры
Подписаться
Уведомить о
1 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии