// Định nghĩa chân điều khiển LED
const int ledPins[] = {32,33,25,19,18,5,17,16,4,0,2,15 };
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 lần lượt 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(1000); // Delay 1 giây
digitalWrite(ledPins[i], LOW); // LED tắt
}
delay(500); // Thời gian chờ giữa các hiệu ứng
// 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(1000); // Delay 1 giây
for (int i = 0; i < 12; i++) {
digitalWrite(ledPins[i], LOW); // Tắt tất cả LED
}
delay(500); // Thời gian chờ giữa các hiệu ứng
// Hiệu ứng 3: LED sáng từ ngoài vào trong
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(1000); // Delay 1 giây giữa các LED
}
for (int i = 0; i < 12; i++) {
digitalWrite(ledPins[i], LOW); // Tắt tất cả LED
}
delay(500); // Thời gian chờ giữa các hiệu ứng
// 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(1000); // Delay 1 giây
for (int i = 0; i < 12; i++) {
digitalWrite(ledPins[i], LOW); // Tắt tất cả LED
}
delay(500); // Thời gian chờ giữa các hiệu ứng
// 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]); // Cập nhật LED theo hình trái tim
}
delay(1000); // Delay 1 giây
// Tắt tất cả LED
for (int i = 0; i < 12; i++) {
digitalWrite(ledPins[i], LOW); // Tắt tất cả LED
}
delay(500); // Thời gian chờ giữa các hiệu ứng
}
// Hiệu ứng 6: LED sáng lần lượt theo chiều chéo
void diagonalEffect() {
for (int i = 0; i < 12; i++) {
// Đảm bảo sáng theo đường chéo (LED[i] và LED[11-i] sáng)
digitalWrite(ledPins[i], HIGH);
digitalWrite(ledPins[11 - i], HIGH);
delay(200); // Delay 200ms giữa các LED
digitalWrite(ledPins[i], LOW); // Tắt LED
digitalWrite(ledPins[11 - i], LOW); // Tắt LED
}
delay(500); // Thời gian chờ giữa các hiệu ứng
}
// Hiệu ứng 7: LED sáng theo dạng sóng
void waveEffect() {
for (int i = 0; i < 12; i++) {
digitalWrite(ledPins[i], HIGH); // LED sáng
delay(100); // Delay 100ms
digitalWrite(ledPins[i], LOW); // LED tắt
}
delay(500); // Thời gian chờ giữa các hiệu ứng
}
// Hiệu ứng 8: LED sáng chớp tắt ngẫu nhiên
void randomBlinkEffect() {
for (int i = 0; i < 12; i++) {
int randLED = random(0, 12); // Chọn ngẫu nhiên một LED
digitalWrite(ledPins[randLED], HIGH); // Sáng LED ngẫu nhiên
delay(200); // Delay 200ms
digitalWrite(ledPins[randLED], LOW); // Tắt LED
}
delay(500); // Thời gian chờ giữa các hiệu ứng
}
// Hiệu ứng 9: LED sáng theo hình chóp (pyramid)
void pyramidEffect() {
for (int i = 0; i < 12; i++) {
// Làm sáng các LED từ giữa ra ngoài
for (int j = 0; j <= i; j++) {
digitalWrite(ledPins[j], HIGH);
}
delay(300); // Delay 300ms giữa các LED sáng
for (int j = 0; j <= i; j++) {
digitalWrite(ledPins[j], LOW);
}
}
delay(500); // Thời gian chờ giữa các hiệu ứng
}
// Hiệu ứng 10: LED sáng theo kiểu chớp tắt nhóm
void groupBlinkEffect() {
int groupSize = 3; // Kích thước nhóm (3 LED sáng cùng một lúc)
for (int i = 0; i < 12; i += groupSize) {
for (int j = i; j < i + groupSize && j < 12; j++) {
digitalWrite(ledPins[j], HIGH); // Sáng nhóm LED
}
delay(500); // Delay giữa các nhóm sáng
for (int j = i; j < i + groupSize && j < 12; j++) {
digitalWrite(ledPins[j], LOW); // Tắt nhóm LED
}
}
delay(500); // Thời gian chờ giữa các hiệu ứng
}