[miroslavus] hasn’t had much luck with rotary encoders. The parts he has tested from the usual sources have all been problematic either mechanically or electrically, resulting in poor performance in his projects. Even attempts to deal with the deficiencies in software didn’t help, so he did what any red-blooded hacker would do — he built his own rotary encoder from microswitches and 3D-printed parts.
[miroslavus]’s “encoder” isn’t a quadrature encoder in the classic sense. It has two switches and only one of them fires when it turns a given direction, one for clockwise and one for counterclockwise. The knob has a ratchet wheel on the underside that engages with a small trip lever, and carefully located microswitches are actuated repeatedly as the ratchet wheel moves the trip lever. The action is smooth but satisfyingly clicky. Personally, we’d forsake the 3D-printed baseplate in favor of a custom PCB with debouncing circuitry, and perhaps relocate the switches so they’re under the knob for a more compact form factor. That and the addition of another switch on the shaft’s axis to register knob pushes, and you’ve got a perfectly respectable input device for navigating menus.
We think this is great, but perhaps your project really needs a legitimate rotary encoder. In that case, you’ll want to catch up on basics like Gray codes.