#include <Arduino.h>
#include <Servo.h>
#include <Rotary.h>
#define servoPIN 9
#define inputCLK 2
#define inputDT 3
Rotary r = Rotary(inputDT, inputCLK);
// Create a Servo object
Servo myservo;
int counter = 0, servoPositionMin = 0, servoPositionMid1 = 45,
servoPositionMid2 = 90, servoPositionMid3 = 135, servoPositionMax = 180;
void handleEncoder()
{
unsigned char result = r.process();
if (result == DIR_NONE)
{
Serial.println("None");
}
else if (result == DIR_CW)
{
Serial.println("ClockWise");
counter++;
}
else if (result == DIR_CCW)
{
Serial.println("CounterClockWise");
counter--;
}
Serial.println(counter);
}
void setup()
{
// Setup Serial Monitor
Serial.begin(9600);
attachInterrupt(digitalPinToInterrupt(inputCLK), handleEncoder, CHANGE);
attachInterrupt(digitalPinToInterrupt(inputDT), handleEncoder, CHANGE);
myservo.write(servoPositionMin);
// Attach servo on pin 9 to the servo object
myservo.attach(servoPIN);
}
void loop()
{
switch (counter)
{
case 0:
myservo.write(servoPositionMin);
break;
case 2:
myservo.write(servoPositionMid1);
break;
case 4:
myservo.write(servoPositionMid2);
break;
case 6:
myservo.write(servoPositionMid3);
break;
case 8:
myservo.write(servoPositionMax);
break;
default:
break;
}
}