Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.

A circular touch wheel does not need a separate electrode for every position. The 2016 All About Circuits project Circular Touch Sensing with an EFM8 Microcontroller estimates a fingertip’s angle from three curved electrodes spaced 120 degrees apart. It is an instructive, low-pin-count design: measure each channel’s change from its unpressed baseline, identify the 120-degree sector, then interpolate between the two active neighboring electrodes.

The original author estimated that careful firmware could approach 5-degree (about 72-position) resolution, but that is not a guaranteed specification. Accuracy depends on electrode geometry, overlay, noise, calibration and the user.

What the project solves

Ordinary capacitive touch detection answers “is the pad touched?” A touch wheel must also answer “where around the circle?” The EFM8 project treats the wheel as a spatial-interpolation problem. Three measurements encode a continuous angle while using fewer pins and traces than a ring of many discrete pads.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

This is a historical demonstration, not a complete production interface. A finished control also needs filtering, touch-down and touch-up logic, drift management, wraparound handling and validation under its final mechanical construction.

#1 Best Overall
ESP32 Development Board Max V1.0 Compatible with Arduino, USB-C, Wi-Fi, Bluetooth, MicroPython Compatible, Single Board Computer Suitable for Building Mini PC/Smart Robot/Game Console (QA009)
  • 【ACEBOTT ESP32 Development Board】 - Powerful WiFi and wireless development board, driven by the rugged ESP 32 module, seamlessly integrated with Arduino IDE. With Hall sensors, high-speed SDIO/SPI, UART, I2S and I2C, it is the cornerstone of IoT and smart home innovation.
  • 【Wi-Fi/Bluetooth and Arduino Cloud Compatibility】 - This board uses 2.4GHz dual-mode WiFi and wireless chips with low-power technology, which are RoHS-compliant, simplifying wireless communication and allowing you to easily connect devices and platforms. Whether you are using a compatible Arduino IDE or exploring other development environments, our board can easily adapt to your needs.
  • 【Improved and Professional Edition】 - All IO pins are brought out for easy development; no additional breadboard is required; the Type-C interface is equipped with electrostatic discharge protection diodes and transient voltage suppression diodes to protect the chip from damage by electrostatic breakdown and various surge pulses. In addition, it is equipped with a freeRTOS operating system, which is very suitable for the Internet of Things, smart homes, and building smart robots/game consoles.
  • 【Easy to Use】- The ACEBOTT ESP-32 Development Board includes everything you need to support the microcontroller. Just connect it to a computer via a USB cable or use an AC-DC adapter or battery to power it to start using it. Whether you are an experienced developer or a hobbyist, this development board can provide you with the tools you need for unlimited innovation.
  • 【 Install Plugins And Download Drivers】: This ESP32 development board includes detailed instructions on how to download plugins and all necessary programs and codes from the network environment. The path is: ACEBOTT official website - Resources - WIKI.

Hardware and software

  • SLSTK2010A Sleepy Bee Starter Kit: the original board, with an EFM8 Sleepy Bee MCU and integrated capacitive rotor/slider-style electrode pattern.
  • Simplicity Studio: the Silicon Labs development environment used by the original project.
  • Host computer and USB: required for programming and debugging.

The board guide documents its capacitive-touch pads and rotor/slider input: SLSTK2010A User Guide. Because the project dates from 2016, verify board availability, USB drivers, device packages and project-file compatibility before relying on the historical workflow.

Board-specific channel mapping

Logical sensor CS0 channel Pin Physical location
Sensor 1 2 P0.2 Bottom-middle
Sensor 2 3 P0.3 Top-left
Sensor 3 13 P1.5 Top-right

These names and pins belong to the SLSTK2010A project. Check the schematic and device configuration before copying them to another EFM8 design.

How three electrodes encode angle

Each electrode is a curved section of the circle. A finger near an electrode’s center produces its largest capacitance-count increase; the response declines toward adjacent electrodes. As a finger moves between two electrodes, one delta falls while the other rises.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The three electrodes divide the wheel into three 120-degree sectors. The channel with the smallest delta identifies the sector between the other two channels. Thus, the minimum channel is not necessarily the electrode under the finger; it is the channel least influenced by that finger position.

Raw measurements and baseline calibration

EFM8 capacitive-sense readings are relative measurement counts, not calibrated picofarads. Each electrode can have a different idle value, so subtract an individually measured unpressed baseline.

