I made a rotary input device that provides software-defined "virtual" detents and end-stops, implemented using a BLDC gimbal motor. It can dynamically switch from completely smooth unbounded rotation, to having detents with configurable spacing and strength and "end-stops" that spring back if you try to rotate past them.
It's got a round LCD on the front of the knob (wired and supported via the hollow shaft of the motor) and uses the flex of the PCB and strain gauge sensors (in the latest revision, simply SMD resistors whose resistance changes when stretched) to detect when the knob is pressed down.
HN folks might appreciate that it communicates with host software on the computer via protobuf-encoded USB serial messages -- nanopb is awesome for embedded C protobuf support, and having the defined schema, autogenerated serialization code, and compile-time type safety is so much nicer than ArduinoJson or hand-written binary protocols!
I'd love to get it hooked up to some real software eventually (video editors or home-assistant control are my 2 main ideas), but it's really just been a fun project to tinker with and try out some new ideas and parts I've never used before.
Hah, yeah I think it may have. I've noticed an increase in comments over the last few days, which usually suggests the algo is showing it to new people again, and it got featured on the Adafruit blog this morning which probably reinforced it further, but no idea why the recent resurgence.
https://www.youtube.com/watch?v=ip641WmY4pA
It's got a round LCD on the front of the knob (wired and supported via the hollow shaft of the motor) and uses the flex of the PCB and strain gauge sensors (in the latest revision, simply SMD resistors whose resistance changes when stretched) to detect when the knob is pressed down.
It's open source hardware and software - https://github.com/scottbez1/smartknob
HN folks might appreciate that it communicates with host software on the computer via protobuf-encoded USB serial messages -- nanopb is awesome for embedded C protobuf support, and having the defined schema, autogenerated serialization code, and compile-time type safety is so much nicer than ArduinoJson or hand-written binary protocols!
I'd love to get it hooked up to some real software eventually (video editors or home-assistant control are my 2 main ideas), but it's really just been a fun project to tinker with and try out some new ideas and parts I've never used before.