/**
* \Buzzer_05_sistema_allarme_pir
*
* Sistema di allarme con sensore PIR
* Questo sketch attiva un allarme quando viene rilevato del movimento da un sensore PIR.
* L'allarme è composto da un buzzer che suona per un certo periodo di tempo e da un LED che lampeggia.
* Il sensore PIR è collegato al pin digitale 2, il buzzer al pin digitale 8 e il LED al pin digitale 9.
*
* https://wokwi.com/projects/425932743963164673
* https://github.com/filippo-bilardo/ROBOTICA/blob/main/Buzzer/README.md
*
* @author Fippo Bilardo
* @version 1.0 20/03/25 - Versione iniziale
*/
const int BUZZER_PIN = 8;
const int PIR_PIN = 2; // Pin del sensore PIR
const int LED_PIN = 9;
// Parametri allarme
const int ALARM_DURATION = 3000; // Durata dell'allarme in ms
boolean alarmActive = false; // Stato dell'allarme
void setup() {
pinMode(BUZZER_PIN, OUTPUT);
pinMode(PIR_PIN, INPUT);
pinMode(LED_PIN, OUTPUT);
Serial.begin(9600);
Serial.println("Sistema di allarme attivo");
}
void loop() {
int motionDetected = digitalRead(PIR_PIN);
if (motionDetected == HIGH) {
Serial.println("Movimento rilevato!");
triggerAlarm();
}
}
void triggerAlarm() {
// Attiva l'allarme
alarmActive = true;
unsigned long startTime = millis();
// Suona per la durata impostata
while (millis() - startTime < ALARM_DURATION) {
// Suono di allarme modulato
for (int freq = 800; freq < 2000; freq += 10) {
tone(BUZZER_PIN, freq);
digitalWrite(LED_PIN, HIGH);
delay(5);
}
for (int freq = 2000; freq > 800; freq -= 10) {
tone(BUZZER_PIN, freq);
digitalWrite(LED_PIN, LOW);
delay(5);
}
}
// Disattiva l'allarme
noTone(BUZZER_PIN);
digitalWrite(LED_PIN, LOW);
alarmActive = false;
}