Rank #2
ESP32 Development Board with USB Type-C and CP2102 + 38-Pin Expansion Board, Dual-Core WiFi Bluetooth Microcontroller with Breakout Base for Arduino IDE and IoT Projects
  • INCLUDES 1 ESP32 BOARD AND 1 EXPANSION BOARD – Combination pack contains one ESP32 development board with USB Type-C and one matching 38-pin breakout expansion board for convenient prototyping and IoT development.
  • POWERFUL DUAL-CORE MICROCONTROLLER – Features the ESP-WROOM-32 module with built-in WiFi and Bluetooth connectivity, suitable for embedded systems, smart devices, and automation projects.
  • USB TYPE-C WITH CP2102 CHIP – Integrated USB Type-C connector and CP2102 USB-to-Serial chip for fast and reliable power supply and data communication.
  • SOLDER-FREE EXPANSION BOARD – The 38-pin breakout board supports quick and easy prototyping with no soldering required. Easy to plug in the ESP32 and access GPIO pins.
  • COMPATIBLE WITH ARDUINO IDE AND MICROPYTHON – Fully supported by the Arduino IDE and MicroPython, making it ideal for beginners, hobbyists, and professional developers working on IoT projects.

The original firmware averages 16 measurements per sensor while CS0 averages 64 samples per measurement. Its initialization pattern is equivalent to:

for (n = 0; n < 16; n++) {
    s1 += Measure_Capacitance(SENSOR_1);
    Delay_us(1000);
    s2 += Measure_Capacitance(SENSOR_2);
    Delay_us(1000);
    s3 += Measure_Capacitance(SENSOR_3);
    Delay_10ms(5);
    Delay_us(6000);
}
Sensor1_Unpressed = s1 >> 4;
Sensor2_Unpressed = s2 >> 4;
Sensor3_Unpressed = s3 >> 4;

Use the same sensor order and approximate delays during calibration and normal operation. Averaging all samples of one channel in a burst can create a baseline that does not match runtime timing and can introduce offsets. Start calibration with the wheel untouched; if a finger is already present, that touched state becomes the reference.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Touch detection

For every scan, calculate and clamp each change:

delta1 = Measure_Capacitance(SENSOR_1) - Sensor1_Unpressed;
if (delta1 < 0) delta1 = 0;
/* repeat for delta2 and delta3 */

if (delta1 > threshold || delta2 > threshold || delta3 > threshold) {
    /* estimate angle */
}

The article used 4× cap-sense gain, observed roughly a 6000-count minimum increase for a relatively light touch, and selected a 2000-count threshold. Those are measurements and choices for that board, configuration, environment and user—not portable EFM8 constants. On your hardware, record idle noise and light-touch deltas, then choose a threshold with margin above noise while retaining the weakest intended touch.

Sector selection and interpolation

1. Find the minimum channel

  • Sensor 1 minimum: use the sector between Sensors 2 and 3.
  • Sensor 2 minimum: use the sector between Sensors 1 and 3.
  • Sensor 3 minimum: use the sector between Sensors 1 and 2.

Map those logical sectors to your chosen angle origin and clockwise direction. The project’s named regions are tied to its board orientation.

2. Normalize the two active responses

Within a sector, the firmware assumes the total increase is approximately constant. For neighboring channels A and B, calculate:

Rank #3
diymore Pro Micro Microcontroller 16MHz 5V with 2-Row Pins Header Module Board ATmega32U4 Module Board Micro USB Pro Micro Development Board Microcontroller
  • With ATmega32U4, running at 5V/16MHz.
  • Supported under IDE v1.0.1.
  • 12 x Digital I/Os (5 are PWM capable).
  • Rx and Tx Hardware Serial Connections.
  • On-board micro-USB connector for programming.

fraction = deltaA / (deltaA + deltaB)

Then:

angle = sector_start + 120° × fraction

For example, if the two deltas are 3000 and 1000 counts, the fraction is 0.75 and the estimate is 90 degrees into that sector. This is linear interpolation, not a calibrated physical-capacitance measurement.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Accuracy limits and failure modes

Nonlinear electrode response

A neighboring electrode may still respond substantially when the finger is centered over another electrode. The ratio may therefore never reach exactly zero or one; center positions can be compressed and some nominal angles can be skipped. A calibration lookup table, piecewise mapping or polynomial correction can compensate for repeatable error.

Baseline drift and noise

Temperature, humidity, nearby objects, enclosure materials, USB or supply noise, finger proximity and mechanical movement can change the baseline. An adaptive baseline can follow slow idle changes, but freeze it while a touch is valid and resume only after release; aggressive tracking otherwise “learns” the finger and loses sensitivity.

User and mechanical variation

Finger size and moisture, overlay thickness, grounding, shielding and PCB geometry all affect counts. Validate the complete assembly, not just a bare board.

