#define ENCODER_CLK 22
#define ENCODER_DT 23
#define ENCODER_BTN 21
#define LED_CW 18
#define LED_CCW 19
#define UP_BTN 14
#define ENTER_BTN 12
#define DOWN_BTN 13
//FAKE
//#define FAKE_UP_BTN 5
#define FAKE_ENTER_BTN 17
//#define FAKE_DOWN_BTN 16
void setup() {
Serial.begin(115200);
pinMode(ENCODER_CLK, INPUT);
pinMode(ENCODER_DT, INPUT);
pinMode(ENCODER_BTN, INPUT_PULLUP);
pinMode(LED_CW, OUTPUT);
pinMode(LED_CCW, OUTPUT);
pinMode(UP_BTN, INPUT_PULLDOWN);
pinMode(ENTER_BTN, INPUT_PULLDOWN);
pinMode(DOWN_BTN, INPUT_PULLDOWN);
//FAKE
//pinMode(FAKE_UP_BTN, OUTPUT);
pinMode(FAKE_ENTER_BTN, OUTPUT);
//pinMode(FAKE_DOWN_BTN, OUTPUT);
//FAKE
}
int lastClk = HIGH;
void loop() {
int newClk = digitalRead(ENCODER_CLK);
if (newClk != lastClk) {
// Houve uma mudança no pino CLK
lastClk = newClk;
int dtValue = digitalRead(ENCODER_DT);
if (newClk == LOW && dtValue == HIGH) {
Serial.println("Encoder CW");
digitalWrite(LED_CW, HIGH); // turn the LED on (HIGH is the voltage level)
delay(200); // wait for a 200ms
digitalWrite(LED_CW, LOW);
}
if (newClk == LOW && dtValue == LOW) {
Serial.println("Encoder CCW");
digitalWrite(LED_CCW, HIGH); // turn the LED on (HIGH is the voltage level)
delay(200); // wait for a 200ms
digitalWrite(LED_CCW, LOW);
}
}
//FAKE_ENTER_BTN
if (digitalRead(ENCODER_BTN) == LOW) {
Serial.println("FAKE_ENTER_BTN");
digitalWrite(FAKE_ENTER_BTN, HIGH);
}
else {
digitalWrite(FAKE_ENTER_BTN, LOW);
}
//FAKE_ENTER_BTN
//BTN SETUP
if (digitalRead(UP_BTN) == HIGH) {
Serial.println("UP_BTN");
delay(100);
digitalWrite(LED_CCW, HIGH); // turn the LED on (HIGH is the voltage level)
delay(100); // wait for a 200ms
digitalWrite(LED_CCW, LOW);
}
if (digitalRead(ENTER_BTN) == HIGH) {
Serial.println("ENTER_BTN");
delay(100);
digitalWrite(LED_CW, HIGH); // turn the LED on (HIGH is the voltage level)
digitalWrite(LED_CCW, HIGH);
delay(100); // wait for a 200ms
digitalWrite(LED_CW, LOW);
digitalWrite(LED_CCW, LOW);
}
if (digitalRead(DOWN_BTN) == HIGH) {
Serial.println("DOWN_BTN");
delay(100);
digitalWrite(LED_CW, HIGH); // turn the LED on (HIGH is the voltage level)
delay(100); // wait for a 200ms
digitalWrite(LED_CW, LOW);
}
}