/* 
 * Bach Cantata Number 147
 *
 * Uses a LilyPad speaker (buzzer) to play Bach Cantata No. 147,
 * a.k.a. Jesu, Joy of Man's Desiring.
 *
 * Programmed by Cindy Brooman
 * Christmas 2009
 
 * How this works: connect the speaker's - to pin 4 and its + to pin 5. The cantata is
 * called from the setup, and the loop does nothing but repeat a delay. This has
 * the effect of making the music play once and then stop. (Believe me, it quickly
 * becomes tiresome hearing it in a loop!) To play it again, just press the reset
 * button.
 
 */

int ledPin = 13;                                            // LED is connected to digital pin 13
int speakerPin = 5;                                      // speaker connected to digital pin 9
int groundPin = 4;                                        // define an extra ground petal
     
void setup()   
{  
         pinMode(ledPin, OUTPUT);                 // sets the ledPin to be an output
         pinMode(speakerPin, OUTPUT);          // sets the speakerPin to be an output
         pinMode(groundPin, OUTPUT);            // sets the extra ground pin to be an output
         digitalWrite(groundPin, LOW);             // sets the extra ground pin to 0 volts
         jesu();
}   

void loop()  
{   
          delay(1000);    // delay for 1 second 
}    
     
void beep (unsigned char speakerPin, int frequencyInHertz, long timeInMilliseconds)     // the sound producing function 
{   
          int x;  
          long delayAmount = (long)(1000000/frequencyInHertz);
          long loopTime = (long)((timeInMilliseconds*1000)/(delayAmount*2));
          for (x=0;x<loopTime;x++)  
          {  
              digitalWrite(speakerPin,HIGH);
              delayMicroseconds(delayAmount);
              digitalWrite(speakerPin,LOW);
              delayMicroseconds(delayAmount);
          }  

}    
  
