Инструкции

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

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

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

В сети

Пользователей: 178
Из них просматривают:
Аналоги: 90. Даташиты: 47. Инструкции: 6. Новости: 4. Остальное: 5. Производители: 2. Профиль пользователя: 2. Теги: 2. Торрент: 2. Форум: 18.
Участников: 2
Гостей: 176

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

Разное

Интересно

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

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