Hi everyone, I'm Richard, who made the above experimental rotary encoder mod for the Gotek/HxC hardware.
As you can see from my blog post, it is possible to control the Gotek indirectly via an Arduino, but it's not perfect. That's because it has to simulate button presses on the Gotek, and the delays in the firmware (to stop incorrectly reading the buttons) means you can't scroll particularly fast through the list before the hardware fails to keep up with the rotations.
I implemented a work-around, which is that when you scroll beyond a particular point, it goes into continuous scroll mode (by effectively holding down the button) until you stop spinning.
It works, but it's not ideal, as it loses the primary advantage of a rotary encoder, namely that the exact rotation corresponds to an exact amount of movement through the list. Normally when you use a UI with a rotary encoder, your muscle memory very quickly learns how much to twitch your hand to get the amount of movement you want!
So all in, an interesting experiment, and I'm glad I did it (because the other part of my project also used a rotary encoder as the user interface, so it was nice to be consistent). But whether it's worth doing for other people is a matter of opinion!
If you want to follow along, and adapt what I did, I've put my (mostly finished) code up on GitHub here:
https://github.com/richardloxley/RetroMatic2000 The README there also has a index into my blog posts where I describe the build of the entire project.
Going forward, I think the ideal solution would be to implement rotary encoder code in the Gotek firmware itself. Then you could spin the wheel as fast as you like, and get to an exact point based on the rotation.
Jeff asked how many turns to browse 500/1000 files. Well the encoder I used (which is pretty typical) registers 20 clicks per rotation. So 500 files would require 25 rotations. I just timed myself, and rotating the knob between thumb and forefinger I got one rotation per second. With a large knob, and rotating it with a fingertip on the surface, I got two rotations per second. So about 12.5 seconds to scroll through 500 files. In comparison, using the buttons, I timed the continuous scroll mode at about 170ms per item, or 1 minute 25 seconds to scroll through 500 files.
In practice I don't think you'd want folders that big. But the encoder does allow scrolling at 3-6 times faster speed than the buttons, so there is an advantage there for those that want to use large folders.
The practical issues for adding it to the Gotek firmware are whether you have enough inputs for the encoders as well as an LCD, and whether the chip supports sufficient interrupts for the encoders and whatever else it needs to do. I'm not familiar enough with that architecture to comment.
It would be great to see support in the actual firmware. If I'd been aware of the open source version linked to above when I did my project, I'd probably have tried that, and added the rotary encoder code to that myself!
Good luck to anyone having a go with such work
If I can be of any assistance by explaining my code, etc, do get in touch. (I'm not really actively reading this forum at the moment, so feel free to email me via my blog.)