// // Định nghĩa chân cho LED và nút bấm
// const int button1Pin = 35;
// const int button2Pin = 27; // Chân kết nối nút bấm
// const int ledPins[] = {17,16,4,0,2,15}; // Các chân kết nối LED
// const int numLeds = sizeof(ledPins) / sizeof(ledPins[0]);
// int button1State = 0; // Trạng thái nút bấm 1 hiện tại
// int lastButton1State = 0; // Trạng thái nút bấm 1 trước đó
// bool evenLedsOn = false; // Trạng thái LED chẵn sáng
// void setup() {
// // Cấu hình chân cho nút bấm và LED
// pinMode(button1Pin, INPUT_PULLUP); // Nút bấm 1 với pull-up nội
// pinMode(button2Pin, INPUT_PULLUP); // Nút bấm 2 với pull-up nội
// for (int i = 0; i < numLeds; i++) {
// pinMode(ledPins[i], OUTPUT);
// digitalWrite(ledPins[i], LOW); // Tắt hết LED ban đầu
// }
// Serial.begin(115200); // Theo dõi trạng thái qua Serial Monitor
// }
// void loop() {
// // Đọc trạng thái của hai nút bấm
// button1State = digitalRead(button1Pin);
// int button2State = digitalRead(button2Pin);
// // Xử lý nút bấm 1 (đổi trạng thái chẵn/lẻ)
// if (button1State == LOW && lastButton1State == HIGH) {
// evenLedsOn = !evenLedsOn; // Đổi trạng thái giữa chẵn và lẻ
// if (evenLedsOn) {
// Serial.println("Bật LED chẵn");
// toggleLeds(true); // Bật LED chẵn
// } else {
// Serial.println("Bật LED lẻ");
// toggleLeds(false); // Bật LED lẻ
// }
// delay(200); // Debounce
// }
// lastButton1State = button1State;
// // Xử lý nút bấm 2 (bật/tắt tất cả LED khi nhấn giữ)
// if (button2State == LOW) { // Khi nút bấm 2 được nhấn
// turnOnAllLeds();
// } else { // Khi nút bấm 2 được thả
// turnOffAllLeds();
// }
// }
// // Hàm bật/tắt LED chẵn hoặc lẻ
// void toggleLeds(bool even) {
// for (int i = 0; i < numLeds; i++) {
// if (even && i % 2 == 1) { // Bật LED chẵn (index lẻ: 1, 3,...)
// digitalWrite(ledPins[i], HIGH);
// } else if (!even && i % 2 == 0) { // Bật LED lẻ (index chẵn: 0, 2,...)
// digitalWrite(ledPins[i], HIGH);
// } else {
// digitalWrite(ledPins[i], LOW); // Tắt các LED khác
// }
// }
// }
// // Hàm bật tất cả LED
// void turnOnAllLeds() {
// for (int i = 0; i < numLeds; i++) {
// digitalWrite(ledPins[i], HIGH);
// }
// }
// // Hàm tắt tất cả LED
// void turnOffAllLeds() {
// for (int i = 0; i < numLeds; i++) {
// digitalWrite(ledPins[i], LOW);
// }
// }
// ////////////////--------ĐÈ 3S NÚT 2 SÁNG ĐÈN
// #define BUTTON_PIN1 35 // Nút bấm 1
// #define BUTTON_PIN2 27 // Nút bấm 2
// #define NUM_LEDS 6 // Số lượng LED
// // Các chân LED kết nối với ESP32
// int ledPins[] = {17, 16, 4, 0, 2, 15};
// unsigned long button2PressTime = 0; // Thời gian bắt đầu nhấn nút 2
// bool ledsAlwaysOn = false; // Trạng thái bật đèn mãi khi giữ nút 2
// bool button2LastState = HIGH; // Lưu trạng thái nút 2 trước đó
// void setup() {
// Serial.begin(115200);
// // Cấu hình chân nút bấm và LED
// pinMode(BUTTON_PIN1, INPUT_PULLUP); // Nút 1 với pull-up nội
// pinMode(BUTTON_PIN2, INPUT_PULLUP); // Nút 2 với pull-up nội
// for (int i = 0; i < NUM_LEDS; i++) {
// pinMode(ledPins[i], OUTPUT);
// digitalWrite(ledPins[i], LOW); // Tắt tất cả LED ban đầu
// }
// }
// void loop() {
// int button1State = digitalRead(BUTTON_PIN1); // Đọc trạng thái của nút 1
// int button2State = digitalRead(BUTTON_PIN2); // Đọc trạng thái của nút 2
// // Xử lý Button 1 (Bật LED ở vị trí chẵn khi nút bấm 1 được nhấn)
// if (button1State == LOW) {
// turnOnEvenLeds(); // Bật các LED ở vị trí chẵn
// } else {
// turnOffAllLeds(); // Tắt tất cả LED khi nút 1 được thả
// }
// // Xử lý Button 2 (Giữ 3 giây để bật đèn mãi)
// if (button2State == LOW && button2LastState == HIGH) {
// button2PressTime = millis(); // Ghi nhận thời gian khi bắt đầu nhấn nút 2
// }
// if (button2State == LOW && (millis() - button2PressTime >= 3000)) {
// ledsAlwaysOn = true; // Sau 3 giây, bật tất cả LED
// turnOnAllLeds(); // Bật tất cả LED
// }
// if (button2State == HIGH && button2LastState == LOW && ledsAlwaysOn) {
// ledsAlwaysOn = false; // Tắt đèn mãi khi nút 2 được thả
// turnOffAllLeds(); // Tắt tất cả LED
// }
// // Lưu trạng thái nút 2 trước đó để kiểm tra
// button2LastState = button2State;
// }
// // Hàm bật các LED chẵn (index 0, 2, 4...)
// void turnOnEvenLeds() {
// for (int i = 0; i < NUM_LEDS; i++) {
// if (i % 2 == 0) { // Vị trí chẵn (index 0, 2, 4...)
// digitalWrite(ledPins[i], HIGH);
// } else {
// digitalWrite(ledPins[i], LOW); // Tắt LED ở vị trí khác
// }
// }
// }
// // Hàm bật tất cả LED
// void turnOnAllLeds() {
// for (int i = 0; i < NUM_LEDS; i++) {
// digitalWrite(ledPins[i], HIGH);
// }
// }
// // Hàm tắt tất cả LED
// void turnOffAllLeds() {
// for (int i = 0; i < NUM_LEDS; i++) {
// digitalWrite(ledPins[i], LOW);
// }
// }
// //////////----------------bật lẻ rồi bật chẳn rồi đè 3s nút 2
// #define BUTTON_PIN 35
// #define BUTTON_PIN1 27
// int led [] = {17,16,4,0,2,15};
// int n = 6;
// void setup() {
// // put your setup code here, to run once:
// Serial.begin(115200);
// Serial.println("Hello, ESP32!");
// pinMode(BUTTON_PIN, INPUT_PULLUP);
// pinMode(BUTTON_PIN1, INPUT_PULLUP);
// for(int i = 0 ; i < n; i++) {
// pinMode(led[i], OUTPUT);
// digitalWrite(led[i], LOW);
// }
// }
// void loop() {
// bool state = digitalRead(BUTTON_PIN);
// bool state1 = digitalRead(BUTTON_PIN1);
// static bool last = HIGH;
// static bool last1 = HIGH;
// if(last == HIGH && state == LOW) {
// for(int i = n/2 ; i >= 0 ; i--) {
// digitalWrite(led[i-1],HIGH);
// delay(100);
// digitalWrite(led[n-i+-1],HIGH);
// delay(100);
// }
// }
// else if (state == LOW ){
// for(int i = n/2 ; i >= 0 ; i--) {
// digitalWrite(led[i-1],LOW);
// delay(100);
// digitalWrite(led[n-i+-1],LOW);
// delay(100);
// }
// }
// last = state;
// int time = millis();
// if (last == HIGH && state1 == LOW && time - millis() >= 3) {
// for( int i = 0 ; i < n ; i++) {
// if(i%2==0) {
// digitalWrite(led[i], HIGH);
// delay(500);
// }
// }
// for( int i = 0 ; i < n ; i++) {
// if(i%2!=0) {
// digitalWrite(led[i], HIGH);
// delay(500);
// }
// }
// } else if (state1 == LOW && time - millis() >= 3 ) {
// for( int i = 0 ; i < n ; i++) {
// if(i%2==0) {
// digitalWrite(led[i], LOW);
// delay(500);
// }
// }
// for( int i = 0 ; i < n ; i++) {
// if(i%2!=0) {
// digitalWrite(led[i], LOW);
// delay(500);
// }
// }
// }
// time = millis();
// last1 = state1;
// }
//////////-----------------nhấn button1 hiện led lẻ rồi tới led chẵn rồi tắt
//////////-----------------nhấn button2 mở từ từ từng led từ bên trái qua rồi tắt dần
#define BUTTON_PIN 35 // Chân nút bấm 1
#define BUTTON_PIN1 27 // Chân nút bấm 2
int led[] = {17, 16, 4, 0, 2, 15}; // Các chân LED kết nối với ESP32
int n = 6; // Số lượng LED
bool button1LastState = HIGH; // Trạng thái nút 1 trước đó
bool button2LastState = HIGH; // Trạng thái nút 2 trước đó
unsigned long button2PressTime = 0; // Thời gian bắt đầu nhấn nút 2
void setup() {
Serial.begin(115200);
Serial.println("Hello, ESP32!");
pinMode(BUTTON_PIN, INPUT_PULLUP); // Nút bấm 1
pinMode(BUTTON_PIN1, INPUT_PULLUP); // Nút bấm 2
for (int i = 0; i < n; i++) {
pinMode(led[i], OUTPUT); // Cấu hình các chân LED
digitalWrite(led[i], LOW); // Tắt tất cả LED ban đầu
}
}
void loop() {
bool state = digitalRead(BUTTON_PIN); // Đọc trạng thái của nút 1
bool state1 = digitalRead(BUTTON_PIN1); // Đọc trạng thái của nút 2
// Xử lý nút bấm 1 (Sáng LED lẻ rồi tới LED chẵn rồi tắt)
if (state == LOW && button1LastState == HIGH) {
turnOnOddLeds(); // Sáng các LED lẻ
delay(500); // Đợi một chút trước khi chuyển sang LED chẵn
turnOnEvenLeds(); // Sáng các LED chẵn
delay(500); // Đợi một chút trước khi tắt tất cả LED
turnOffAllLeds(); // Tắt tất cả LED
}
// Xử lý nút bấm 2 (Mở từng LED từ trái qua phải, rồi tắt dần)
if (state1 == LOW && button2LastState == HIGH) {
button2PressTime = millis(); // Lưu lại thời gian bắt đầu nhấn nút 2
}
if (state1 == LOW && (millis() - button2PressTime >= 0)) {
turnOnLedSequence(); // Mở từng LED từ trái qua phải
delay(500); // Đợi trước khi tắt các LED
turnOffLedSequence(); // Tắt các LED từ phải qua trái
}
// Cập nhật trạng thái nút bấm
button1LastState = state;
button2LastState = state1;
}
// Hàm bật các LED lẻ
void turnOnOddLeds() {
for (int i = 0; i < n; i++) {
if (i % 2 != 0) { // Vị trí lẻ
digitalWrite(led[i], HIGH);
} else {
digitalWrite(led[i], LOW); // Tắt LED ở vị trí chẵn
}
}
}
// Hàm bật các LED chẵn
void turnOnEvenLeds() {
for (int i = 0; i < n; i++) {
if (i % 2 == 0) { // Vị trí chẵn
digitalWrite(led[i], HIGH);
} else {
digitalWrite(led[i], LOW); // Tắt LED ở vị trí lẻ
}
}
}
// Hàm tắt tất cả LED
void turnOffAllLeds() {
for (int i = 0; i < n; i++) {
digitalWrite(led[i], LOW);
}
}
// Hàm mở từng LED từ trái qua phải
void turnOnLedSequence() {
for (int i = 0; i < n; i++) {
digitalWrite(led[i], HIGH);
delay(500); // Đợi một chút trước khi bật LED tiếp theo
}
}
// Hàm tắt từng LED từ phải qua trái
void turnOffLedSequence() {
for (int i = n - 1; i >= 0; i--) {
digitalWrite(led[i], LOW);
delay(500); // Đợi một chút trước khi tắt LED tiếp theo
}
}
// // Hàm mở từng LED từ phải qua trái
// void turnOnLedSequence() {
// for (int i = n - 1; i >= 0; i--) { // Đảo ngược thứ tự để bật từ phải qua trái
// digitalWrite(led[i], HIGH);
// delay(500); // Đợi một chút trước khi bật LED tiếp theo
// }
// }
// // Hàm tắt từng LED từ trái qua phải
// void turnOffLedSequence() {
// for (int i = 0; i < n; i++) { // Tắt từ trái qua phải
// digitalWrite(led[i], LOW);
// delay(500); // Đợi một chút trước khi tắt LED tiếp theo
// }
// }