DigiPot – Rotary Encoder Digital Potentiometer


DigiPot is a digital potentiometer using a rotary encoder as input along with a 7 segment display that show the current pot value.


The “potentiometer” is actually a rotary encoder (TW-700198) connected to a microcontroller that reads the signal from it and convert it to a value that is displayed on 7-segment displays. The value also is sent via i2c/spi/serial/usb to the host. Also 3 LED and included for status indication.

The board is planned to either be operated in an autonomous mode where the display is updated by the board itself or in a host mode where the host is telling the board what to display.

.: source code isn’t available yet :.

A “Rotary Encoder” aka “Quadrature Encoder” is sending pulses to the microcontroller that will determine how the user is turnin the knob and calculating a current value for it. This value will be digitally sent to the host via i2c or another serial protocol. At the same time an analogue voltage will be generated and be presented at a output.

Possibly also the value could be sent to a digital potentiometer chip like a MCP4551 as well to set a resistive value.

An ATmega8/168/328 is selected as the microcontroller since it has enough i/o for this project. I also choose to use a ISPtouch connector for as the programming interface.http://dangerousprototypes.com/?p=62605


  • Three digits display with movable decimal point.
  • Three status leds.
  • Quadrature encoder with button-functionality.
  • Communicate with host via i2c/serial-ttl.
  • Multiple units can be chained.
  • The value can be output as an analogue voltage with 12 bit resolution.

Parts description

Starting from top there’s 4 n-fet transistors for muxing the cathodes of the displays and leds. Then there are 8 anode resisors. The atmega with C3/C4/C5 decoupling caps. The crystal with C1/C2 load caps is followed by R10/C7/C6 that is a filter for the supply to the mcp4821 12 bit dac.

Below the atmega there are some jumper for selecting if the units is to communicate with serial uart or i2c. The two 4 pin headers can be used to chain multiple units either by i2c as a bus, or a daisy-chain with serial, if serial the last unit in the chain must be looped.

R9/R11/R12 is pullups for i2c and reset. The 2-pin header is analogue voltage out and is filtered by C8. The 5 pads on the bottom is the programming header.









Notify of
Inline Feedbacks
View all comments

Is the code available yet? It would be greatly valued.


Hi. Where can i purchase this? Thank you


And how can i contact him? Thank you


Arduino Nano 33 IoT Giveaway

By continuing to use the site, you agree to the use of cookies. more info

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.