#include <Arduino.h>
#include <ezButton.h> // The library to use for SW pin
#define CLK_PIN 2 // Pin pro CLK
#define DT_PIN 11 // Pin pro DT
#define SW_PIN 12 // Pin pro tlačítko
#define DIRECTION_CW 0 // Směr hodinového ručičkového otáčení
#define DIRECTION_CCW 1 // Směr proti hodinovému ručičkovému otáčení
int counter = 0;
int direction = DIRECTION_CW;
int CLK_state;
int prev_CLK_state;
ezButton button(SW_PIN);
void setup() {
Serial.begin(9600);
// Konfigurace pinů jako vstupy
pinMode(CLK_PIN, INPUT);
pinMode(DT_PIN, INPUT);
button.setDebounceTime(50); // Nastavení debounce času na 50 ms
// Načtení počátečního stavu CLK
prev_CLK_state = digitalRead(CLK_PIN);
}
void loop() {
button.loop(); // Povinné zavolání funkce loop()
// Načtení aktuálního stavu CLK
CLK_state = digitalRead(CLK_PIN);
// Kontrola změny stavu CLK
if (CLK_state != prev_CLK_state && CLK_state == HIGH) {
// Změna počtu na základě stavu DT
if (digitalRead(DT_PIN) == HIGH) {
if (counter < 90) {
counter++; // Otočení doprava
}
} else {
if (counter > 0) {
counter--; // Otočení doleva
}
}
// Výpis směru otáčení a počtu
Serial.print("Twisted direction: ");
Serial.print(" - counter: ");
Serial.println(counter);
}
// Uložení posledního stavu CLK
prev_CLK_state = CLK_state;
// Kontrola stisknutí tlačítka
if (button.isPressed()) {
Serial.println("RESET");
counter = 0; // Resetování počitadla
}
delay(10); // Volitelné zpoždění pro stabilitu
}