//rotary encoder inputs
#define inputCLK 3
#define inputDT 2
#define inputSW 1
//led inputs
#define led1 7
#define led2 8
#define led3 9
#define led4 10
#define led5 11
#define led6 12
int counter = 0;
int currentStateCLK;
int previousStateCLK;
int lastCLKvalue;
String encDirection = "";
void setup() {
// encoder pins as inputs
pinMode(inputCLK, INPUT);
pinMode(inputDT, INPUT);
pinMode(inputSW, INPUT);
// led pins as outputs
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(led6, OUTPUT);
Serial.begin(9600);
previousStateCLK = digitalRead(inputCLK);
}
void loop() {
currentStateCLK = digitalRead(inputCLK);
// if the previous and the current state are different then a pulse has occured
if (currentStateCLK != previousStateCLK) {
if(digitalRead(inputDT) != currentStateCLK){
counter --;
encDirection = "CCW"; //CCW = antiorario
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
}
else {
counter ++;
encDirection = "CW"; // CW = orario
digitalWrite(led1, HIGH);
digitalWrite(led2, LOW);
}
Serial.print(" Direction: ");
Serial.print(encDirection);
Serial.print(" -- Value: ");
Serial.print(counter);
}
previousStateCLK = currentStateCLK;
}
void readRotaryEncoder(void) {
int CLKvalue = digitalRead(inputCLK);
Serial.println(CLKvalue);
}