const int led[] = {23,22,21,19,18,5,17,16}; // Mảng chứa các chân của LED
const int buttonPin = 33; // Chân của nút nhấn
int mode = 0; // Biến trạng thái chế độ hiện tại
void setup() {
// Thiết lập ban đầu
for (int i = 0; i < 8; i++) {
pinMode(led[i], OUTPUT); // Cấu hình các chân LED là OUTPUT
}
pinMode(buttonPin, INPUT_PULLUP); // Cấu hình chân nút nhấn là INPUT kéo lên
}
void choptat() {
// Chế độ chớp tắt tất cả LED
for (int i = 0; i < 8; i++) {
digitalWrite(led[i], HIGH); // Bật từng led nhưng nhanh
}
delay(300); // Giữ trạng thái bật trong 300ms
for (int i = 0; i < 8; i++) {
digitalWrite(led[i], LOW); // Tắt từng led nhưng nhanh
}
delay(300); // Giữ trạng thái tắt trong 300ms
}
void sangtatdan() {
// Chế độ sáng từ trái sang phải và tắt từ phải sang trái
for (int i = 0; i < 8; i++) {
digitalWrite(led[i], HIGH); // Bật từng LED từ trái sang phải
delay(300); // Giữ mỗi LED sáng trong 300ms
}
for (int i = 8; i > 0; i--) {
digitalWrite(led[i - 1], LOW); // Tắt từng LED từ phải sang trái
delay(300); // Giữ mỗi LED tắt trong 300ms
}
}
void sangdon() {
int trangthai[] = {
0b00000000, // Tất cả LED tắt
0b00011000, // 2 LED ở giữa bật
0b00100100, // LED thứ 3 và thứ 6 bật
0b01000010, // LED thứ 2 và thứ 7 bật
0b10000001, // LED đầu và cuối bật
0b10011001, // LED đầu, cuối, thứ 4 và thứ 5 bật
0b10100101, // LED đầu, thứ 3, thứ 5 và cuối bật
0b11000011, // 2 LED đầu và 2 LED cuối bật
0b11011011, // LED đầu, cuối, thứ 3, thứ 4 và thứ 5 bật
0b11100111, // LED đầu, thứ 2, thứ 3, thứ 6 và cuối bật
0b11111111 // Tất cả LED bật
};
for (int p = 0; p < 11; p++) {
for (int i = 0; i < 8; i++) {
if (trangthai[p] & (1 << i)) {
digitalWrite(led[i], HIGH); // Bật LED nếu bit tương ứng là 1
} else {
digitalWrite(led[i], LOW); // Tắt LED nếu bit tương ứng là 0
}
}
delay(300); // Giữ mỗi trạng thái trong 300ms
}
}
void loop() {
// Kiểm tra nút nhấn để thay đổi chế độ
if (digitalRead(buttonPin) == LOW) { // Khi nhấn nút
mode = (mode + 1) % 3; // Tăng chế độ và quay về 0 khi quá 2 nhờ chia lấy dư
while(digitalRead(buttonPin)==LOW);
}
// Thực hiện các chế độ theo `mode`
if (mode == 0) {
choptat(); // Chế độ chớp tắt tất cả LED
} else if (mode == 1) {
sangtatdan(); // Chế độ sáng và tắt dần LED
} else if (mode == 2) {
sangdon(); // Chế độ sáng dồn
}
}