Инструкции

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

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

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

В сети

Пользователей: 288
Из них просматривают:
Аналоги: 113. Даташиты: 101. Инструкции: 8. Новости: 20. Остальное: 1. Программы: 1. Профиль пользователя: 13. Советы: 1. Теги: 2. Форум: 28.
Участников: 2
Гостей: 286

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

Разное

Интересно

Не давайте детям играть с ПДУ при работающем телевизоре.
Так как, нажимая беспорядочно кнопки, можно перевести телевизор в сервисный режим и распрограммировать его микроконтроллер с ППЗУ.

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