Инструкции

Справочный раздел

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

Разделы инструкций

В сети

Пользователей: 177
Из них просматривают:
Аналоги: 74. Даташиты: 55. Инструкции: 3. Новости: 8. Остальное: 10. Программы: 1. Профиль пользователя: 1. Теги: 2. Торрент: 3. Форум: 19. Чат: 1.
Участников: 3
Гостей: 174

an , Google , Яндекс , далее...
Рекорд 3921 человек онлайн установлен 06.03.2026.

Партнёры


Партнёры

Новые объявления

В настоящее время нет объявлений.
Оглавление

Энкодер

Применение энкодеров с Arduino


Энкодеры часто применяются в проектах с Arduino для:

  • управления меню и параметрами (замена потенциометра и кнопок);
  • измерения скорости вращения двигателя;
  • обратной связи в системах с шаговыми и сервоприводами;
  • навигации роботов (колёсные энкодеры).



Чаще всего используются механические инкрементальные энкодеры с двумя выходами (A и B), формирующими квадратурные импульсы.

Подключение энкодера к Arduino


У стандартного механического энкодера 5 выводов:

  • GND — земля;
  • +VCC — питание (обычно 5 В, иногда 3.3 В);
  • CLK (A) — первый выход;
  • DT (B) — второй выход;
  • SW — кнопка (если энкодер с нажатием).



Схема подключения (пример для Arduino Nano):

  • CLK → D2 (прерывание)
  • DT → D3 (прерывание)
  • SW → D4 (цифровой вход)
  • VCC → 5V
  • GND → GND





// Подключение энкодера к Arduino
#define CLK 2 // выход A
#define DT 3 // выход B
#define SW 4 // кнопка

int counter = 0; // счётчик поворотов
int lastStateCLK; // предыдущее состояние
int currentStateCLK;

void setup() {
  pinMode(CLK, INPUT);
  pinMode(DT, INPUT);
  pinMode(SW, INPUT_PULLUP);

  Serial.begin(9600);

  lastStateCLK = digitalRead(CLK); }

void loop() {
  // Считываем состояние CLK
  currentStateCLK = digitalRead(CLK);

  // Если изменилось — значит энкодер повернули
  if (currentStateCLK != lastStateCLK) {
    if (digitalRead(DT) != currentStateCLK) {
      counter++; // вращение по часовой
    } else {
      counter--; // вращение против часовой
    }
    Serial.print("Позиция: ");
    Serial.println(counter);
  }
  lastStateCLK = currentStateCLK;

  // Проверяем кнопку
  if (digitalRead(SW) == LOW) {
    Serial.println("Нажата кнопка");
    delay(200); // антидребезг   }
}



Как работает скетч

  • При вращении ручки энкодера генерируются импульсы на выводах CLK и DT.
  • Код определяет направление вращения и изменяет переменную counter.
  • В мониторе порта можно наблюдать текущую позицию.
  • Кнопка (если есть) обрабатывается отдельным входом.
Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.

Разное

Интересно

Полихлорвиниловые трубки легче натянуть на изолируемые предметы (отвертки, пинцеты, радиодетали), если на 15-20 мин поместить их в ацетон.

Похожие инструкции