#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
const int button1Pin = 2; // ปุ่มตัวที่ 1
const int button2Pin = 4; // ปุ่มตัวที่ 2
int button1State = 0; // สถานะปุ่มตัวที่ 1
int button2State = 0; // สถานะปุ่มตัวที่ 2
void setup() {
// เริ่มต้น Serial Monitor
Serial.begin(115200);
// ตั้งค่าพินสำหรับปุ่มเป็นอินพุต
pinMode(button1Pin, INPUT);
pinMode(button2Pin, INPUT);
// เริ่มต้นการแสดงผล OLED
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // ที่อยู่ I2C ของจอ OLED คือ 0x3C
Serial.println(F("OLED initialization failed"));
while (true);
}
display.clearDisplay(); // ล้างจอ OLED
display.setTextSize(1); // กำหนดขนาดข้อความเริ่มต้น
display.setTextColor(SSD1306_WHITE); // กำหนดสีข้อความเป็นสีขาว
}
void loop() {
// อ่านสถานะของปุ่ม
button1State = digitalRead(button1Pin);
button2State = digitalRead(button2Pin);
// ถ้ากดปุ่มตัวแรก แสดงข้อความ "Start"
if (button1State == HIGH) {
display.clearDisplay(); // ล้างหน้าจอก่อนแสดงผลใหม่
display.setCursor(0, 0); // ตั้งตำแหน่งเคอร์เซอร์ที่จุดเริ่มต้น
display.setTextSize(2); // ขนาดข้อความใหญ่ขึ้น
display.println(F("Start"));
display.display(); // อัพเดตจอ OLED
}
// ถ้ากดปุ่มตัวที่สอง แสดงข้อความ "0"
if (button2State == HIGH) {
display.clearDisplay(); // ล้างหน้าจอก่อนแสดงผลใหม่
display.setCursor(0, 0); // ตั้งตำแหน่งเคอร์เซอร์ที่จุดเริ่มต้น
display.setTextSize(2); // ขนาดข้อความใหญ่ขึ้น
display.println(F("0"));
display.display(); // อัพเดตจอ OLED
}
delay(100); // หน่วงเวลาสำหรับการลดการสั่นของปุ่ม
}