Simple DIY Volume Control Knob!




Introduction: Simple DIY Volume Control Knob!

About: Follow me in Instagram:

Got a desktop with a sound system far from where you sit?--I do. After a bit of digging, I found that it was pretty easy to make my own soft volume control knob on the cheap.

In this tutorial I will show you how to create a USB volume control knob for your PC!

To keep things simple, Instead of Arduino, I will use an arduino compatible board called the Digispark. Not only is the Digispark small, but it is cheap! Normally I pick mine up from for less than $2 USD

Lets get started!

Step 1: What You Will Need...

What you will be needing:

Micro USB cable

Micro USB DIgispark (can't be full sized version)

Rotary encoder (also cheap on aliexpress)

Not needed (but nice to have): Some sort of enclosure and knob

Arduino IDE and digispark environment.

Step 2: Time to Get Everything Set Up.

I won't teach you how to use the Arduino Development Environment, there are plenty of tutorials for that on the web already. If you are not familiar with the Digispark, setup information can be found here:

Once set up, go to: and download the Library that we will be needing for this project. Extract the .zip file and place the "Adafruit-Trinket-USB-master" folder into C:\Users\ \Documents\Arduino\libraries

Then copy and paste the sketch found on the same webpage into the Arduino IDE and upload it to your digispark.


The reason that we can do this so easily is because Adafruit has a product called the Trinket that uses the ATtiny85 chip (they have developed this simple-to-use library to work with their trinket) but the DigiSpark also uses the ATtiny85 chip!--So we can very easily use the cheap digispark to run the code and save some money!

Anyway, download the library and go to step 3!

Step 3: The Wiring

Next we can start on the hardware. I shall now demonstrate my artistic skill by drawing a simple schematic for you...

Anyway, as you can see it is very simple and that is all there is to it!

Step 4: The Build!

This is optional and depends on how you want the finished product to look (unless, of course, you just want it to sit on protoboard when you're done)

What I did was cut a small hole into a pill bottle and stick the rotary encoder though it, then I hot-glued the digispark inside the lid (remember to cut a small hole in the side of the lid for the micro USB port to connect to your computer)

Lastly I glued a piece of rubber mat to the bottom--that completes the base!

For the lid, I took the knob from an old broken stereo receiver and plopped that on top!


I also filled it with wax and iron pellets to give it a heavy quality feel, but you can watch the video to learn more about that in step 5.

Step 5: Finished!

That is it!

If you liked it, Follow meh on instagram where I post project updates:

This video may or may not be useful to you, but check it out!

If you have any problems getting it to work, contact me here on Instructables or leave a comment on the youtube video!

Also, if you find that the rotation is reversed, try changing the following lines at the top of the sketch from:

#define PIN_ENCODER_A 0

#define PIN_ENCODER_B 2


#define PIN_ENCODER_A 2

#define PIN_ENCODER_B 0

Remember to check out some of my other instructables!

15 People Made This Project!


  • Metalworking Contest

    Metalworking Contest
  • Water Contest

    Water Contest
  • Creative Misuse Contest

    Creative Misuse Contest

62 Discussions

Hey guys, I added mute to the code! Here is the source. OP i strongly think you should add this.

Connect one side of the button (presumably the built in one on your encoder) to VIN, then connect the other side to p1. You can even change it from mute to whatever you like. Towards the bottom of my file you will see the MUTE command. You can change it to any of the ones given here

But they dont all seem to work

You can even change it to whatever key you want

3 replies

Im wondering if there is any way to make it work as scroll whell?

I've featured your comment!


Tip 10 days ago

You can use an another version of the board to avoid a wire connection :)

I used a encoder from old mouse. It's very small.


Hey Kris, Please help! I make it work only with volume knob!!! But I can not do mute when i pres the knob... The photos show how I've connected Rotary encoder and The ATtiny85! Where am I wrong?

2 replies


CLK to 0

DT to 2

SW to 1

+ to 5v

Hey psychodido. Did you get it to work? I wired my Tiny85 with the encoder as shown in your pictures; my volume up/down now works correctly, but i have the same problem as you: The Mute-Button don't work. Any suggestions? :-/

Interesting idea. Generally I use pennies and hot glue to add weight to dials. Unfortunately, none of mine ever seem to work the way I want... heh.

Is it possible to make a rotary controller like this, except use it for mouse control? You know, turning the knob makes the cursor move in that direction. I'm asking because I like playing dial games like Arkanoid, but there's not a controller for PCs with that functionality. Even adapters for Atari paddles don't support the mouse, and emulators pretty much demand it.


Question 6 months ago

I bought . But i don't now how to program it to use more 2 functions and how to make the swicths work.
I use this Please help! I make it work only with volume knob and mute. I need more 2 functions for FWD/BACK. I have a old front panel autoradio and I transform it for a multimedia controller of a android autoradio. Please help!

1 more answer

Could you please guide me to add more media control button. I want to use new trend mechanical switch keyboard but i can't live without these DELL magic keys. Please...


1 year ago

Unable to compile, I keep getting an error. Looked over the steps multiple times and everything seems fine. Error:

C:\Users\Marmbo\Documents\Arduino\sketch_aug12a\sketch_aug12a.ino:1:29: fatal error: TrinketHidCombo.h: No such file or directory

#include "TrinketHidCombo.h"


compilation terminated.

exit status 1
Error compiling for board Digispark (Default - 16.5mhz).
Invalid library found in C:\Users\Marmbo\Documents\Arduino\libraries\Adafruit-Trinket-USB-master: C:\Users\Marmbo\Documents\Arduino\libraries\Adafruit-Trinket-USB-master
Invalid library found in C:\Users\Marmbo\Documents\Arduino\libraries\Adafruit-Trinket-USB-master: C:\Users\Marmbo\Documents\Arduino\libraries\Adafruit-Trinket-USB-master

1 reply

I must be late. I think you have moved whole Trinket-USB-master folder into Arduino\libraries folder, you have to move one of the subfolders, specifically TrinketHidCombo folder from inside Trinket-USB-master.

hey guys i wanted to know if this can work as a knob . it was one used as a volume knob and i just wanted to know is this can work and also can you show what pin is what


I was directed here from this Thingiverse page ( ) and it has this page linked so I am going to favourite this instructable and use this comment as a link to myself if I want to get back to that page. The 3D model looks quite good so if anyone else wants a case for this Instructables project, this one should suffice but I'm sure there are many other good ones online or even some Instructables of how to make one or something. This comment isn't advertising or anything just a note to self, ignore it if you want. I can't wait to get the parts specified in this Instructable so I can try it out so thanks to Kris S for these instructions. :)

1 reply

1 year ago

Not sure if its the coding or the my hardware, but having the digispark wired exactly like adafruit's diagram. I still cannot get the click button to do anything.

Any ideas?


1 year ago

Instead of volume, can you make it control a media player?

Only keys I want are:
-Left arrow key: when rotated counter clockwise
-Right arrow key: when rotated clockwise
-Spacebar: when pressed

1 reply

Yeah that'd be pretty easy. But I believe you'd need to use an arduino leonardo, (or pro micro)

All you need to do is use an encoder library, and map the rotations to a virtual keyboard emulated by the leonardo.

I haven't done it, so this is just speculation on my part.

Let me know if you are interested in trying it.