// encoder tester by jikun
#include <TM1637Display.h>
#define CLK 4
#define DIO 5
TM1637Display display = TM1637Display(CLK, DIO);
long temp, counter = 0;
const uint8_t halo[] = {
SEG_F | SEG_E | SEG_G | SEG_B | SEG_C,
SEG_F | SEG_E | SEG_A | SEG_B | SEG_C | SEG_G,
SEG_F | SEG_E | SEG_D,
SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F,
};
const uint8_t budy[] = {
SEG_F | SEG_E | SEG_D | SEG_C | SEG_G,
SEG_C | SEG_D | SEG_E,
SEG_B | SEG_C | SEG_D | SEG_E | SEG_G,
SEG_F | SEG_G | SEG_B | SEG_C | SEG_D,
};
void setup() {
Serial.begin(9600);
display.setBrightness(7);
pinMode(2, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP);
pinMode(6, INPUT_PULLUP);
attachInterrupt(0, forward, RISING);
attachInterrupt(1, backward, RISING);
display.setSegments(halo);
delay(1000);
display.setSegments(budy);
delay(1000);
display.showNumberDec(0);
}
void resetCounter() {
noInterrupts();
counter = 0;
interrupts();
}
void loop() {
if (counter != temp) {
display.showNumberDec(counter);
temp = counter;
Serial.println(counter);
}
if (digitalRead(6) == LOW) {
resetCounter();
}
}
void forward() {
if (digitalRead(3) == LOW) {
counter++;
}
else {
counter--;
}
}
void backward() {
if (digitalRead(2) == LOW) {
counter--;
}
else {
counter++;
}
}