Make: Projects

Arduino Theremin

A theremin-like device to control the pitch and volume of a musical note. It utilizes a photo-resistor to control the pitch, and an ultrasonic sensor to control a servo controlling a potentiometer controlling the volume.

  • By
  • Time Required: 45 minutes to 2 hours
  • Difficulty: Moderate
Arduino Theremin


Step #1:

Arduino Theremin
  • Decide to Tackle this project.
  • If you want to make music, then this project is for you; move on to step 2.

Step #2:

Arduino ThereminArduino ThereminArduino Theremin
  • Solder Wires onto the potentiometer. I used red for the audio voltage in on the left and green for the voltage out in the center.
  • I initially soldered on a black wire on the third pin, but removed it as it was redundant.
  • Hot glue the Dowel onto the servo, centered, and then super glue the sandpaper to the dowel to provide a traction for the rubber band.
  • Find a rubber band, preferably wide, that can be used to transfer the servo motion to the potentiometer.
  • Hot glue the potentiometer in place. Don't be sparing with the hot glue, as it is not terribly strong.
  • Turn both the potentiometer and servo all the way to the left and link them together with the rubber band. I had to use several as the servo shifted while the glue was cooling.

Step #3:

Arduino ThereminArduino ThereminArduino ThereminArduino Theremin
  • Wire that Arduino.
  • Supply +5V to the power rail on the breadboard, and then to each ultrasonic power pin, the servo power pin, and the photo-resistor.
  • Supply GND to the GND rail on the breadboard, and then to each ultrasonic ground pin, the servo ground pin, and the piezo buzzer ground pin.
  • I use analog 0 for the photo-resistor output, digital 10 for the servo, digital 2 for the ultrasonic output, and digital 8 for the ultrasonic input
  • Use a 10k Ohm resistor as a pull-down for the photo-resistor, by connecting it to GND and analog 0, or whatever analog pin you end up connecting the photo-resistor to.

Step #4:

Arduino Theremin
  • Now it is time to code the Arduino.
  • See attached file, theremin.pdf for the code.
  • The volume should increase as your hand is moved closer to the Ultrasonic, so if else happens, simply reverse the mapping of the servo position.
  • Change the code from rad = map(dist, 8, 20, 0, 90); to rad = map(dist, 8, 20, 90, 0);


  • davad

    This looks like a real easy way to experience a thermin.
    Alan where do I find the attached file: theremin.pdf ? Could you please provide the schematic in a pdf or jpg too ?

  • miguelduino

    How i can download the project guide? thanks!

  • Alan

    I am very interested in this project. Cant seem to find the arduino code you attached.

  • Jim

    PDF FILE???
    I too am looking for the pdf file that is supposed to have the code in it. I’ll never understand why it is that authors forget things and then don’t respond to there readers. It also doesn’t make sense that “Make” allows this to go on so often.

  • Charlie

    I made some code to go along with this project and it seems to work well

  • Tyler Olsen

    have completed this project and found that it was for the most part
    successful. Theremin made noise but the frequency range was very small.
    The servo and potentiometer didn’t move and didn’t change anything. I’m
    wondering what those are supposed to do in this system.

  • Pingback: Daniel Rowlands Physical computing project 2- Complex Arduino theremin. | UWE Product Design Physical Computing()

  • Jack Burgess

    Why can’t I see the code or use the buttons on this page?

  • Pingback: These 6 Electronic Instruments Go from Retro to Bananas - Chief Viral()

  • Pingback: Sparki Theremin | sparkiblog()

  • Lorraine Cheong

    What’s the point of using a servo to control a rotary switch? That looks silly and you can simply map your ultrasonic sensor data to control the volume without it.