DIY Music Keyboard: How to Make Sounds With Arduino

By Sandheep Gopinath

Arduino Keyboard - Piezo buzzer tutorial

Arduino Keyboard – Piezo buzzer tutorial

Making cool things with an Arduino is something, but making musical instruments out of an Arduino is something else! So behold, here comes the Musical-duino, an Arduino keyboard. To see what this does, check out the demo video at the bottom of this page.

They say that “You can become anyone”, so why not become Beethoven or Mozart? The only limit is your imagination.

The DIY Arduino keyboard or the Musical-duino has a few buttons. Pressing them makes different tones according to the pulse sent to it by the Arduino. Your Arduino can be used to make different instruments. It can even be used to make a proximity sensing device to help blind people, a device that detects obstacles and makes different voices depending on what they’re approaching. You can also make a Theremin out of an Arduino by attaching LDR’s.

After making one you could play the “legend of Zelda” and upload the video to YouTube so that we can share your work of art here on our website (Somebody please do it!)

Required Materials

  1. Arduino Uno, Mega, Freeduino, or any of its clones
  2. 2 Pushbuttons
  3. A Piezo Buzzer
  4. A 9 volt battery with the terminal caps
  5. A DC  Jack
  6. Jumper Wires

How it Works

 

Arduino-Keyboard-Circuit-

Arduino-Keyboard-Circuit

One end of each push button is connected to the VCC and the other end to three analog pins. The data from the push buttons are read by the analog pins. This is further compared with a threshold voltage.

Don’t know what’s a threshold voltage? Don’t you worry, we’re here to explain it to you!

Even when the switch is open, the analog pin connected to the button shows a value. When the button is pressed, the analog value reading changes. The value we get when the switch is open is usually referred as the threshold voltage.

In later steps, each button is identified in comparison. Corresponding frequencies are produced online Piezo buzzer using the Arduino.

Connecting the Push Buttons as Keys for the Arduino Keyboard

 

Arduino Keyboard - Piezo buzzer tutorial

Push button connection

Connect all the 3 pins of the push buttons to the 5 volt output on the Arduino. It’s helpful to have a clearer picture of the Arduino’s structure. After connecting the buttons to the 5 volt output, the other end goes to analog 1, 2 and 3. After doing the connections, upload the following code to your Arduino:

void setup()
{
pinMode(A0,INPUT);
pinMode(A1,INPUT);
pinMode(A2,INPUT);
Serial.begin(9600);
}
int a,b,c;

void loop()
{
a=analogRead(A0);
b=analogRead(A1);
c=analogRead(A2);

Serial.print(a);
Serial.print(‘ ‘);
Serial.print(b);
Serial.print(‘ ‘);
Serial.print(c);
}

Next, do the following:

  1. Upload the code.
  2. Open the Serial Monitor.
  3. Note the analog values on the serial monitor without pressing the buttons as the threshold.
  4. Press the buttons and find the change in analog readings.

Connecting the Piezo Buzzer

 

Arduino Keyboard - Piezo buzzer tutorial

Piezo Buzzer for Arduino keyboard

 

Connect the Piezo buzzer as shown positive (red) goes to the 3rd digital pin and negative (black) goes to the GND pin. After connecting the piezo buzzer, upload the following code to your Arduino:

void setup()
{
pinMode(3,OUTPUT);
}

void loop()
{
tone(3,296,10);
delay(1000);
noTone();
}

tone(pinNumber,frequency,duration) //plays a tone of frequency defined on the piezo buzzer connected to pinNumber 3.

noTone() //sets the piezo buzzer into ideal mode with no tone .

Note: The piezo positive can only be connected to the PWM pins or the required output cannot be obtained.

Putting together your Arduino Keyboard

 

Arduino Keyboard - Piezo buzzer tutorial

Final Assembly for the Arduino keyboard

Now upload this sketch to your Arduino after completing the connections above:

void setup()
{
pinMode(A0,INPUT);
pinMode(A1,INPUT);
pinMode(A2,INPUT);
Serial.begin(9600);
}
int a,b,c;
int threshold=400;
void loop()
{
a=analogRead(A0);
b=analogRead(A1);
c=analogRead(A2);
if(a>threshold)
tone(3,200,10);

else if(b>threshold)
tone(3,296,10);

else if(c>threshold)
tone(3,360,10);

else
noTone();
}

Arduino Keyboard - Piezo buzzer tutorial

And Voila!!!! There you go. By now you should be able to see the big picture. If not, then you might want to read the whole thing again. The image in the 3rd step might turn out to be very helpful to understand about the assembly of this project. Now, check out the demo video of this project:

 

 

 

 

This project can be enhanced by using LDR’s to replace the buttons, then you can play tones without even touching the board!

There are lots of ways to build on this project!

 

[/vc_column_text][/vc_column][/vc_row]
Recommended Posts
Showing 2 comments
  • Nidhiya
    Reply

    Good tutorial (y)

  • Shreya Haridas
    Reply

    Wow Sandheep! Loved it! The best tutorial I have ever come across! :D

Leave a Comment

− 2 = 4

Start typing and press Enter to search