Инструкции

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

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

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

В сети

Пользователей: 179
Из них просматривают:
Аналоги: 75. Даташиты: 35. Инструкции: 5. Новости: 3. Остальное: 3. Профиль пользователя: 9. Форум: 49.
Участников: 3
Гостей: 176

MACTEP , Google , Яндекс , далее...
Рекорд 2375 человек онлайн установлен 26.12.2015.

Партнёры


Партнёры

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

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

Энкодер

Применение энкодеров с 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.
  • В мониторе порта можно наблюдать текущую позицию.
  • Кнопка (если есть) обрабатывается отдельным входом.
Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.

Разное

Интересно

Во время ремонта телевизора не ставьте настольную лампу на его корпус.
Она обязательно упадёт и отобьёт горловину кинескопа.

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