#include <Arduino.h>
// ================== คลาส LED ===================
class Led {
private:
byte pin; // ขาที่เชื่อมต่อกับ LED
public:
Led(byte pin) { // Constructor
this->pin = pin;
pinMode(pin, OUTPUT);
off(); // เริ่มต้นด้วยการปิด LED
}
void on() {
digitalWrite(pin, HIGH); // เปิด LED
}
void off() {
digitalWrite(pin, LOW); // ปิด LED
}
};
// ================== คลาส Button ===================
class Button {
private:
byte pin; // ขาที่เชื่อมต่อกับปุ่ม
byte state; // สถานะของปุ่ม
byte lastReading; // เก็บค่าการอ่านล่าสุด
unsigned long lastDebounceTime = 0;
unsigned long debounceDelay = 50; // ดีเลย์สำหรับ Debounce
public:
Button(byte pin) {
this->pin = pin;
lastReading = LOW;
pinMode(pin, INPUT);
update();
}
void update() {
byte newReading = digitalRead(pin);
if (newReading != lastReading) {
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > debounceDelay) {
state = newReading;
}
lastReading = newReading;
}
byte getState() {
update();
return state;
}
bool isPressed() {
return (getState() == HIGH);
}
};
// ================== กำหนดค่าขา ===================
#define LED_1_PIN 9
#define LED_2_PIN 10
#define LED_3_PIN 11
#define LED_4_PIN 12
#define BUTTON_PIN 5
// ================== สร้างออบเจ็กต์ ===================
Led led1(LED_1_PIN);
Led led2(LED_2_PIN);
Led led3(LED_3_PIN);
Led led4(LED_4_PIN);
Button button1(BUTTON_PIN);
// ================== ฟังก์ชัน setup ===================
void setup() {
}
// ================== ฟังก์ชัน loop ===================
void loop() {
if (button1.isPressed()) {
led1.on();
led2.off();
led3.on();
led4.off();
} else {
led1.off();
led2.on();
led3.off();
led4.on();
}
}