#define BUTTON_PIN 12
#define PIR_PIN 13
unsigned long lastActionTime = 0;
int currentSong = 1;
bool buttonPressed = false;
bool pirTriggered = false;
void setup() {
Serial.begin(115200);
pinMode(BUTTON_PIN, INPUT_PULLUP);
pinMode(PIR_PIN, INPUT);
playSong(1);
}
void loop() {
unsigned long now = millis();
unsigned long elapsed = now - lastActionTime;
// בדיקת חיישן PIR
int motion = digitalRead(PIR_PIN);
if (motion == HIGH && !pirTriggered) {
pirTriggered = true;
Serial.println("🟢 Playing 'Happy' - motion detected");
playSong(4);
return; // מפסיק את שאר הבדיקות
}
// לחיצה על כפתור
if (digitalRead(BUTTON_PIN) == LOW && !buttonPressed && !pirTriggered) {
buttonPressed = true;
delay(200); // debounce
if (currentSong == 1) {
playSong(2);
}
else if (currentSong == 2) {
playSong(3);
}
}
if (digitalRead(BUTTON_PIN) == HIGH) {
buttonPressed = false;
}
// מעבר אוטומטי לפי זמן (רק אם לא הופעל PIR)
if (!pirTriggered) {
if (currentSong == 1 && elapsed >= 10UL * 60 * 1000) {
Serial.println("10 minutes have passed – moving to song 2");
playSong(2);
}
if (currentSong == 2 && elapsed >= 20UL * 60 * 1000) {
Serial.println("10 minutes have passed – moving to song 3");
playSong(3);
}
}
}
void playSong(int songNumber) {
currentSong = songNumber;
lastActionTime = millis();
switch (songNumber) {
case 1:
Serial.println("🎵 Play rustling leaves sound");
break;
case 2:
Serial.println("🎵Play bird chirping sound");
break;
case 3:
Serial.println("🎵Play beeping truck reverse sound");
break;
case 4:
Serial.println("🎵 Playing 'Happy' – motion detected");
break;
default:
Serial.println("⚠️ Playing");
}
}