#include <ezButton.h>
#define CLK_PIN 8
#define DT_PIN 9
#define SW_PIN 10
#define GREEN_LIGHT 7
#define RED_LIGHT 6
#define BLUE_LIGHT 5
#define DIRECTION_CW 0
#define DIRECTION_CCW 1
int counter = 0;
int direction = DIRECTION_CW;
int CLK_state;
int prev_CLK_state;
int Led = 13;
int Shock = 12;
int val;
ezButton button(SW_PIN);
void setup() {
Serial.begin(9600);
pinMode(GREEN_LIGHT, OUTPUT);
pinMode(RED_LIGHT, OUTPUT);
pinMode(BLUE_LIGHT, OUTPUT);
pinMode(CLK_PIN, INPUT);
pinMode(DT_PIN, INPUT);
button.setDebounceTime(50);
prev_CLK_state = digitalRead(CLK_PIN);
pinMode(Led, OUTPUT);
pinMode(Shock, INPUT);
}
void loop() {
button.loop();
CLK_state = digitalRead(CLK_PIN);
if (CLK_state != prev_CLK_state && CLK_state == HIGH) {
if (digitalRead(DT_PIN) == HIGH) {
counter --;
direction = DIRECTION_CCW;
}
else {
counter ++;
direction = DIRECTION_CW;
}
Serial.print("DIRECTION: ");
if (direction == DIRECTION_CW) {
Serial.print("Clockwise");
digitalWrite(GREEN_LIGHT, HIGH);
digitalWrite(RED_LIGHT, LOW);
digitalWrite(BLUE_LIGHT, LOW);
}
else {
Serial.print("Counter-clockwise");
digitalWrite(RED_LIGHT, HIGH);
digitalWrite(GREEN_LIGHT, LOW);
digitalWrite(BLUE_LIGHT, LOW);
}
Serial.print(" | COUNTER: ");
Serial.println(counter);
}
prev_CLK_state = CLK_state;
if (button.isPressed()) {
Serial.println("The button is pressed");
digitalWrite(BLUE_LIGHT, HIGH);
digitalWrite(GREEN_LIGHT, LOW);
digitalWrite(RED_LIGHT, LOW);
}
val = digitalRead(Shock);
if (val == HIGH){
digitalWrite(Led, LOW);
}
else{
digitalWrite(Led, HIGH);
}
}