
KY-040 · модуль поворотного энкодера
Joy-IT · KY-040
Относительное вращение и нажатие для меню и ручных регуляторов.
Автор: SLDV LAB
Опубликовано · Обновлено
О МОДУЛЕ
Что делает KY-040
Joy-IT KY-040 — плата механического инкрементального энкодера с кнопкой нажатия. Два контактных канала дают последовательность переходов, по которой программа определяет направление и относительное перемещение. Абсолютного положения после включения модуль не сообщает.
Это модуль с разъёмом и подтягивающими резисторами, поэтому он отличается от отдельного EC11. Механические контакты дребезжат; полезны декодирование допустимых состояний, фильтрация и контроль скорости опроса. Число переходов на оборот и отношение переходов к щелчку не считаются одинаковыми у всех KY-040.
Пример выводит счётчик переходов квадратуры, не угол в градусах. Кнопка сбрасывает отсчёт.
Характеристики
- Тип
- Механический инкрементальный энкодер
- Каналы
- CLK, DT и SW
- Абсолютное положение
- Нет
- Питание модуля
- В примере Joy-IT/UNO R3 питание +V = 5 В; подтяжки задают уровни CLK/DT. На ESP32 нельзя оставлять подтяжки к 5 В: нужна подтверждённая схема на 3,3 В либо согласование каждого сигнала. Механический тип энкодера сам по себе не доказывает безопасность всей платы при 5 В.
ПРАКТИКА
Подключение

| Контакт модуля | Контакт платы | Назначение |
|---|---|---|
| CLK | D2 | Канал A Arduino UNO R3. |
| DT | D3 | Канал B. |
| SW | D4 | Кнопка; INPUT_PULLUP, нажатие LOW. |
| + | 5V | Питание подтяжек в примере UNO. |
| GND | GND | Общая земля. |
Подходит для Arduino. Выберите контакты по документации своей платы.
ВАШ ПРОЕКТ · ВАШ ДАТЧИК
Интегрируйте модуль с ChatGPT
Скопируйте запрос в ChatGPT. Укажите свою плату и среду разработки — получите подключение и код для своего проекта.
Помоги подключить KY-040 · модуль поворотного энкодера к моему проекту. Сначала уточни точную плату, её напряжение логики, среду разработки, задачу и исполнение модуля по фотографии. Базовый пример карточки рассчитан на Arduino UNO R3 с Arduino AVR Boards 1.8.6. Не переноси номера D на ESP32. Подготовь подключение, зависимости, минимальный пример, обработку входных состояний или безопасное выключение выхода и шаги проверки. Сверь каждый контакт по маркировке конкретной платы. Проверка: медленно поверните в обе стороны и нажмите вал. Направление знака зависит от подключения CLK/DT. Если нужны шаги на щелчок или угол, измерьте переходы на один оборот своего экземпляра; быстрые повороты при опросе могут пропускаться.
Библиотеки
Установите библиотеку для своей среды и откройте пример из её документации.
Что именно прописать
- Плата и ядро
Arduino UNO R3; Arduino AVR Boards 1.8.6Выберите Arduino Uno в Arduino IDE. В .ino стандартный Arduino.h подключается автоматически.
- Входы
CLK = 2; DT = 3; SW = 4UNO R3; программа опрашивает выводы без delay.
- Serial Monitor
115200Выводится относительный счётчик переходов, не число оборотов.
- Фильтр кнопки
30 мсИзмените при реальном дребезге; это настройка примера, не паспортная характеристика.
- Зависимости
Не требуютсяДекодер состояний включён в скетч.
Arduino UNO R3 · полный скетч
cppconst byte CLK = 2, DT = 3, SW = 4;
const int8_t transition[16] = {
0, -1, 1, 0, 1, 0, 0, -1,
-1, 0, 0, 1, 0, 1, -1, 0
};
byte previousAB;
long count = 0;
int lastRawButton = HIGH, stableButton = HIGH;
unsigned long buttonChangedAt = 0, lastReport = 0;
long lastReported = 0;
void setup() {
Serial.begin(115200);
pinMode(CLK, INPUT_PULLUP); pinMode(DT, INPUT_PULLUP);
pinMode(SW, INPUT_PULLUP);
previousAB = (digitalRead(CLK) << 1) | digitalRead(DT);
}
void loop() {
const unsigned long now = millis();
const byte ab = (digitalRead(CLK) << 1) | digitalRead(DT);
count += transition[(previousAB << 2) | ab];
previousAB = ab;
const int raw = digitalRead(SW);
if (raw != lastRawButton) {
lastRawButton = raw;
buttonChangedAt = now;
}
if (now - buttonChangedAt >= 30 && raw != stableButton) {
stableButton = raw;
if (stableButton == LOW) count = 0;
}
if (now - lastReport >= 100 && count != lastReported) {
lastReport = now;
lastReported = count;
Serial.print("Quadrature transitions = ");
Serial.println(count);
}
}
Полный пример для Arduino UNO R3 и API Arduino AVR Boards 1.8.6. Аппаратно не испытан. Проверка: медленно поверните в обе стороны и нажмите вал. Направление знака зависит от подключения CLK/DT. Если нужны шаги на щелчок или угол, измерьте переходы на один оборот своего экземпляра; быстрые повороты при опросе могут пропускаться.
Проекты с этим компонентом
Все проектыСвязанные проекты пока не опубликованы.


