#include <ESP32Servo.h> // 匯入外掛程式庫
int ledPin = 2; // 設定 LED 腳位
int pirPin = 15; // 設定 PIR 腳位
int pirState = LOW; // 設定 PIR 初始狀態
int val = 0; // 設定 val 變數初始值 0
int buzzerPin = 5; // 設定 buzzer 腳位
void setup() {
pinMode(ledPin, OUTPUT); // 設定 LED 腳位輸出
pinMode(pirPin, INPUT); // 設定 PIR 腳位輸出
Serial.begin(115200);
}
void loop() {
val = digitalRead(pirPin); // 讀取 PIR 腳位值
if (val == HIGH) { // 檢查腳位值是否為 HIGH
digitalWrite(ledPin, HIGH); // 打開 LED
if (pirState == LOW) {
Serial.println("有人靠近!");
pirState = HIGH;
for(int i=0; i<5; i++){ // 連續發出5次聲音
ambulenceSiren(buzzerPin);
}
}
} else {
digitalWrite(ledPin, LOW); // 關掉 LED
if (pirState == HIGH) {
Serial.println("狀況解除!");
pirState = LOW;
}
}
}
void ambulenceSiren(int pin) {
tone(pin, 400); // 產生頻率為 400 Hz 的聲音
delay(500); // 持續 0.5 秒
tone(pin, 800); // 產生頻率為 800 Hz 的聲音
delay(500); // 持續 0.5 秒
noTone(pin); // 不發聲
}