The idea is to build a small circuit that interprets the push button press: a long press toggles the driver ON or OFF, and short presses step through predefined speed levels.
The button first goes through a debounce circuit (usually an RC filter plus a Schmitt trigger inverter like the 74HC14) to clean up switch bounce. Then you need a way to tell the difference between a short and a long press, and that can be done with a monostable, such as the 74HC123, or a simple RC network tuned for about one second. If the button is held longer than that threshold, a flip-flop (like a CD4013) toggles state and drives your ESC’s "power button" through an optocoupler or a small MOSFET.
If the button is released before the threshold time, that edge triggers a pulse that advances a counter (for instance, a CD40193 or 74HC161). The counter outputs drive an analog multiplexer (like CD4051), which selects one resistor from a ladder network connected between Vcc and GND. This way you’re emulating the original potentiometer: each resistor corresponds to a specific speed setting, and the multiplexer chooses the right one according to how many short presses you’ve made.
So you end up with:
- one long press: turn driver ON/OFF
- short presses: cycle through speed presets
In this way, you don't have to use a microcontroller.
The circuit runs on 5 V (or 3.3 V if your ESC uses a 3.3 V pot). You can easily tune the timing and resistance values depending on the pot you’re replacing. Before wiring it, measure the original potentiometer to check whether it’s used as a voltage divider or a rheostat, and note its supply voltage.