/* By Ben Schwartz, offered under a Creative Commons BY-SA 3.0 license http://creativecommons.org/licenses/by-sa/3.0/ For more details see Schwartzster.com/chimes Plays tunes on the pentatonic metallophone Pin Note Tube 3 D 1 (longest) 4 E 2 5 G 3 6 A 4 7 B 5 8 d 6 9 e 7 10 g 8 (shortest) */ int val = 0; int tune = 0; int button = 5; int led = 13; int n1 = 3; int n2 = 4; int n3 = 5; int n4 = 6; int n5 = 7; int n6 = 8; int n7 = 9; int n8 = 10; // the setup routine runs once when you press reset: void setup() { //initialize analog input pin pinMode(button, INPUT); // initialize the digital pins as outputs. pinMode(n1, OUTPUT); //longest tube pinMode(n2, OUTPUT); pinMode(n3, OUTPUT); pinMode(n4, OUTPUT); pinMode(n5, OUTPUT); pinMode(n6, OUTPUT); pinMode(n7, OUTPUT); pinMode(n8, OUTPUT); //shortest tube pinMode(led, OUTPUT); // plays the scale as a test digitalWrite(led, HIGH); delay(80); digitalWrite(led, LOW); delay(150); digitalWrite(n1, HIGH); delay(80); digitalWrite(n1, LOW); delay(150); digitalWrite(n2, HIGH); delay(80); digitalWrite(n2, LOW); delay(150); digitalWrite(n3, HIGH); delay(80); digitalWrite(n3, LOW); delay(150); digitalWrite(n4, HIGH); delay(80); digitalWrite(n4, LOW); delay(150); digitalWrite(n5, HIGH); delay(80); digitalWrite(n5, LOW); delay(150); digitalWrite(n6, HIGH); delay(80); digitalWrite(n6, LOW); delay(150); digitalWrite(n7, HIGH); delay(80); digitalWrite(n7, LOW); delay(150); digitalWrite(n8, HIGH); delay(80); digitalWrite(n8, LOW); delay(150); } // the loop routine runs over and over again forever: void loop() { //wait for button press val = analogRead(button); if (val > 920) { tune = random(1,5); if (tune == 1) { //play short'nin' bread digitalWrite(n3, HIGH); delay(80); digitalWrite(n3, LOW); delay(150); digitalWrite(n3, HIGH); delay(80); digitalWrite(n3, LOW); delay(150); digitalWrite(n7, HIGH); delay(80); digitalWrite(n7, LOW); delay(150); digitalWrite(n7, HIGH); delay(80); digitalWrite(n7, LOW); delay(150); digitalWrite(n6, HIGH); delay(80); digitalWrite(n6, LOW); delay(150); digitalWrite(n6, HIGH); delay(80); digitalWrite(n6, LOW); delay(150); digitalWrite(n7, HIGH); delay(80); digitalWrite(n7, LOW); delay(400); digitalWrite(n3, HIGH); delay(80); digitalWrite(n3, LOW); delay(400); digitalWrite(n7, HIGH); delay(80); digitalWrite(n7, LOW); delay(400); digitalWrite(n6, HIGH); delay(80); digitalWrite(n6, LOW); delay(400); digitalWrite(n7, HIGH); delay(80); digitalWrite(n7, LOW); delay(400); digitalWrite(n3, HIGH); delay(80); digitalWrite(n3, LOW); delay(150); digitalWrite(n3, HIGH); delay(80); digitalWrite(n3, LOW); delay(150); digitalWrite(n7, HIGH); delay(80); digitalWrite(n7, LOW); delay(150); digitalWrite(n7, HIGH); delay(80); digitalWrite(n7, LOW); delay(150); digitalWrite(n6, HIGH); delay(80); digitalWrite(n6, LOW); delay(150); digitalWrite(n6, HIGH); delay(80); digitalWrite(n6, LOW); delay(150); digitalWrite(n7, HIGH); delay(80); digitalWrite(n7, LOW); delay(400); digitalWrite(n5, HIGH); delay(80); digitalWrite(n5, LOW); delay(400); digitalWrite(n4, HIGH); delay(80); digitalWrite(n4, LOW); delay(400); digitalWrite(n3, HIGH); delay(80); digitalWrite(n3, LOW); delay(1000); tune = 0; return; } if (tune == 2) { //play riddle song digitalWrite(n4, HIGH); delay(80); digitalWrite(n4, LOW); delay(150); digitalWrite(n4, HIGH); delay(80); digitalWrite(n4, LOW); delay(150); digitalWrite(n4, HIGH); delay(80); digitalWrite(n4, LOW); delay(150); digitalWrite(n4, HIGH); delay(80); digitalWrite(n4, LOW); delay(150); digitalWrite(n5, HIGH); delay(80); digitalWrite(n5, LOW); delay(150); digitalWrite(n6, HIGH); delay(80); digitalWrite(n6, LOW); delay(400); digitalWrite(n7, HIGH); delay(80); digitalWrite(n7, LOW); delay(150); digitalWrite(n6, HIGH); delay(80); digitalWrite(n6, LOW); delay(400); digitalWrite(n6, HIGH); delay(80); digitalWrite(n6, LOW); delay(150); digitalWrite(n5, HIGH); delay(80); digitalWrite(n5, LOW); delay(150); digitalWrite(n4, HIGH); delay(80); digitalWrite(n4, LOW); delay(300); digitalWrite(n4, HIGH); delay(80); digitalWrite(n4, LOW); delay(150); digitalWrite(n4, HIGH); delay(80); digitalWrite(n4, LOW); delay(150); digitalWrite(n3, HIGH); delay(80); digitalWrite(n3, LOW); delay(150); digitalWrite(n5, HIGH); delay(80); digitalWrite(n5, LOW); delay(150); digitalWrite(n6, HIGH); delay(80); digitalWrite(n6, LOW); delay(400); digitalWrite(n5, HIGH); delay(80); digitalWrite(n5, LOW); delay(150); digitalWrite(n4, HIGH); delay(80); digitalWrite(n4, LOW); delay(250); digitalWrite(n3, HIGH); delay(80); digitalWrite(n3, LOW); delay(400); digitalWrite(n2, HIGH); delay(80); digitalWrite(n2, LOW); delay(1000); tune = 0; return; } if (tune == 3) { //play scale digitalWrite(n1, HIGH); delay(80); digitalWrite(n1, LOW); delay(150); digitalWrite(n2, HIGH); delay(80); digitalWrite(n2, LOW); delay(150); digitalWrite(n3, HIGH); delay(80); digitalWrite(n3, LOW); delay(150); digitalWrite(n4, HIGH); delay(80); digitalWrite(n4, LOW); delay(150); digitalWrite(n5, HIGH); delay(80); digitalWrite(n5, LOW); delay(150); digitalWrite(n6, HIGH); delay(80); digitalWrite(n6, LOW); delay(150); digitalWrite(n7, HIGH); delay(80); digitalWrite(n7, LOW); delay(150); digitalWrite(n8, HIGH); delay(80); digitalWrite(n8, LOW); delay(150); tune = 0; return; } if (tune == 4) { //play tune 4 digitalWrite(n7, HIGH); delay(80); digitalWrite(n7, LOW); delay(100); digitalWrite(n8, HIGH); delay(80); digitalWrite(n8, LOW); delay(100); digitalWrite(n7, HIGH); delay(80); digitalWrite(n7, LOW); delay(100); digitalWrite(n7, HIGH); delay(80); digitalWrite(n7, LOW); delay(1000); tune = 0; return; } } }