Site icon Circuit Ideas for You

KY040 Encoder Module Circuit with Arduino

A rotary encoder is a sensor that detects rotation and direction; also people use it in volume knobs, motors, robot wheels and menu selection systems.

Arduino can read the encoder pulses and show value in serial monitor; further this project for KY040 Encoder Module Circuit with Arduino is very simple and beginner friendly.

Arduino Code:

int clk = 6;
int dt = 7;
int counter = 0;
int lastState;

void setup() {
Serial.begin(9600);
pinMode(clk, INPUT);
pinMode(dt, INPUT);
lastState = digitalRead(clk);
}

void loop() {
int currentState = digitalRead(clk);
if (currentState != lastState) {
if (digitalRead(dt) != currentState) {
counter++;
} else {
counter--;
}
Serial.println(counter);
}
lastState = currentState;
}

Coding Explanation:

Circuit Working:

KY040 Encoder Module Circuit Diagram with Arduino

Parts List:

ComponentsQuantity
Arduino Uno1
KY040 Rotatory Encoder module1
USB cable 1

Power goes from USB to Arduino and then Arduino gives 5V and GND to the rotary encoder; then encoder knob turns and makes two pulse signals on CLK and DT pins.

Furthermore, Arduino reads change on CLK and at that moment Arduino checks DT.

If DT is different from CLK clockwise and if DT is same as CLK anticlockwise, then Arduino increases or decreases counter value.

Finally, serial monitor shows the new counter value and this is how the circuit reads rotation and direction.

Formula with Calculation:

Basic formula:

angle = steps × stepAngle

where,

So when knob turns Arduino counts steps, then multiply steps by degrees per step and lastly, we get the total rotation angle from starting point.

Example:

steps = 5

stepAngle = 18°

angle = 5 × 18 = 90°

It means the knob rotated 90 degrees.

How to Build:

To build a KY040 Encoder Module Circuit with Arduino follow the below connection steps:

Conclusion:

Overall, the KY040 Encoder Module Circuit with Arduino is simple and requires only two output pins; the code also reads the pulses and displays the count.

Moreover, we can use this for menu, robot wheel, motor position and many projects and is also good for learning digital sensors and interrupts.

Exit mobile version