![KY-040 360 Degree Rotary Encoder Module - With Washer and Nut KY-040 360 Degree Rotary Encoder Module - With Washer and Nut](https://hubtronics.in/image/cache/catalog/ky040-550x550.jpg)
![KY-040 360 Degree Rotary Encoder Module - With Washer and Nut KY-040 360 Degree Rotary Encoder Module - With Washer and Nut](https://hubtronics.in/image/cache/data/1591-1-550x550w.jpg)
![KY-040 360 Degree Rotary Encoder Module - With Washer and Nut KY-040 360 Degree Rotary Encoder Module - With Washer and Nut](https://hubtronics.in/image/cache/catalog/ky040-80x80.jpg)
![KY-040 360 Degree Rotary Encoder Module - With Washer and Nut KY-040 360 Degree Rotary Encoder Module - With Washer and Nut](https://hubtronics.in/image/cache/data/1591-1-80x80w.jpg)
B2B GST Credit Available
- Stock: 90 in Stock
- SKU: 01591
- Delivery Time
- Bulk & B2B RFQ
KY-040 360 Degree Rotary Encoder Module
This KY-040 Rotary Encoder based module can be used in variety of rotation encoding functions such as shaft rotation positioning, DSO controles, Digital controlled power supplies, Digital Instruments controls etc. It also has a push switch that can be used to extend functionality of this module.
Pin Out -
GND - Common
Power - 5V
SW - Push switch connection
DT - Direction
CLK - Clock
How to use?
Using this rotary encoder is straight forward, we have to monitor both CLK and DT pins simultaneously. Whenever the CLK signal changes state to RISING edge or FALLING edge, DT signal's logical state determines the direction of rotation. Each full 360 degree revolution gives 20 pulses on Clock pin.
From the image above we can deduce that,
At Falling edge of CLOCK if DT is HIGH - it indicates CW rotation, else CCW.
Arduino Sketch
int CLK = 2; // CLK Pin to Pin 2 of Arduino, EXT INT int DIR = 3; // DT Pin to Pin 3 of Arduino bool DT; // LOW -> CW, HIGH -> CCW int count = 0; void setup() { pinMode(DIR, INPUT); Serial.begin(9600); attachInterrupt(digitalPinToInterrupt(CLK),CW_Test,FALLING); } void loop() { Serial.println(DT); Serial.println(" "); Serial.println(count); delay(200); } void CW_Test(){ bool val = digitalRead(DIR); if(val == HIGH) { DT = LOW; count = count + 1; } else { DT = HIGH; count = count-1; } }
![](http://rarecomponents.com/store/image/data/1591.jpg)