Single-touch and interface behavior

The three-channel model assumes one fingertip. Multiple fingers create combined responses that may not correspond to any valid angle. Add touch hysteresis, a short debounce qualification, moving-average or exponential filtering, touch-hold state and release detection for a stable control.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #4
ELEGOO Presoldered Nano Board USB-C with Cable Compatible with Arduino 3PC
  • THREE PRESOLDERED USB-C BOARDS FOR MORE PROJECTS - Keep one Nano on a breadboard, embed another in a robot or sensor node and reserve the third for testing; one USB-A to USB-C data cable is included for programming, while jumper wires, sensors and breadboards are sold separately
  • ATMEGA328P PERFORMANCE IN A COMPACT FORMAT - Run familiar 5 V, 16 MHz AVR sketches with 32 KB flash, 2 KB SRAM and 1 KB EEPROM, plus 14 digital I/O pins, 6 PWM outputs and 8 analog inputs for LEDs, buttons, displays, sensors, motor drivers and data logging
  • CH340 USB SETUP WITH PRACTICAL UPLOAD GUIDANCE - Install the CH340 driver if no serial port appears, select Nano and the correct COM port, then upload a Blink test; use the included USB-A to USB-C cable because the current board does not support USB-C to USB-C host cables
  • PRESOLDERED HEADERS SAVE BREADBOARD SPACE - The 18 × 45 mm footprint arrives ready to plug into a solderless breadboard, while UART, I2C and SPI support serial modules, displays, storage and sensors without soldering header pins before the first project
  • POWER AND MODEL EXPECTATIONS - Use USB-C, 7-12 V VIN or a regulated 5 V input, share ground and drive motors or relays through suitable modules; this classic Nano V3-style board has no Wi-Fi, Bluetooth or features from Nano Every, Nano 33, Nano ESP32 or Nano R4

Angular wraparound

Angles near 359 and 0 degrees are adjacent. For tracking, use a signed circular error such as e = ((new - old + 180) mod 360) - 180 rather than an ordinary subtraction.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

A practical calibration and firmware sequence

  1. Confirm the electrode geometry, channel assignments and angle origin for the actual PCB.
  2. Configure CS0 gain and hardware averaging; begin with the original 4× gain and 64-sample measurement averaging only as a reference.
  3. With no finger near the wheel, collect interleaved baseline samples using the normal scan timing.
  4. Measure idle noise over time and record light, normal and firm touches at several angles.
  5. Set touch-on and touch-off thresholds with hysteresis; do not copy 2000 counts without measuring your own noise floor.
  6. Clamp negative deltas, reject short noise events, select the minimum channel and interpolate the angle.
  7. Compare reported angles with known marked positions. Store a correction table if the response is consistently nonlinear.
  8. Test temperature, humidity, overlays, cables, enclosure and nearby materials before treating the result as reliable.

Reproducing the project today

For historical reproduction, obtain an SLSTK2010A, the original project files and a compatible Simplicity Studio installation. The supplied sources establish the original requirements but do not establish present-day stock or toolchain compatibility.

For a new design, port the method rather than the pin numbers or register code. A different EFM8 board—or another MCU—may expose different capacitive channels, APIs, timing and noise behavior. Recalibrate the sensor and rewrite the peripheral layer.

When another approach is better

Approach Strengths Trade-offs
Three-electrode wheel Few pins and traces; continuous estimate; compact PCB Needs calibration, filtering and drift control; response can be nonlinear; usually single-touch
Many discrete electrodes Simple zone logic and diagnostics; explicit touch regions More pins, routing and board area
Dedicated touch controller Often includes filtering, baseline tracking, tuning and diagnostics Adds an IC and vendor-specific configuration; less algorithmic flexibility
Current MCU with touch peripheral Better long-term platform options and room for USB, wireless or low-power features Migration effort and different sensor APIs

Alternatives include ST’s STM8 Touch Sensing Library (official page) and TI’s CapTIvate design ecosystem (technical reference). Neither is a drop-in replacement: electrode patterns, firmware and tuning differ. Silicon Labs’ 8-bit MCU information is at silabs.com/mcu/8-bit-mcus, and Simplicity Studio at silabs.com/developers/simplicity-studio.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

What the original project teaches

The project demonstrates an economical principle: carefully shaped electrodes and normalized neighboring responses can turn three noisy capacitive measurements into useful circular position data. Its value is greatest as a transparent learning reference. A product-ready wheel still requires measured calibration, filtering, drift handling, mechanical validation and an explicit decision about whether touch sensing is robust enough for the environment.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.