Общая информация
Модуль энкодера Keyes KY-040
Механический датчик, преобразует угол поворота в электрические сигналы. Говоря простым языком — вал в данном датчике можно крутить в любом направлении (по часовой и против часовой стрелки) любое колич... Перейти к полному описанию
Артикул: 23869542
Модуль энкодера Keyes KY-040
Механический датчик, преобразует угол поворота в электрические сигналы. Говоря простым языком — вал в данном датчике можно крутить в любом направлении (по часовой и против часовой стрелки) любое количество раз. Данное свойство широко используется в различной электронике для наиболее точной ручной настройки различных параметров. Также данный модуль оснащен кнопкой, которая расположена под валом и активируется нажатием на него.
У датчика 5 выходов: электрические импульсы от вращения появляются на ногах CLK и DT, за кнопку отвечает выход SW, а на + и на GND подается питание (5V) и земля соответственно.
Принцип определения направления вращения следующий: при изменении сигнала CLK с высокого уровня (HIGH) на низкий (LOW), считывается состояние сигнала DT. Значение этого сигнала даст нам информацию по направлению движения.
Рассмотрим пример подключения модуля к плате Arduino UNO. По аналогии можно подключить модуль и к другим платам.
int pinDT = 3; int pinCLK = 4; int pinSW = 2; // переменные для хранения текущего и предыдущего состояния CLK int CLKCurrent, CLKLast; int DTCurrent; int SWCurrent; void setup() { Serial.begin(9600); pinMode(pinDT, INPUT); pinMode(pinCLK, INPUT); pinMode(pinSW, INPUT); } void loop() { CLKCurrent = digitalRead(pinCLK); DTCurrent = digitalRead(pinDT); //Serial.println(CLKCurrent); // произошло вращение if (CLKCurrent != CLKLast) { // чтобы узнать направления вращения, будем считывать значение DT if (DTCurrent == CLKCurrent) { // на пине DT HIGH, значит вращение произошло по часовой стрелке (CW) Serial.println("Rotated clockwise"); } else { // на пине DT LOW, значит вращение произошло по часовой стрелке (CCW) Serial.println("Rotated counterclockwise"); } } CLKLast = CLKCurrent; }