An old VCR head drum was sitting in the bottom of a junk tub for years. I quite like the spin - it's heavy and runs on a couple of smooth bearings. I also wanted to learn about things like optical encoders, gray code and USB. So I put the drum to use as a PC volume control knob.
Everything is open with code, schematic and PCB layout hosted at gitlab.
I made the first revision of this device years ago, but it was when I transitioned to working-from-home full-time that I decided to give it an overhaul. Hence revision 2.
It's a great, whimsical device that gives me a little bit of happiness whenever I need to adjust the volume level of music or a video call.
Here I incorporated some learnings from the intervening years. Upgrades from the first revision included:
Schematic and PCB layout completely redone but using KiCad instead of Eagle.
Microcontroller changed from an AT90usb162 AVR to an ATmega32U4.
Remove the serial Tx/Rx connector.
Remove the reset tact-switch.
Use smd components instead of through-hole.
Connect with a USB type C connector instead of a USB type B.
Have the PCB fabricated (JLCPCB) instead of the home-made copper-etch method.
A couple of LEDs on the bottom of the PCB purely to visualise the gray code (Rev 1 had LEDs but they only barely shone through etched sections of the PCB).
Generally improved and cleaner code (still using the LUFA library).
In action. The LEDs are a fun way of visualising the gray code.
Neat new life for an item that's too electro-mechanically beautiful to simply discard.