Arduino Trumpet

by QuiksilverRox in Circuits > Arduino

55993 Views, 257 Favorites, 0 Comments

Arduino Trumpet

P1050464.JPG
This project emulates a trumpet by playing notes using the three buttons (valves). This is easy to make and fun to play with, though it can only play one octave and no sharps/flats.

Code

Load this into your Arduino:


int speaker = 9; // Hook up speaker to digital pin 9
int sw1 = 15; // Switch hooked to analog pin 1
int sw2 = 16; // Switch hooked to analog pin 2
int sw3 = 17; // Switch hooked to analog pin 3
int valve1;
int valve2;
int valve3;

void c () { // Presets the note "c" to be used later
digitalWrite(speaker, HIGH);
delayMicroseconds(1915);
digitalWrite(speaker, LOW);
delayMicroseconds(1905);
}
void d () {
digitalWrite(speaker, HIGH);
delayMicroseconds(1700);
digitalWrite(speaker, LOW);
delayMicroseconds(1690);
}
void e () {
digitalWrite(speaker, HIGH);
delayMicroseconds(1519);
digitalWrite(speaker, LOW);
delayMicroseconds(1509);
}
void f () {
digitalWrite(speaker, HIGH);
delayMicroseconds(1432);
digitalWrite(speaker, LOW);
delayMicroseconds(1422);
}
void g () {
digitalWrite(speaker, HIGH);
delayMicroseconds(1275);
digitalWrite(speaker, LOW);
delayMicroseconds(1265);
}
void a () {
digitalWrite(speaker, HIGH);
delayMicroseconds(1136);
digitalWrite(speaker, LOW);
delayMicroseconds(1126);
}
void b () {
digitalWrite(speaker, HIGH);
delayMicroseconds(1014);
digitalWrite(speaker, LOW);
delayMicroseconds(1004);
}
void C () {
digitalWrite(speaker, HIGH);
delayMicroseconds(956);
digitalWrite(speaker, LOW);
delayMicroseconds(946);
}

void setup() {
pinMode(speaker, OUTPUT);
pinMode(sw1, INPUT);
digitalWrite(sw1, HIGH);
pinMode(sw2, INPUT);
digitalWrite(sw2, HIGH);
pinMode(sw3, INPUT);
digitalWrite(sw3, HIGH);
// Serial.begin(9600);
}

void loop() {
valve1 = digitalRead(sw1); // Reads switch 1
valve2 = digitalRead(sw2); // Reads switch 2
valve3 = digitalRead(sw3); // Reads switch 3

if ((valve1 == LOW) && (valve2 == LOW) && (valve3 == LOW)) { // If all valves are pressed, then
c(); // It plays a "c"
}
else if ((valve1 == LOW) && (valve2 == HIGH) && (valve3 == LOW)) { // If the first and third valves are pressed, then
d(); // It plays a "d"
}
else if ((valve1 == LOW) && (valve2 == LOW) && (valve3 == HIGH)) { // If the first and second valves are pressed, then
e(); // It plays a "e"
}
else if ((valve1 == LOW) && (valve2 == HIGH) && (valve3 == HIGH)) { // If the first valve is pressed, then
f(); // It plays a "f"
}
else if ((valve1 == HIGH) && (valve2 == HIGH) && (valve3 == HIGH)) { // If no valves are pressed, then
g(); // It plays a "g"
}
else if ((valve1 == HIGH) && (valve2 == HIGH) && (valve3 == LOW)) { // If the third valve is pressed, then
a(); // It plays a "a"
}
else if ((valve1 == HIGH) && (valve2 == LOW) && (valve3 == HIGH)) { // If the second valve is pressed, then
b(); // It plays a "b"
}
else if ((valve1 == HIGH) && (valve2 == LOW) && (valve3 == LOW)) { // If the second and third valves are pressed, then
C(); // It plays a "C"
}
else{
delay(1);
}
}

Hook It Up

P1050441.JPG
Each of the three switches go from ground to analog in 1, 2, and 3. The Piezo goes from digital pin 9 to ground. Make sure to have the switches in the right order in order to have the correct fingerings. Afterwords, download the file and upload it to your Arduino.

Materials

P1050443.JPG
You will need:

-Arduino
-9v battery and clasp
-3 momentary switches (NO)
-Project box (4x2x1)
-Piezo speaker element
-Header pins
-Soldering stuff
-Hotglue
-Dremel
-Drill and 1/4 in bit along with 1/16 in

Put It Together!!

P1050449.JPG
P1050445.JPG
P1050448.JPG
P1050450.JPG
First, open the box and on the outside, mark the center and an inch out from the center. These marks are where you will need to make a 1/4 in hole ( I would suggest using a pilot hole).

Now, dremel out the scraps of plastic and the holders used to hold a PC inside, we will not be needing these.

Make It Fit

P1050452.JPG
P1050453.JPG
P1050454.JPG
P1050455.JPG
P1050456.JPG
Insert the switches and make sure they fit and screw them in.

Insert the pins into the correct spot and then mark the case where they are and drill holes with a 1/16 in drill bit. Then, make sure it fits and then flip it over to the open side.

Wireing

P1050459.JPG
Now, solder a wire to each of the analog input posts and attach the other side to the corresponding switch. Make sure to not get mixed up and solder the wrong switch to the wrong pin. The other side goes to ground. Sound Fimiliar?

Like before, solder the piezo to pin 9 and ground and the battery clasp to ground and voltage in.

Then, Hotglue over the solder connections on the pins, and attach the battery, you should hear a tone, if not check your wireing.

Afterwords, cram in the battery and piezo, its a tight fit! I found it best to put the speaker by the pins and the battery on the other side. Whatever works.

Playing

P1050464.JPG
The fingerings on this trumpet are 'similar' to a normal trumpet. By 'similar' I mean I had to make a few changes.

on a normal trumpet its like this:
c..........0pen
d..........1-3
e..........1-2
f ..........1
g..........0pen / 1-3
a..........1-2 / 3
b..........2
C..........0pen / 2-3

On the Arduino Trumpet:
c..........1-2-3
d..........1-3
e..........1-2
f ..........1
g..........0pen
a..........3
b..........2
C..........2-3

I could have complicated things and put an octive changing switch and used half steps. Though it would be awsome, It would be more complicated and I would need a bigger box.

HAVE FUN