// Định nghĩa các chân nối đến LED
#define LED_DO 2 // D4
#define LED_VANG 0 // D3
#define LED_XANH 4 // D2
#define LED_DIBO 5 // D1
// Định nghĩa chân nối đến loa
#define SPEAKER 12 // D6
// Thời gian chuyển trạng thái (ms)
#define TIME_DO 00
#define TIME_VANG 2000
#define TIME_XANH 5000
#define TIME_DIBO 00
void setup() {
// Thiết lập các chân LED là OUTPUT (lối ra)
pinMode(LED_DO, OUTPUT); // Chân ra
pinMode(LED_VANG, OUTPUT); // Chân ra
pinMode(LED_XANH, OUTPUT); // Chân ra
pinMode(LED_DIBO, OUTPUT); // Chân ra
// Thiết lập chân loa là OUTPUT
pinMode(SPEAKER, OUTPUT); // Chân ra tín hiệu nhắc người qua đường
}
bool isTonePlaying = false;
void loop() {
// Đèn xanh
digitalWrite(LED_XANH, HIGH);
delay(TIME_XANH);
digitalWrite(LED_XANH, LOW);
// Đèn vàng
digitalWrite(LED_VANG, HIGH);
delay(TIME_VANG);
digitalWrite(LED_VANG, LOW);
// Đèn đỏ
// Đèn đi bộ và phát âm thanh kêu ngắt quãng
digitalWrite(LED_DO, HIGH);
digitalWrite(LED_DIBO, HIGH);
delay(TIME_DO);
delay(TIME_DIBO);
if (!isTonePlaying) {
isTonePlaying = true; // Đánh dấu đang phát âm thanh
for(int i=0; i<5; i++){
tone(SPEAKER, 1000); // Phát âm thanh với tần số 3000Hz
delay(700); // Âm thanh kéo dài trong 500ms
noTone(SPEAKER); // Tắt âm thanh
delay(500); // Đợi 500ms trước khi bắt đầu âm thanh tiếp theo
}
isTonePlaying = true; // Đánh dấu rằng đang phát âm thanh
for(int i=0; i<10; i++){
tone(SPEAKER, 1000); // Phát âm thanh với tần số 3000Hz
delay(300); // Âm thanh kéo dài trong 100ms
noTone(SPEAKER); // Tắt âm thanh
delay(300); // Đợi 100ms trước khi bắt đầu âm thanh tiếp theo
}
isTonePlaying = true; // Đánh dấu rằng đang phát âm thanh
for(int i=0; i<20; i++){
tone(SPEAKER, 1000); // Phát âm thanh với tần số 3000Hz
delay(100); // Âm thanh kéo dài trong 100ms
noTone(SPEAKER); // Tắt âm thanh
delay(100); // Đợi 100ms trước khi bắt đầu âm thanh tiếp theo
}
isTonePlaying = true; // Đánh dấu rằng đang phát âm thanh
for(int i=0; i<20; i++){
tone(SPEAKER, 1000); // Phát âm thanh với tần số 3000Hz
delay(50); // Âm thanh kéo dài trong 100ms
noTone(SPEAKER); // Tắt âm thanh
delay(50); // Đợi 100ms trước khi bắt đầu âm thanh tiếp theo
}
digitalWrite(LED_DIBO, LOW);
digitalWrite(LED_DO, LOW);
isTonePlaying = false;
}
}