const int ledPins[] = {4, 5, 6, 7, 8, 9, 10, 11, 12}; // กำหนด Pin ขาออกสำหรับ LED
const int buttonPin = 2; // กำหนด Pin สำหรับปุ่มกด
int buttonState = 0; // สถานะของปุ่ม
int lastButtonState = 0; // สถานะปุ่มก่อนหน้า
int mode = 0; // โหมดการทำงาน (ควบคุมการทำงานแต่ละฟังก์ชัน)
void setup() {
// ตั้งค่าขาออกสำหรับ LED
for (int i = 0; i < 9; i++) {
pinMode(ledPins[i], OUTPUT);
}
// ตั้งค่าขาเข้าให้กับปุ่ม
pinMode(buttonPin, INPUT);
}
void loop() {
// อ่านสถานะของปุ่ม
buttonState = digitalRead(buttonPin);
// เช็คว่ามีการกดปุ่ม (transition from LOW to HIGH)
if (buttonState == HIGH && lastButtonState == LOW) {
mode++; // เพิ่มโหมดการทำงานทุกครั้งที่กดปุ่ม
if (mode > 4) {
mode = 0; // รีเซ็ตโหมดเมื่อเกิน 4
}
delay(200); // หน่วงเวลาป้องกันการกดปุ่มซ้ำ (debouncing)
}
// บันทึกสถานะปุ่มปัจจุบันเป็นสถานะก่อนหน้า
lastButtonState = buttonState;
// เรียกใช้โหมดการทำงานตามที่กำหนด
if (mode == 1) {
// โหมดที่ 1: ไฟ LED ติดทีละดวงจนครบ 9 ดวง
for (int i = 0; i < 9; i++) {
digitalWrite(ledPins[i], HIGH);
delay(200); // หน่วงเวลา 200 มิลลิวินาทีต่อหลอด
}
for (int i = 0; i < 9; i++) {
digitalWrite(ledPins[i], LOW);
}
}
else if (mode == 2) {
// โหมดที่ 2: ไฟ LED ติดสลับที่หลอด 1, 3, 5, 7
int selectedLeds[] = {0, 2, 4, 6}; // index สำหรับหลอด LED ที่จะเปิด
for (int i = 0; i < 4; i++) {
digitalWrite(ledPins[selectedLeds[i]], HIGH);
delay(200); // หน่วงเวลา 200 มิลลิวินาทีต่อหลอด
}
for (int i = 0; i < 4; i++) {
digitalWrite(ledPins[selectedLeds[i]], LOW);
}
}
else if (mode == 3) {
// โหมดที่ 3: ไฟ LED ติดทุกหลอดค้างไว้
for (int i = 0; i < 9; i++) {
digitalWrite(ledPins[i], HIGH);
}
}
else if (mode == 4) {
// โหมดที่ 4: ปิดไฟทุกหลอด
for (int i = 0; i < 9; i++) {
digitalWrite(ledPins[i], LOW);
}
}
}