// Định nghĩa các chân điều khiển đèn trên arduino
#define LED1_PIN 2
#define LED2_PIN 3
#define LED3_PIN 4
#define START_BUTTON_PIN 5
// Thời gian hoạt động của từng đèn (đơn vị: ms)
const unsigned long LED1_TIME = 3 * 60 * 1000; // 3 phút
const unsigned long LED2_TIME = 30 * 1000; // 30 giây
const unsigned long LED3_TIME = 4 * 60 * 1000; // 4 phút
// Biến trạng thái
bool systemActive = false; // Trạng thái của hệ thống
unsigned long previousMillis = 0; // Lưu thời gian bắt đầu
int currentStage = 0; // Giai đoạn hiện tại
void setup() {
// Cấu hình chân vào/ra
pinMode(LED1_PIN, OUTPUT);
pinMode(LED2_PIN, OUTPUT);
pinMode(LED3_PIN, OUTPUT);
pinMode(START_BUTTON_PIN, INPUT_PULLUP);
// Tắt toàn bộ đèn ban đầu
digitalWrite(LED1_PIN, LOW);
digitalWrite(LED2_PIN, LOW);
digitalWrite(LED3_PIN, LOW);
}
void loop() {
// Kiểm tra nút nhấn start
if (digitalRead(START_BUTTON_PIN) == LOW && !systemActive) {
delay(50); // Chống dội phím
if (digitalRead(START_BUTTON_PIN) == LOW) {
systemActive = true;
currentStage = 1;
previousMillis = millis();
}
}
// Quản lý hệ thống theo trạng thái
if (systemActive) {
unsigned long currentMillis = millis();
switch (currentStage) {
case 1: // Đèn 1 hoạt động
digitalWrite(LED1_PIN, HIGH);
if (currentMillis - previousMillis >= LED1_TIME) {
digitalWrite(LED1_PIN, LOW);
currentStage = 2;
previousMillis = currentMillis;
}
break;
case 2: // Đèn 2 hoạt động
digitalWrite(LED2_PIN, HIGH);
if (currentMillis - previousMillis >= LED2_TIME) {
digitalWrite(LED2_PIN, LOW);
currentStage = 3;
previousMillis = currentMillis;
}
break;
case 3: // Đèn 3 hoạt động
digitalWrite(LED3_PIN, HIGH);
if (currentMillis - previousMillis >= LED3_TIME) {
digitalWrite(LED3_PIN, LOW);
currentStage = 4;
previousMillis = currentMillis;
}
break;
case 4: // Đèn 1 hoạt động lần 2
digitalWrite(LED1_PIN, HIGH);
if (currentMillis - previousMillis >= LED1_TIME) {
digitalWrite(LED1_PIN, LOW);
currentStage = 0;
systemActive = false;
}
break;
}
}
}