// Định nghĩa các chân GPIO kết nối với các LED
const int ledPins[] = { 0, 16, 2, 4, 15, 17, 5, 18, 19, 33, 25, 26, 33 }; // Chân GPIO kết nối với các LED
const int numLEDs = 12; // Tổng số lượng LED
void setup() {
// Thiết lập tất cả các chân LED là OUTPUT
for (int i = 0; i < numLEDs; i++) {
pinMode(ledPins[i], OUTPUT);
}
}
void loop() {
// Hiệu ứng 1: Nhấp nháy liên tiếp
blinkSequence();
// Hiệu ứng 2: LED chạy đuổi
chasingEffect();
// Hiệu ứng 3: Sóng
waveEffect();
// Hiệu ứng 4: Nhấp nháy ngẫu nhiên
randomBlink();
// Hiệu ứng 5: Fade (Chạy qua LED theo dải sáng mờ dần)
fadeEffect();
// Hiệu ứng 6: Ripple (Sóng lướt từ trung tâm ra ngoài)
rippleEffect();
}
// Hiệu ứng Nhấp nháy liên tiếp (Chạy vòng quanh)
void blinkSequence() {
for (int i = 0; i < numLEDs; i++) {
digitalWrite(ledPins[i], HIGH); // Bật LED
delay(100); // Đợi 100 ms
digitalWrite(ledPins[i], LOW); // Tắt LED
}
}
// Hiệu ứng Chạy đuổi (LED chạy theo chiều từ trái qua phải)
void chasingEffect() {
for (int i = 0; i < numLEDs; i++) {
digitalWrite(ledPins[i], HIGH); // Bật LED
delay(100); // Đợi 100 ms
digitalWrite(ledPins[i], LOW); // Tắt LED
}
// LED chạy từ phải sang trái
for (int i = numLEDs - 1; i >= 0; i--) {
digitalWrite(ledPins[i], HIGH); // Bật LED
delay(100); // Đợi 100 ms
digitalWrite(ledPins[i], LOW); // Tắt LED
}
}
// Hiệu ứng Sóng (Chạy theo sóng, LED sáng liên tiếp theo nhóm)
void waveEffect() {
int waveLength = 4; // Số lượng LED sáng trong một lần sóng
for (int start = 0; start < numLEDs; start++) {
// Bật sáng các LED theo nhóm
for (int i = start; i < start + waveLength && i < numLEDs; i++) {
digitalWrite(ledPins[i], HIGH); // Bật LED
}
delay(200); // Đợi 200 ms
// Tắt tất cả các LED
for (int i = start; i < start + waveLength && i < numLEDs; i++) {
digitalWrite(ledPins[i], LOW); // Tắt LED
}
}
}
// Hiệu ứng Nhấp nháy ngẫu nhiên
void randomBlink() {
// Nhấp nháy ngẫu nhiên 10 lần
for (int i = 0; i < 10; i++) {
int randomLED = random(0, numLEDs); // Chọn một LED ngẫu nhiên
digitalWrite(ledPins[randomLED], HIGH); // Bật LED
delay(200); // Đợi 200 ms
digitalWrite(ledPins[randomLED], LOW); // Tắt LED
delay(200); // Đợi 200 ms
}
}
// Hiệu ứng Fade (Chạy qua LED theo dải sáng mờ dần)
void fadeEffect() {
for (int i = 0; i < numLEDs; i++) {
// Fade in: LED sáng từ từ
for (int brightness = 0; brightness <= 255; brightness++) {
analogWrite(ledPins[i], brightness); // Điều chỉnh độ sáng LED từ 0 đến 255
delay(10); // Đợi 10 ms
}
// Fade out: LED mờ dần
for (int brightness = 255; brightness >= 0; brightness--) {
analogWrite(ledPins[i], brightness); // Giảm độ sáng LED từ 255 xuống 0
delay(10); // Đợi 10 ms
}
}
}
// Hiệu ứng Ripple (Sóng lướt từ trung tâm ra ngoài)
void rippleEffect() {
for (int i = 0; i < numLEDs; i++) {
// Sáng dần từ giữa ra ngoài
if (i <= numLEDs / 2) {
digitalWrite(ledPins[numLEDs / 2 - i], HIGH);
digitalWrite(ledPins[numLEDs / 2 + i], HIGH);
} else {
digitalWrite(ledPins[i], LOW);
}
delay(100);
}
}