// Khai báo các chân kết nối của ESP32 đến các đèn LED
const int ledPins[] = {15, 2, 0, 4, 16, 17, 26, 25, 33, 19, 18, 5};
void setup() {
// Khởi tạo các chân kết nối là OUTPUT
for (int i = 0; i < 12; i++) {
pinMode(ledPins[i], OUTPUT);
}
}
// Hàm bật tất cả các đèn LED
void allLightsOn() {
for (int i = 0; i < 12; i++) {
digitalWrite(ledPins[i], HIGH);
}
delay(1000); // Để tất cả các đèn sáng trong 1 giây
}
// Hàm chạy đèn LED vòng quanh
void runningLights() {
for (int i = 0; i < 12; i++) {
digitalWrite(ledPins[i], HIGH);
delay(100);
digitalWrite(ledPins[i], LOW);
}
}
// Hàm chạy đèn LED ngược lại
void reverseRunningLights() {
for (int i = 11; i >= 0; i--) {
digitalWrite(ledPins[i], HIGH);
delay(100);
digitalWrite(ledPins[i], LOW);
}
}
// Hàm nhấp nháy các đèn LED
void blinkingLights() {
for (int i = 0; i < 12; i++) {
digitalWrite(ledPins[i], HIGH);
}
delay(500);
for (int i = 0; i < 12; i++) {
digitalWrite(ledPins[i], LOW);
}
delay(500);
}
// Hàm sóng biển
void waveLights() {
for (int i = 0; i < 6; i++) {
digitalWrite(ledPins[i], HIGH);
digitalWrite(ledPins[11 - i], HIGH);
delay(100);
digitalWrite(ledPins[i], LOW);
digitalWrite(ledPins[11 - i], LOW);
}
}
// Hàm nhấp nháy ngẫu nhiên
void randomBlinking() {
for (int i = 0; i < 12; i++) {
if (random(2) == 0) { // Tạo ngẫu nhiên 50% tỷ lệ nhấp nháy
digitalWrite(ledPins[i], HIGH);
} else {
digitalWrite(ledPins[i], LOW);
}
}
delay(500); // Dừng lại sau mỗi lần nhấp nháy ngẫu nhiên
}
// Hàm chiếu sáng một nửa đèn
void halfLights() {
for (int i = 0; i < 6; i++) {
digitalWrite(ledPins[i], HIGH); // Nửa đầu sáng
digitalWrite(ledPins[11 - i], LOW); // Nửa cuối tắt
}
delay(500);
for (int i = 0; i < 6; i++) {
digitalWrite(ledPins[i], LOW); // Tắt nửa đầu
digitalWrite(ledPins[11 - i], HIGH); // Nửa cuối sáng
}
delay(500);
}
// Hàm pha trộn (fade in/out)
void fadeInOut() {
// Fade in
for (int brightness = 0; brightness <= 255; brightness++) {
for (int i = 0; i < 12; i++) {
analogWrite(ledPins[i], brightness); // Điều chỉnh độ sáng dần dần
}
delay(10);
}
delay(500);
// Fade out
for (int brightness = 255; brightness >= 0; brightness--) {
for (int i = 0; i < 12; i++) {
analogWrite(ledPins[i], brightness); // Mờ dần các đèn
}
delay(10);
}
}
void loop() {
allLightsOn(); // Bật tất cả các đèn LED
delay(500); // Dừng lại một chút sau khi bật hết đèn
runningLights(); // Chạy đèn vòng quanh
delay(500); // Dừng lại một chút sau khi chạy vòng quanh
reverseRunningLights(); // Chạy đèn vòng ngược lại
delay(500); // Dừng lại một chút
waveLights(); // Tạo hiệu ứng sóng biển
delay(500); // Dừng lại một chút sau khi tạo sóng biển
randomBlinking(); // Tạo hiệu ứng nhấp nháy ngẫu nhiên
delay(500); // Dừng lại một chút sau khi nhấp nháy
halfLights(); // Chiếu sáng một nửa đèn
delay(500); // Dừng lại một chút
fadeInOut(); // Hiệu ứng fade in/out
delay(500); // Dừng lại một chút sau khi fade out
}