We are using a CANSparkMax with a brushed motor and a REV through-bore encoder plugged into the top port (where the NEO usually goes)
mEncoder = mMotor.getEncoder(Type.kQuadrature, 8192);
When zero the position, at any point, and turn in one direction, the rotation count looks good and increments correctly and decrements correctly if I go back. If I turn the other way, from wherever it was when I zeroed the position with
setPosition, it jumps to 274. Has anyone else encountered this?
Did you enable continuous input?
getEncoder produces a
RelativeEncoder object, it doesn’t seem to have a continuous input method?
After a bit more poking, it appears that the
RelativeEncoder class from the SparkMax can’t track negative positions. Fortunately, for our application, I can pad it up.
I am running into this issue as well, what was your solution as its a little annoying…
A jank solution, call .setPosition to -(largeNumber) and only deal with negative positions. Its working for what I need right now.
Sorry to spam thread, but Im now trying to use it for SysID and cant shift the encoder values… any ideas here?