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!

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: 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!

16 People Made This Project!


  • Made with Math Contest

    Made with Math Contest
  • Multi-Discipline Contest

    Multi-Discipline Contest
  • Robotics Contest

    Robotics Contest

72 Discussions


2 years ago

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

Reply 1 year ago

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


Question 11 months ago

Hi, i´m making the project but the mute button doesnt work, it only turn off the intregated LED on the Digispark. What can i do?

2 answers

Answer 5 months ago

If I connect cables like this then volume control is very smooth. With other configuration it doesn't work as well. Sometimes it doesn't change volume, sumetimes do.
I'm using rotary encoder with small motherboard underneath and it has 5 pins, so I can't copy from original post (which has only 3). I'm also using ATTINY85 with microUSB, not the one from the picture.
I really would like MUTE to work so I could finish my project. The red light near the P2 pin blinks if I press the switch so I must be very close. None of the solutions in comments doesn't work for me. Or I don't understand how to connect cables :)
So if anyone has the solution, please share.


Reply 1 day ago

if you are using encoder with built-in resistors, one pin of the switch
is connected to ground therefore you need to transfer the connection to
(+) ... just traced the pins of the button switch to make it sure...


1 year ago

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?

4 replies

Reply 1 year ago

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? :-/


Reply 1 day ago

if you are using encoder with built-in resistors, one pin of the switch
is connected to ground therefore you need to transfer the connection to
(+) ... just traced the pins of the button switch to make it sure...


Reply 1 year ago

Hey psychodido.
Tôi cũng có cùng một vấn đề như bạn, và tôi giải quyết nó bằng cách loại bỏ các
bảng mạch và chỉ để lại bộ mã hóa quay sau đó nút tắt tiếng đã hoạt
động đúng cách. Tôi nghĩ rằng các điện trở trong bảng mạch đã gây ra
vấn đề này


Reply 1 year ago


CLK to 0

DT to 2

SW to 1

+ to 5v


3 months ago

Does anybody know if it's possible to add a white led to this controller?
It would be nice to be able to control the led brightness with same encoder, so when the volume is down, the led light is down and when you're increasing the volume you're increasing the led brightness too.


1 reply

Reply 1 day ago

here's a reference from this post.... pls navigate to his previous "USB HID VOLUME CONTROL"... hope it will help...


Question 3 months ago

I am want to make such volume knob, but I would like it to be less, if possible.
Did somebody did manage to make it; or though about it.
I am looking for a bluetooth module that can handle HID, to transmit keyboard data, and a battery for it to be wireless.
Can somebody recommand some advices module please:


Question 1 year ago

How to use the remaining 3 batteries (p3, p4, p5) to control led RGB (or 1pin-1led) when the Rotary encoder????. please help me!!!!!


Tip 1 year 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.


1 year ago

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 1 year 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!