Rotary encoders skipping or counting twice
Last updated · SimHub 9.11.22
An encoder that gives two steps per click, or one step per two clicks, or jumps around at random, is nearly always one of three things. The encoder's timing type: SimHub supports half-step and full-step encoders only, so check the datasheet before buying and prefer EC11s, which offer the best compatibility. Leo Bodnar encoders are incompatible and no configuration will change that. Missing pull-up resistors: if the encoder has none built in, enable the "Enable pullup resistor" option so the Arduino's internal ones are used, or buy a breakout board with resistors included, which gives the best results. And the pin: on a Nano, avoid A6 and A7, which have no digital capability, and D13, which is wired to the onboard LED.
Encoders are the component where a £2 saving costs an evening. Most of this page is about which part to buy, because that is where the fault usually originates.
Reading the symptom
| What you see | Most likely cause |
|---|---|
| One physical click gives two steps | Timing type mismatch — a full-step encoder read as half-step, or the reverse. |
| Two clicks give one step | The same thing, the other way round. |
| Steps at random, in both directions | Electrical noise or floating pins — missing pull-ups, or a long unshielded run. |
| Nothing at all on one encoder | The pin. On a Nano, A6 and A7 cannot do digital input and D13 shares the onboard LED. |
| Nothing at all, on every encoder | Wiring or board choice rather than the encoders. Start with the board page. |
Test one at a time. Wire a single encoder, get it right, then add the rest. A panel of six built in one go with a shared fault is far harder to reason about, and the fault is usually common to all of them.
Which encoders to buy
- EC11 and similar
- Named in SimHub's own documentation as offering the best compatibility. If you are buying without wanting to think about it, buy these.
- Half-step or full-step timing only
- Those are the two timings supported. The documentation's advice is to read the datasheet before buying, which is worth taking literally — the timing diagram is the part that matters and it is rarely in the shop listing.
- Leo Bodnar encoders — incompatible
- Named as incompatible. Nothing to configure around; do not buy them for this.
- Breakout boards with resistors included
- Stated to offer the best compatibility. A few pence more and one fewer thing that can be wrong.
The detent trap. Encoders are also sold by detent count and by whether the detents line up with the electrical steps. Two parts with the same part number prefix can behave differently here, which is why the datasheet — not the listing title — is the thing to read.
Wiring and pins
- If your encoder has no built-in resistors, turn on Enable pullup resistor in SimHub so the Arduino's internal pull-ups are used. Without a pull-up the pin floats and reads noise as movement.
- On a Nano, do not use A6 or A7 — they are analogue-only and have no digital capability — and avoid D13, which is tied to the onboard LED.
- Keep the runs short and away from the wheelbase power cable. An encoder line is a low-current signal in an electrically loud environment.
- Check every joint. Poor soldering is the most common cause of intermittent faults in these builds, and an encoder has three or five joints each.
Pin support on other boards varies, so the Nano list above is a Nano list and not a universal one — check what your board actually offers before wiring a panel around it.
Do you need games to see the encoder? On an Uno or Nano the inputs exist only inside SimHub. If a game has to see the encoder as a controller, you need a board with native gamepad support — a Pro Micro or another ATmega32U4 board.
Common questions
Why does one click of my encoder give two steps?
A timing mismatch between the encoder and how it is being read. SimHub supports half-step and full-step encoders, so check the datasheet for which yours is. EC11s are the ones named as offering the best compatibility.
Do Leo Bodnar encoders work with SimHub?
No. They are named as incompatible in SimHub's documentation. There is no setting that works around it.
My encoder jumps around at random. What is wrong?
Usually a floating pin. If the encoder has no built-in pull-up resistors, enable the pull-up option in SimHub so the Arduino's internal ones are used, or use a breakout board with resistors fitted.
Which Arduino pins can I use for encoders?
On a Nano, not A6 or A7 — they are analogue-only with no digital capability — and avoid D13 because it is wired to the onboard LED. Support on other boards varies, so check yours rather than assuming.
Will my games see the encoder?
Only on a board with native gamepad support, such as a Pro Micro or another ATmega32U4 board. On an Uno or Nano the input exists inside SimHub alone, which is fine for SimHub actions and no use for binding in a game.
What is a breakout board and do I need one?
A small PCB carrying the encoder with its pull-up resistors already fitted. You do not need one, but SimHub's documentation names them as offering the best compatibility, and they remove the most common cause of random stepping for a few pence.
Sources
Related guides
SimHub is developed independently by Wotever and is not affiliated with OESimRacing. This page was checked against SimHub 9.11.22 on 4 August 2026; where the interface has moved on since, the version stamp tells you how far. More on what SimHub is and what it costs.