Просмотр исходного кода

audio sequence rewrote

WAIT file and LOOP file are playing continuously
if a presence is detected, wait fades out and presence starts to play
when no presence is detected, presence fades out during one second and
can fade up if presence is detected again during WAIT_TIME ms. On this
time is passed, presence stops and wait fades up
Etienne Landon 8 лет назад
Родитель
Сommit
aa2110c240
1 измененных файлов с 41 добавлено и 14 удалено
  1. 41 14
      I_Mihalache_AudioPlayer.ino

+ 41 - 14
I_Mihalache_AudioPlayer.ino

@@ -116,8 +116,10 @@ void setup() {
       delay(500);
     }
   }
-  Serial.println("Playing LOOP file");
+  Serial.println("Playing LOOP and WAIT file");
   LoopPlayer.play(LOOP_WAV);
+  WaitPlayer.play(WAIT_WAV);
+
   // A brief delay for the library read WAV info
   delay(10); 
 
@@ -222,6 +224,25 @@ void loop() {
     delay(10); 
   }
 
+  if ( (millis() - LastPresence > WAIT_TIME) && !WaitPlayer.isPlaying() && !PresencePlayer.isPlaying()) {
+      WaitPlayer.play(WAIT_WAV);
+      mixer1.gain (1, 1.0);
+      Serial.println("Playing wait file");
+      delay(10);
+    }
+
+  if (presence) {
+      LastPresence = millis() ;
+  }
+   //WAIT fades up if PresencePlayer stops ( 
+  if (millis()-LastPresence > WAIT_TIME && PresencePlayer.isPlaying() && presence == false) {
+    Serial.println("Stopping PRESENCE file");
+    PresencePlayer.stop();
+    for (float fadeRamp ; fadeRamp < 100 ; fadeRamp++ ) {
+          mixer1.gain(1, fadeRamp/100) ;
+        }
+  }
+
 //  // PRESENCE FILE
 //  presence = checkPresence(16, 20);
 //  //printLDR();
@@ -253,8 +274,8 @@ void loop() {
 void Presence() {
 
   Serial.println("Presence detected");
-  LastPresence = millis() ; 
-    
+  presence = true ;
+
   if (!PresencePlayer.isPlaying()) {
     //stop WAIT_WAV if playing
     if (WaitPlayer.isPlaying()) {
@@ -263,9 +284,9 @@ void Presence() {
         for (float fadeRamp ; fadeRamp < 100 ; fadeRamp++ ) {
           mixer1.gain(1, 1.0 - fadeRamp/100) ;
         }
-        WaitPlayer.stop() ;
-        mixer1.gain (1, 1.0); // set volume for next play
-        delay(2000) ; 
+//        WaitPlayer.stop() ;
+//        mixer1.gain (1, 1.0); // set volume for next play
+//        delay(2000) ; 
       
     }
     PresencePlayer.play(PRESENCE_WAV) ;
@@ -274,22 +295,28 @@ void Presence() {
   }   
     
     // if presence and playing, don't do anything
+    for (float fadeRamp ; fadeRamp < 100 ; fadeRamp++ ) {
+          mixer1.gain(0, fadeRamp/100) ;
+        }
   }
 
 void Absence() {
+  LastPresence = millis() ;
+  presence = false ;
+
   Serial.println("No presence detected");
 
   if (PresencePlayer.isPlaying()) {
       //what if presence gone while playing ?
-      Serial.println("Stopping Presence file");
-      while(rms1.read() > 0) {  }
-      PresencePlayer.stop();
+      Serial.println("Fading out Presence file");
+      for (float fadeRamp ; fadeRamp < 100 ; fadeRamp++ ) {
+          mixer1.gain(0, 1.0 - fadeRamp/100) ;
+          delay(10);
+        }
+//      while(rms1.read() > 0) {  }
+      
       
     }
-    if ( (millis() - LastPresence > WAIT_TIME) && !WaitPlayer.isPlaying() && !PresencePlayer.isPlaying()) {
-      WaitPlayer.play(WAIT_WAV);
-      Serial.println("Playing wait file");
-      delay(10);
-    }
+    
   }