#include <Wire.h>
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
Adafruit_SSD1306 display(128, 64, &Wire, 4);
#define CLK 6
#define DT 7
#define SW 8
unsigned long previousMillis = 0;
int lastClk = HIGH;
int counter = 0;
String encdir = "";
void setup() {
pinMode(CLK, INPUT);
pinMode(DT, INPUT);
pinMode(SW, INPUT);
Serial.begin(9600);
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C))
{
Serial.println(F("SSD1306 allocation failed"));
for (;;);
}
analogReference(INTERNAL);
}
void loop() {
unsigned long currentMillis = millis();
int newClk = digitalRead(CLK);
if (newClk != lastClk) {
lastClk = newClk;
int dtValue = digitalRead(DT);
if (newClk == LOW && dtValue == HIGH) {
counter++;
encdir = "Clockwise";
display.clearDisplay(); // ลบภาพในหน้าจอทั้งหมด
display.setTextColor(WHITE, BLACK); //กำหนดข้อความสีขาว ฉากหลังสีดำ
display.setCursor(22, 10); // กำหนดตำแหน่ง x,y ที่จะแสดงผล
display.setTextSize(2); // กำหนดขนาดตัวอักษร
String show = "STEP:" + String (counter);
display.println(show); // แสดงผลข้อความ
display.setTextColor(WHITE, BLACK); //กำหนดข้อความสีขาว ฉากหลังสีดำ
display.setCursor(11, 40); // กำหนดตำแหน่ง x,y ที่จะแสดงผล
display.setTextSize(2); // กำหนดขนาดตัวอักษร
display.println(encdir); // แสดงผลข้อความ
display.display();
}
if (newClk == LOW && dtValue == LOW) {
counter--;
encdir = "CounterClk";
display.clearDisplay(); // ลบภาพในหน้าจอทั้งหมด
display.setTextColor(WHITE, BLACK); //กำหนดข้อความสีขาว ฉากหลังสีดำ
display.setCursor(18, 10); // กำหนดตำแหน่ง x,y ที่จะแสดงผล
display.setTextSize(2); // กำหนดขนาดตัวอักษร
String show = "STEP:" + String (counter);
display.println(show); // แสดงผลข้อความ
display.setTextColor(WHITE, BLACK); //กำหนดข้อความสีขาว ฉากหลังสีดำ
display.setCursor(6, 40); // กำหนดตำแหน่ง x,y ที่จะแสดงผล
display.setTextSize(2); // กำหนดขนาดตัวอักษร
display.println(encdir); // แสดงผลข้อความ
display.display();
}
if (digitalRead(SW) == HIGH) {
int counter = 0;
display.clearDisplay(); // ลบภาพในหน้าจอทั้งหมด
display.setTextColor(WHITE, BLACK); //กำหนดข้อความสีขาว ฉากหลังสีดำ
display.setCursor(30, 10); // กำหนดตำแหน่ง x,y ที่จะแสดงผล
display.setTextSize(2); // กำหนดขนาดตัวอักษร
display.println("RESET"); // แสดงผลข้อความ
display.display();
}
}
}