#define LED_1_PIN 12 //ประกาศตัวแปรledทีขา12
#define LED_2_PIN 11 //ประกาศตัวแปรledทีขา11
#define LED_3_PIN 10 //ประกาศตัวแปรledทีขา10
#define LED_4_PIN 9 //ประกาศตัวแปรledทีขา99yh
#define BUTTON_PIN 5 //ประกาศตัวแปรbuttonทีขา5
class Led { //สร้างclassชื่อLed
private: //local
byte pin; //ประกาศตัวแปรpin
public: //global
Led(byte pin) { //กำหนดขาของclass
this->pin = pin; //เข้าถึงขาของlocalทำให้เป็นglobal
init(); //เรียกฟังก์ชั่น
}
void init() { //สร้างฟังก์ชั่นชื่อinit
pinMode(pin, OUTPUT); //กำหนดลักษณะของขาเป็นoutput
off(); //เรียกฟังก์ชั่นoff
}
void on() { //สร้างฟังก์ชั่นชื่อon
digitalWrite(pin, HIGH); //ให้หลอดไฟสว่าง(กรณีactive High)
}
void off() { //สร้างฟังก์ชั่นชื่อoff
digitalWrite(pin, LOW); //ให้หลอดไฟดับ(กรณีactive High)
}
};
class Button { //สร้างclassชื่อButton
private: //local
byte pin; //ประกาศตัวแปรpin
byte state; //ประกาศตัวแปรstate
byte lastReading; //ประกาศตัวแปรสถานะการอ่าน
unsigned long lastDebounceTime = 0;
unsigned long debounceDelay = 50;
public: //global
Button(byte pin) {//กำหนดขาของclass
this->pin = pin; //เข้าถึงขาของlocalทำให้เป็นglobal
lastReading = LOW; //กำหนดให้lastReadingมีค่าlow
init(); //เรียกฟังก์ชั่นinit
}
void init() { //สร้างฟังก์ชั่นชื่อinit
pinMode(pin, INPUT); //กำหนดลักษณะของขาเป็นinput
update(); //เรียกฟังก์ชั่นupdate
}
void update() { //สร้างฟังก์ชั่นชื่อupdate
byte newReading = digitalRead(pin); //ประกาศตัวแปรnewReadingเป็นการรับinput
if (newReading != lastReading) {
lastDebounceTime = millis();
}
if (millis() - lastDebounceTime > debounceDelay) {
state = newReading;
}
lastReading = newReading;
}
byte getState() {
update();
return state;
}
bool isPressed() {
return (getState() == HIGH);
}
};
Led led1(LED_1_PIN); //อ้างอิงคลาสLed ประกาตัวแปรled1 ขาLED_1_PIN
Led led2(LED_2_PIN); //อ้างอิงคลาสLed ประกาตัวแปรled2 ขาLED_2_PIN
Led led3(LED_3_PIN); //อ้างอิงคลาสLed ประกาตัวแปรled3 ขาLED_3_PIN
Led led4(LED_4_PIN); //อ้างอิงคลาสLed ประกาตัวแปรled4 ขาLED_4_PIN
Button button1(BUTTON_PIN);
void setup() { }
void loop() { //ลูป
if (button1.isPressed()) { //กรณีกดปุ่ม
led1.on();
led2.off();
led3.off();
led4.off();
delay(500);
led1.off();
led2.on();
led3.off();
led4.off();
delay(500);
led1.off();
led2.off();
led3.on();
led4.off();
delay(500);
led1.off();
led2.off();
led3.off();
led4.on();
delay(500);
}
else { //กรณีไม่กดปุ่ม
led1.off();
led2.off();
led3.off();
led4.off();
}
}