Rotary Encoder

https://www.botshop.co.za/web/image/product.template/1509/image_1920?unique=43e8b3c
(0 review)

22.15 22.150000000000002 ZAR 31.64 VAT Included

27.51 VAT Included

Not Available For Sale

This combination does not exist.

Mech Module

Internal Reference: MOD-089

A rotary encoder is an electromechanical device that converts the angular position or motion of a shaft or axle to an analog or digital code. Rotary encoders are usually placed at the side which is perpendicular to the shaft. Rotary encoders act as sensors for detecting angle, speed, length, position and acceleration in the automation field.

The module can count by rotation the pulses output both clockwise and counterclockwise. Different from the potentiometer, the counting is unrestricted. It can be restored to the original state by the button on the module, i.e. counting from 0.

Application

It is widely applied in fields such as steel, harbor machinery, hoisting machinery, pressure machinery, glass machinery, packaging machinery, etc

Example Sketch & Diagram


#define clkPin 2
#define dtPin 3
#define swPin 4
int encoderVal = 0;

void setup(){
pinMode(clkPin, INPUT);
pinMode(dtPin, INPUT);
pinMode(swPin, INPUT);
digitalWrite(swPin, HIGH);
Serial.begin(9600);
}

void loop(){
int change = getEncoderTurn();
encoderVal = encoderVal + change;
if(digitalRead(swPin) == LOW)
{
encoderVal = 0;
}
Serial.println(encoderVal);
}
int getEncoderTurn(void)
{
static int oldA = HIGH;
static int oldB = HIGH;
int result = 0;
int newA = digitalRead(clkPin);
int newB = digitalRead(dtPin);
if (newA != oldA || newB != oldB)
{
if (oldA == HIGH && newA == LOW)
{
result = (oldB * 2 - 1);
}
}
oldA = newA;
oldB = newB;
return result;
}