// Định nghĩa chân cho LED và nút bấm
const int button1Pin = 35; // Nút bấm 1
const int button2Pin = 27; // Nút bấm 2
const int ledPins[] = {17, 16, 4, 0, 2, 15}; // Các chân kết nối LED
const int numLeds = sizeof(ledPins) / sizeof(ledPins[0]);

void setup() {
  // Cấu hình chân cho nút bấm và LED
  pinMode(button1Pin, INPUT_PULLUP); // Nút bấm 1 với pull-up nội
  pinMode(button2Pin, INPUT_PULLUP); // Nút bấm 2 với pull-up nội

  for (int i = 0; i < numLeds; i++) {
    pinMode(ledPins[i], OUTPUT);
    digitalWrite(ledPins[i], LOW); // Tắt hết LED ban đầu
  }
  Serial.begin(115200); // Theo dõi trạng thái qua Serial Monitor
}

void loop() {
  // Đọc trạng thái của hai nút bấm
  int button1State = digitalRead(button1Pin);
  int button2State = digitalRead(button2Pin);

  // Xử lý nút bấm 1 (bật LED lẻ)
  if (button1State == LOW) { // Nút bấm 1 được nhấn
    turnOnOddLeds(); // Bật các LED lẻ
  } else {
    turnOffAllLeds(); // Tắt tất cả LED
  }

  // Xử lý nút bấm 2 (bật/tắt tất cả LED khi nhấn giữ)
  if (button2State == LOW) { // Nút bấm 2 được nhấn
    turnOnAllLeds(); // Bật tất cả LED
  } else if (button1State == HIGH) { // Nút bấm 2 thả ra
    turnOffAllLeds(); // Tắt tất cả LED (nếu nút 1 không bị nhấn)
  }
}

// Hàm bật các LED lẻ
void turnOnOddLeds() {
  for (int i = 0; i < numLeds; i++) {
    if (i % 2 == 0) { // Vị trí chẳn hay lẻ thì đổi số  0  bắt đầu vị trí bao nhiêu
      digitalWrite(ledPins[i], HIGH);
    } else {
      digitalWrite(ledPins[i], LOW); // Tắt LED ở vị trí khác
    }
  }
}

// Hàm bật tất cả LED
void turnOnAllLeds() {
  for (int i = 0; i < numLeds; i++) {
    digitalWrite(ledPins[i], HIGH);
  }
}

// Hàm tắt tất cả LED
void turnOffAllLeds() {
  for (int i = 0; i < numLeds; i++) {
    digitalWrite(ledPins[i], LOW);
  }
}