// Pin definitie
const int clkPin = 6;
const int dtPin = 7;

// Variabele om de encoderwaarde op te slaan
int encoderValue = 0;

// Variabelen om de vorige status van de CLK en DT op te slaan
int lastClk = LOW;
int lastDt = LOW;

void setup() {
  // Stel de pinmodi in met interne pull-up weerstanden
  pinMode(clkPin, INPUT_PULLUP);
  pinMode(dtPin, INPUT_PULLUP);

  // Start de seriële communicatie
  Serial.begin(9600);

  // Lees de initiële status van de CLK en DT
  lastClk = digitalRead(clkPin);
  lastDt = digitalRead(dtPin);
}

void loop() {
  // Lees de huidige status van de CLK en DT
  int currentClk = digitalRead(clkPin);
  int currentDt = digitalRead(dtPin);
  
  // Controleer of de CLK veranderd is
  if (currentClk != lastClk) {
    // Bepaal de richting door de status van de DT te controleren
    if (currentDt != currentClk) {
      encoderValue++;
    } else {
      encoderValue--;
    }

    // Print de bijgewerkte encoderwaarde
    Serial.print("Encoder Value: ");
    Serial.println(encoderValue);
  }

  // Werk de laatste CLK status bij
  lastClk = currentClk;

  // Voeg een kleine vertraging toe om debounce te helpen
  delay(1);
}