Инструкции

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

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

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

В сети

Пользователей: 108
Из них просматривают:
Аналоги: 40. Даташиты: 45. Инструкции: 1. Новости: 2. Остальное: 5. Производители: 1. Профиль пользователя: 6. Форум: 7. Чат: 1.
Участников: 3
Гостей: 105

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

Разное

Интересно

Если "ревёт" один из дросселей резонансного стабилизатора, забейте деревянный клин между его катушками.

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