How to Make an Arduino Instrument (Using an Ultrasonic Sensor)

Introduction: How to Make an Arduino Instrument (Using an Ultrasonic Sensor)

This instrument is made using an HC-SR04 Ultrasonic sensor, a Force Sensitive Resistor, and a Piezo Buzzer. You press the force sensor to begin playing music, and wave your hand in front of the ultrasonic sensor at various distances to play different notes. This video describes how it works and how to build it. Enjoy!

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: Parts List

  • 1x Arduino Uno or Mega
  • 1x Breadboard (I used half size)
  • 1x Force Sensitive Resistor
  • 1x HC-SR04 Ultrasonic Sensor
  • 1x Piezo Buzzer
  • 1x 10k Ohm Resistor
  • 11x jumper wires

There are links to where you can buy several of these components in the description of the video

Step 2: Wiring

The wiring is easiest if you take it component by component.


Connect ground to the arduino ground, echo to a digital pin (I used 11), trig to a digital pin (I used 10), and VCC to 5V

Piezo Buzzer:

Connect the positive lead to a digital pin (I used 12) and the negative lead to ground

Force Sensitive Resistor:

I connected one lead directly to 5V, and the other lead directly to A0. Place a resistor after the A0 wire and connect it to ground

Step 3: Code

int trig = 10;

int echo = 11;

long duration;

long distance;

int force;

void setup() {

pinMode(echo, INPUT);

pinMode(trig, OUTPUT);



void loop() {

digitalWrite(trig, LOW); //triggers on/off and then reads data


digitalWrite(trig, HIGH);


digitalWrite(trig, LOW);

duration = pulseIn(echo, HIGH);

distance = (duration / 2) * .0344; //344 m/s = speed of sound. We're converting into cm

int notes[7] = {261, 294, 329, 349, 392, 440, 494}; //Putting several notes in an array

// mid C D E F G A B

force = analogRead(A0); //defining force as FSR data

if (distance < 0 || distance > 50 || force < 100) { //if not presed and not in front

noTone(12); //dont play music


else if ((force > 100)) { //if pressed

int sound = map(distance, 0, 50, 0, 6); //map distance to the array of notes

tone(12, notes[sound]); //call a certain note depending on distance



Step 4: Substitute Parts

You may not have all of the parts that I listed in the video. Don't worry!

You can easily substitute several of them.

  • HC-SR04 Ultrasonic Sensor = Potentiometer or Photoresistor(Light Sensor)

Both of these can be mapped the same way that the ultrasonic sensor is!

  • Force Sensitive Resistor = Push Button

The only reason I use the force sensitive resistor is that I think it's more ergonomic. It practically has the same function as a button in this project so you can just use that instead! You could even just remove the press activation all together and trigger the instrument by just putting your hand in front of the ultrasonic sensor

Be the First to Share


    • Finish It Already Speed Challenge

      Finish It Already Speed Challenge
    • Arduino Contest 2020

      Arduino Contest 2020
    • First Time Author Contest

      First Time Author Contest



    3 years ago

    This looks nice.

    Gonne test it out next week.