// Định nghĩa chân điều khiển LED
int ledPins[] = {13, 15, 16, 17, 18, 19, 21, 22, 25, 26, 32, 33}; // 12 LED

void setup() {
  // Thiết lập tất cả các chân LED làm OUTPUT
  for (int i = 0; i < 12; i++) {
    pinMode(ledPins[i], OUTPUT);
  }
}

void loop() {
  // Hiệu ứng 1: LED sáng từ trái sang phải và ngược lại
  for (int i = 0; i < 12; i++) {
    digitalWrite(ledPins[i], HIGH);  // LED sáng
    delay(200);                      // Delay lâu hơn để tạo hiệu ứng chuyển động mượt mà hơn
  }
  delay(800);  

  for (int i = 11; i >= 0; i--) {
    digitalWrite(ledPins[i], HIGH);  // LED sáng ngược lại
    delay(200);                      // Delay lâu hơn để tạo hiệu ứng chuyển động mượt mà hơn
  }

  delay(800);  

  // Hiệu ứng 2: LED sáng tất cả cùng lúc rồi tắt tất cả
  for (int i = 0; i < 12; i++) {
    digitalWrite(ledPins[i], HIGH);  // Tất cả LED sáng
  }
  delay(400);  // LED sáng trong 0.4 giây
  for (int i = 0; i < 12; i++) {
    digitalWrite(ledPins[i], LOW);   // Tắt tất cả LED
  }

  delay(800);  

  // Hiệu ứng 3: LED sáng từ ngoài vào trong (hoặc ngược lại)
  for (int i = 0; i < 6; i++) {
    digitalWrite(ledPins[i], HIGH);      // LED ngoài sáng
    digitalWrite(ledPins[11 - i], HIGH); // LED ngoài bên kia sáng
    delay(400);  // Delay lâu hơn để tạo hiệu ứng chạy mượt mà hơn
  }
  delay(800); // Chờ trước khi tắt tất cả LED
  for (int i = 0; i < 12; i++) {
    digitalWrite(ledPins[i], LOW);  // Tắt tất cả LED
  }

  delay(800);  

  // Hiệu ứng 4: Sáng tắt xen kẽ (LED ngoài sáng, LED trong tắt)
  for (int i = 0; i < 6; i++) {
    digitalWrite(ledPins[i], HIGH);      // LED ngoài sáng
    digitalWrite(ledPins[11 - i], HIGH); // LED ngoài bên kia sáng
    delay(400);  
  }
  delay(800); // Chờ trước khi tắt tất cả LED
  for (int i = 0; i < 12; i++) {
    digitalWrite(ledPins[i], LOW);  // Tắt tất cả LED
  }

  delay(800);  

  // Hiệu ứng 5: LED sáng theo hình trái tim
  int heartPattern[12] = {LOW, HIGH, HIGH, HIGH, HIGH, LOW, HIGH, HIGH, HIGH, HIGH, HIGH, LOW}; // Mẫu hình trái tim
  for (int i = 0; i < 12; i++) {
    digitalWrite(ledPins[i], heartPattern[i]);  
  }
  delay(800);  
  for (int i = 0; i < 12; i++) {
    digitalWrite(ledPins[i], LOW);  
  }

  delay(800);  

  // Gọi các hiệu ứng mới
  effect4();  // Hiệu ứng nhấp nháy ngẫu nhiên
  effect5();  // Hiệu ứng LED sáng theo kiểu "nhảy múa"
  
  // Hiệu ứng đèn chớp tắt
  for (int i = 0; i < 5; i++) { 
    blinkEffect();  
  }
}

// Hiệu ứng nhấp nháy LED ngẫu nhiên
void effect4() {
  for (int i = 0; i < 12; i++) {
    int state = random(2); 
    digitalWrite(ledPins[i], state);
  }
  delay(400); 
}

// Hiệu ứng LED sáng theo kiểu "nhảy múa"
void effect5() {
  for (int i = 0; i < 12; i++) {
    digitalWrite(ledPins[i], HIGH); 
    delay(100);                      
    digitalWrite(ledPins[i], LOW);  
    delay(100);                      
  }
  delay(800); 
}

// Hiệu ứng đèn chớp tắt
void blinkEffect() {
  // Bật tất cả LED
  for (int i = 0; i < 12; i++) {
    digitalWrite(ledPins[i], HIGH);  
  }
  delay(500);  
  
  // Tắt tất cả LED
  for (int i = 0; i < 12; i++) {
    digitalWrite(ledPins[i], LOW);   
  }
  delay(500);  
}
$abcdeabcde151015202530354045505560fghijfghij