//------------------- speaker_freq_dur --------------------------
//  ------ Plays a pitch thru a speaker and lights an LED ------
//- Set up:  > Attach a piezo speaker between ground and Digital 6 (pin 12)
//---------------------------------------------------------------

int long_note = 450;
int short_note = 200;

void setup(){
   pinMode(6, OUTPUT);           // Define Speaker pin as output
  }   

void loop(){
   digitalWrite(7, HIGH);           // Turn on LED
     play_pitch(523, long_note);    // Run function with frequency & duration
     play_pitch(523, long_note);
     play_pitch(523, short_note);
     play_pitch(587, short_note);
     play_pitch(659, long_note);
     digitalWrite(7, LOW);          // Turn off LED
     delay(1000);                   // delay one second
} 

//---- Here we define a function called "play_pitch()" that takes 2 arguments:
void play_pitch(int freq, int duration){    
   int i;                     // Create variable for counting iterations
   long period;               // Create floating point variable 
   long pulse;                // Create floating point variable 
   long cycles;               // variable for number of cycles (duration)
   period = 1000000/freq;                // Calculate period
   pulse = (period / 2 );                // Calculate pulse
   cycles = duration * (freq / 1000.00); // Calculate duration
   for(i = 0; i < cycles; i++){          // Loop for number of cycles
      digitalWrite(6, HIGH);             // Set speaker Pin high
      delayMicroseconds(pulse);          // delay for our calculated frequency
      digitalWrite(6, LOW);              // Set speaker Pin low
      delayMicroseconds(pulse);          // delay for our calculated frequency
     }                                 // end loop
  }                                  // end function definition