arduino-0017-linux-x64
This commit is contained in:
		
							parent
							
								
									ed785c5798
								
							
						
					
					
						commit
						ddf58ffb08
					
				
					 436 changed files with 62981 additions and 0 deletions
				
			
		
							
								
								
									
										71
									
								
								arduino-0017-linux-x64/examples/Digital/Melody/Melody.pde
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								arduino-0017-linux-x64/examples/Digital/Melody/Melody.pde
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,71 @@
 | 
			
		|||
/* Melody
 | 
			
		||||
 * (cleft) 2005 D. Cuartielles for K3
 | 
			
		||||
 *
 | 
			
		||||
 * This example uses a piezo speaker to play melodies.  It sends
 | 
			
		||||
 * a square wave of the appropriate frequency to the piezo, generating
 | 
			
		||||
 * the corresponding tone.
 | 
			
		||||
 *
 | 
			
		||||
 * The calculation of the tones is made following the mathematical
 | 
			
		||||
 * operation:
 | 
			
		||||
 *
 | 
			
		||||
 *       timeHigh = period / 2 = 1 / (2 * toneFrequency)
 | 
			
		||||
 *
 | 
			
		||||
 * where the different tones are described as in the table:
 | 
			
		||||
 *
 | 
			
		||||
 * note 	frequency 	period 	timeHigh
 | 
			
		||||
 * c 	        261 Hz 	        3830 	1915 	
 | 
			
		||||
 * d 	        294 Hz 	        3400 	1700 	
 | 
			
		||||
 * e 	        329 Hz 	        3038 	1519 	
 | 
			
		||||
 * f 	        349 Hz 	        2864 	1432 	
 | 
			
		||||
 * g 	        392 Hz 	        2550 	1275 	
 | 
			
		||||
 * a 	        440 Hz 	        2272 	1136 	
 | 
			
		||||
 * b 	        493 Hz 	        2028	1014	
 | 
			
		||||
 * C	        523 Hz	        1912 	956
 | 
			
		||||
 *
 | 
			
		||||
 * http://www.arduino.cc/en/Tutorial/Melody
 | 
			
		||||
 */
 | 
			
		||||
  
 | 
			
		||||
int speakerPin = 9;
 | 
			
		||||
 | 
			
		||||
int length = 15; // the number of notes
 | 
			
		||||
char notes[] = "ccggaagffeeddc "; // a space represents a rest
 | 
			
		||||
int beats[] = { 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 4 };
 | 
			
		||||
int tempo = 300;
 | 
			
		||||
 | 
			
		||||
void playTone(int tone, int duration) {
 | 
			
		||||
  for (long i = 0; i < duration * 1000L; i += tone * 2) {
 | 
			
		||||
    digitalWrite(speakerPin, HIGH);
 | 
			
		||||
    delayMicroseconds(tone);
 | 
			
		||||
    digitalWrite(speakerPin, LOW);
 | 
			
		||||
    delayMicroseconds(tone);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void playNote(char note, int duration) {
 | 
			
		||||
  char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };
 | 
			
		||||
  int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 };
 | 
			
		||||
  
 | 
			
		||||
  // play the tone corresponding to the note name
 | 
			
		||||
  for (int i = 0; i < 8; i++) {
 | 
			
		||||
    if (names[i] == note) {
 | 
			
		||||
      playTone(tones[i], duration);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void setup() {
 | 
			
		||||
  pinMode(speakerPin, OUTPUT);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void loop() {
 | 
			
		||||
  for (int i = 0; i < length; i++) {
 | 
			
		||||
    if (notes[i] == ' ') {
 | 
			
		||||
      delay(beats[i] * tempo); // rest
 | 
			
		||||
    } else {
 | 
			
		||||
      playNote(notes[i], beats[i] * tempo);
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    // pause between notes
 | 
			
		||||
    delay(tempo / 2); 
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
		Reference in a new issue