- 2. Характеристики
- 3 Рейтинг
- 4. Функциональный обзор
- 10. Эксплуатация устройства
 
 
- Библиотеки
 
 
 
- Операторы- Sketch
- Управляющие операторы
- Синтаксис
- Арифметические операторы
- Операторы сравнения
- Логические операторы
- Указатели доступа
- Битовые операторы
- Составные операторы
 
- Данные- Типы данных
- Преобразование типов данных
- Область видимости переменных и квалификаторы
- Утилиты
 
- Цифровой ввод/вывод
- Аналоговый вход/выход
- Расширенный ввод/вывод
- Время
- Математические функции
- Тригонометрические функции
- Символы
- Случайные числа
- Биты и байты
- Внешние Прерывания
- Прерывания
- Функции передачи данных
 
 
- Функции
 
 
- Устройства- Датчики- Энкодер
 
- Модули
 
Энкодер
Применение энкодеров с 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.
- В мониторе порта можно наблюдать текущую позицию.
- Кнопка (если есть) обрабатывается отдельным входом.





