#define ENCODER_CLK 10
#define ENCODER_DT 11
#define sw 8
int count = 0;
int lastClk = HIGH;
const int DirX = 2;
const int StepX = 3;
void setup() {
Serial.begin(115200);
pinMode(ENCODER_CLK, INPUT);
pinMode(ENCODER_DT, INPUT);
pinMode(sw, INPUT_PULLUP);
pinMode(DirX, OUTPUT);
pinMode(StepX, OUTPUT);
}
void loop() {
int newClk = digitalRead(ENCODER_CLK);
if (newClk != lastClk) {
lastClk = newClk;
int dtValue = digitalRead(ENCODER_DT);
if (newClk == LOW && dtValue == HIGH){
count++;
}
if (newClk == LOW && dtValue == LOW) {
count--;
}
}
if(digitalRead(sw) == LOW){
if(count > 0){
digitalWrite(DirX, HIGH); // กำหนดการหมุน HIGH ตามเข็มนาฬิกา - LOW ทวนเข็มนาฬิกา
}
else if(count < 0){
digitalWrite(DirX, LOW);
count = count*-1;
}
for (int n = 0; n < count*200; n++) { // loop for 200 steps 1 รอบ
digitalWrite(StepX, HIGH);
delayMicroseconds(2000); // กำหนดความเร็วในการหมุน
digitalWrite(StepX, LOW);
delayMicroseconds(2000);
}
delay(50);
count = 0;
}
Serial.println(count);
}