Модуль датчика вращения (валкодер) rotary encoder module KY-040
Характеристики энкодера KY-040
Наибольшее напряжение 5В;
Наибольший ток 10 мА;
Формат выходного сигнала: квадратурный код 2 бит;
Температура эксплуатации от -30°C до 70°C;
Число оборотов вращения энкодера при эксплуатации не менее 30 тысяч раз, нажатий на кнопку не менее 20 тысяч раз;
Сопротивление контактов 100 мОм;
Один оборот равен 24 импульсам.
Распиновка энкодера KY-040
CLK импульсы отсчета;
DT импульсы направления;
SW кнопка нажатия;
+ питание 5 V;
GND земля.
Распиновка энкодера WAVGAT Rotary Encoder Module
+5 питание;
KEY кнопка нажатия;
S1 установка значений против часовой стрелки;
S2 установка значений по часовой стрелки;
GND земля.
Принципиальная схема модуля энкодера KY-040
Схема подключения модуля энкодера KY-040 к Arduino UNO
Скетч для энкодера KY-040 подключенного к Arduino UNO
const int pin_digital_outputCLK=9; const int pin_digital_outputDT=8; const int pin_digital_outputSW=7; int counter = 0; int currentCLK; int lastCLK; String currentEnc =""; unsigned long ButtonPress = 0; void setup() { pinMode (pin_digital_outputCLK,INPUT); pinMode (pin_digital_outputDT,INPUT); pinMode (pin_digital_outputSW,INPUT); Serial.begin (9600); lastCLK = digitalRead(pin_digital_outputCLK); } void loop() { currentCLK = digitalRead(pin_digital_outputCLK); if (currentCLK != lastCLK && currentCLK == 1){ if (digitalRead(pin_digital_outputDT) != currentCLK) { counter --; currentEnc ="DE "; } else { counter ++; currentEnc ="IN "; } Serial.print(currentEnc); Serial.println(counter); } lastCLK = currentCLK; int ButtonState = digitalRead(pin_digital_outputSW); if (ButtonState == HIGH) { if (millis() - ButtonPress > 50) { Serial.println("Нажатие на кнопку"); } ButtonPress = millis(); } delay(1); }
Результат работы скетча: