Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Scan for outdated or missing drivers - takes under a minuteDriver Scan →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.
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
- 【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.
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
- 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.
Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteWindows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallTouch 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
- 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.
The Tool Desk
Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →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.
Rank #4
- 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.
A practical calibration and firmware sequence
- Confirm the electrode geometry, channel assignments and angle origin for the actual PCB.
- Configure CS0 gain and hardware averaging; begin with the original 4× gain and 64-sample measurement averaging only as a reference.
- With no finger near the wheel, collect interleaved baseline samples using the normal scan timing.
- Measure idle noise over time and record light, normal and firm touches at several angles.
- Set touch-on and touch-off thresholds with hysteresis; do not copy 2000 counts without measuring your own noise floor.
- Clamp negative deltas, reject short noise events, select the minimum channel and interpolate the angle.
- Compare reported angles with known marked positions. Store a correction table if the response is consistently nonlinear.
- 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.
Do these 3 things before closing this tab:
1Fix the driver behind crashes, sound loss and screen glitches2Repair Windows errors before they cause bigger problems3Scan for outdated or missing drivers - takes under a minuteWhat 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.
Quick Recap
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.