void jesu ()
{   
          digitalWrite(ledPin,HIGH);   //turn on the LED
          beep(speakerPin,2093,300);   //C
          beep(speakerPin,2349,300);   //D
          beep(speakerPin,2637,300);   //E
          beep(speakerPin,3136,300);   //G
          beep(speakerPin,2793,300);   //F
          beep(speakerPin,2793,300);   //F
          beep(speakerPin,3520,300);   //A
          beep(speakerPin,3136,300);   //G
          //
          beep(speakerPin,3136,300);   //G
          beep(speakerPin,4186,300);   //C HI
          beep(speakerPin,3951,300);   //B
          beep(speakerPin,4186,300);   //C HI
          beep(speakerPin,3136,300);   //G
          beep(speakerPin,2637,300);   //E
          beep(speakerPin,2093,300);   //C
          beep(speakerPin,2349,300);   //D
          beep(speakerPin,2637,300);   //E
          //
          beep(speakerPin,2793,300);   //F
          beep(speakerPin,3136,300);   //G
          beep(speakerPin,3520,300);   //A
          beep(speakerPin,3136,300);   //G
          beep(speakerPin,2793,300);   //F
          beep(speakerPin,2637,300);   //E
          beep(speakerPin,2349,300);   //D
          beep(speakerPin,2637,300);   //E
          beep(speakerPin,2093,300);   //C
          //
          beep(speakerPin,1975,300);   //B LO
          beep(speakerPin,2093,300);   //C
          beep(speakerPin,2349,300);   //D
          beep(speakerPin,1568,300);   //G LO
          beep(speakerPin,1975,300);   //B LO
          beep(speakerPin,2349,300);   //D
          beep(speakerPin,2793,300);   //F
          beep(speakerPin,2637,300);   //E
          beep(speakerPin,2349,300);   //D
          //
          beep(speakerPin,2637,300);   //E
          beep(speakerPin,2093,300);   //C
          beep(speakerPin,2349,300);   //D
          beep(speakerPin,2637,300);   //E
          beep(speakerPin,3136,300);   //G
          beep(speakerPin,2793,300);   //F
          beep(speakerPin,2793,300);   //F
          beep(speakerPin,3520,300);   //A
          beep(speakerPin,3136,300);   //G
          //
          beep(speakerPin,3136,300);   //G
          beep(speakerPin,4186,300);   //C HI
          beep(speakerPin,3951,300);   //B
          beep(speakerPin,4186,300);   //C HI
          beep(speakerPin,3136,300);   //G
          beep(speakerPin,2637,300);   //E
          beep(speakerPin,2093,300);   //C
          beep(speakerPin,2349,300);   //D
          beep(speakerPin,2637,300);   //E
          //
          beep(speakerPin,1760,300);   //A LO
          beep(speakerPin,3136,300);   //G
          beep(speakerPin,2793,300);   //F
          beep(speakerPin,2637,300);   //E
          beep(speakerPin,2349,300);   //D
          beep(speakerPin,2093,300);   //C
          beep(speakerPin,1568,300);   //G LO
          beep(speakerPin,2093,300);   //C
          beep(speakerPin,1975,300);   //B LO
          //
          beep(speakerPin,2093,300);   //C
          beep(speakerPin,2637,300);   //E
          beep(speakerPin,3136,300);   //G
          beep(speakerPin,4186,300);   //C HI
          beep(speakerPin,3136,300);   //G
          beep(speakerPin,2637,300);   //E
          beep(speakerPin,2093,300);   //C
          // Repeat first eight bars
          beep(speakerPin,2093,300);   //C
          beep(speakerPin,2349,300);   //D
          beep(speakerPin,2637,300);   //E
          beep(speakerPin,3136,300);   //G
          beep(speakerPin,2793,300);   //F
          beep(speakerPin,2793,300);   //F
          beep(speakerPin,3520,300);   //A
          beep(speakerPin,3136,300);   //G
          //
          beep(speakerPin,3136,300);   //G
          beep(speakerPin,4186,300);   //C HI
          beep(speakerPin,3951,300);   //B
          beep(speakerPin,4186,300);   //C HI
          beep(speakerPin,3136,300);   //G
          beep(speakerPin,2637,300);   //E
          beep(speakerPin,2093,300);   //C
          beep(speakerPin,2349,300);   //D
          beep(speakerPin,2637,300);   //E
          //
          beep(speakerPin,2793,300);   //F
          beep(speakerPin,3136,300);   //G
          beep(speakerPin,3520,300);   //A
          beep(speakerPin,3136,300);   //G
          beep(speakerPin,2793,300);   //F
          beep(speakerPin,2637,300);   //E
          beep(speakerPin,2349,300);   //D
          beep(speakerPin,2637,300);   //E
          beep(speakerPin,2093,300);   //C
          //
          beep(speakerPin,1975,300);   //B LO
          beep(speakerPin,2093,300);   //C
          beep(speakerPin,2349,300);   //D
          beep(speakerPin,1568,300);   //G LO
          beep(speakerPin,1975,300);   //B LO
          beep(speakerPin,2349,300);   //D
          beep(speakerPin,2793,300);   //F
          beep(speakerPin,2637,300);   //E
          beep(speakerPin,2349,300);   //D
          //
          beep(speakerPin,2637,300);   //E
          beep(speakerPin,2093,300);   //C
          beep(speakerPin,2349,300);   //D
          beep(speakerPin,2637,300);   //E
          beep(speakerPin,3136,300);   //G
          beep(speakerPin,2793,300);   //F
          beep(speakerPin,2793,300);   //F
          beep(speakerPin,3520,300);   //A
          beep(speakerPin,3136,300);   //G
          //
          beep(speakerPin,3136,300);   //G
          beep(speakerPin,4186,300);   //C HI
          beep(speakerPin,3951,300);   //B
          beep(speakerPin,4186,300);   //C HI
          beep(speakerPin,3136,300);   //G
          beep(speakerPin,2637,300);   //E
          beep(speakerPin,2093,300);   //C
          beep(speakerPin,2349,300);   //D
          beep(speakerPin,2637,300);   //E
          //
          beep(speakerPin,1760,300);   //A LO
          beep(speakerPin,3136,300);   //G
          beep(speakerPin,2793,300);   //F
          beep(speakerPin,2637,300);   //E
          beep(speakerPin,2349,300);   //D
          beep(speakerPin,2093,300);   //C
          beep(speakerPin,1568,300);   //G LO
          beep(speakerPin,2093,300);   //C
          beep(speakerPin,1975,300);   //B LO
          //
          beep(speakerPin,2093,300);   //C
          beep(speakerPin,2637,300);   //E
          beep(speakerPin,3136,300);   //G
          beep(speakerPin,4186,300);   //C HI
          beep(speakerPin,3136,300);   //G
          beep(speakerPin,2637,300);   //E
          beep(speakerPin,2093,300);   //C
          beep(speakerPin,2637,300);   //E
          beep(speakerPin,3136,300);   //G
          // End of Repeat
          beep(speakerPin,3729,300);   //B FLAT
          beep(speakerPin,3136,300);   //G
          beep(speakerPin,2637,300);   //E
          beep(speakerPin,2093,300);   //C
          beep(speakerPin,2637,300);   //E
          beep(speakerPin,3136,300);   //G
          beep(speakerPin,3520,300);   //A
          beep(speakerPin,2793,300);   //F
          beep(speakerPin,2349,300);   //D
          //
          beep(speakerPin,1975,300);   //B LO
          beep(speakerPin,2349,300);   //D
          beep(speakerPin,2793,300);   //F
          beep(speakerPin,3136,300);   //G
          beep(speakerPin,2637,300);   //E
          beep(speakerPin,2093,300);   //C
          beep(speakerPin,1760,300);   //A LO
          beep(speakerPin,2093,300);   //C
          beep(speakerPin,2637,300);   //E
          //
          beep(speakerPin,2793,300);   //F
          beep(speakerPin,2349,300);   //D
          beep(speakerPin,1975,300);   //B LO
          beep(speakerPin,1568,300);   //G LO
          beep(speakerPin,1975,300);   //B LO
          beep(speakerPin,2349,300);   //D
          beep(speakerPin,2793,300);   //F
          beep(speakerPin,2637,300);   //E
          beep(speakerPin,2349,300);   //D
          //
          beep(speakerPin,2637,300);   //E
          beep(speakerPin,2093,300);   //C
          beep(speakerPin,2349,300);   //D
          beep(speakerPin,2637,300);   //E
          beep(speakerPin,3136,300);   //G
          beep(speakerPin,2793,300);   //F
          beep(speakerPin,2793,300);   //F
          beep(speakerPin,3520,300);   //A
          beep(speakerPin,3136,300);   //G
          //
          beep(speakerPin,3136,300);   //G
          beep(speakerPin,4186,300);   //C HI
          beep(speakerPin,3951,300);   //B
          beep(speakerPin,4186,300);   //C HI
          beep(speakerPin,3136,300);   //G
          beep(speakerPin,2637,300);   //E
          beep(speakerPin,2093,300);   //C
          beep(speakerPin,2349,300);   //D
          beep(speakerPin,2637,300);   //E
          //
          beep(speakerPin,2793,300);   //F
          beep(speakerPin,3136,300);   //G
          beep(speakerPin,3520,300);   //A
          beep(speakerPin,3136,300);   //G
          beep(speakerPin,2793,300);   //F
          beep(speakerPin,2637,300);   //E
          beep(speakerPin,2349,300);   //D
          beep(speakerPin,2637,300);   //E
          beep(speakerPin,2093,300);   //C
          //
          beep(speakerPin,1975,300);   //B LO
          beep(speakerPin,2093,300);   //C
          beep(speakerPin,2349,300);   //D
          beep(speakerPin,1568,300);   //G LO
          beep(speakerPin,1975,300);   //B LO
          beep(speakerPin,2349,300);   //D
          beep(speakerPin,2793,300);   //F
          beep(speakerPin,2637,300);   //E
          beep(speakerPin,2349,300);   //D
          //
          beep(speakerPin,2637,300);   //E
          beep(speakerPin,2093,300);   //C
          beep(speakerPin,2349,300);   //D
          beep(speakerPin,2637,300);   //E
          beep(speakerPin,3136,300);   //G
          beep(speakerPin,2793,300);   //F
          beep(speakerPin,2793,300);   //F
          beep(speakerPin,3520,300);   //A
          beep(speakerPin,3136,300);   //G
          //
          beep(speakerPin,3136,300);   //G
          beep(speakerPin,4186,300);   //C HI
          beep(speakerPin,3951,300);   //B
          beep(speakerPin,4186,300);   //C HI
          beep(speakerPin,3136,300);   //G
          beep(speakerPin,2637,300);   //E
          beep(speakerPin,2093,300);   //C
          beep(speakerPin,2349,300);   //D
          beep(speakerPin,2637,300);   //E
          //
          beep(speakerPin,1760,300);   //A LO
          beep(speakerPin,3136,300);   //G
          beep(speakerPin,2793,300);   //F
          beep(speakerPin,2637,300);   //E
          beep(speakerPin,2349,300);   //D
          beep(speakerPin,2093,300);   //C
          beep(speakerPin,1568,300);   //G LO
          beep(speakerPin,2093,300);   //C
          beep(speakerPin,1975,300);   //B LO
          //
          beep(speakerPin,2093,3000);   //C
//End
          digitalWrite(ledPin,LOW);   //turn off the LED

Tags: buzzer, lilypad, music, speaker

Views: 6

Reply to This


© 2012   Created by Syuzi.

Badges  |  Report an Issue  |  Terms of Service