Personally I never liked the arduino abstraction of servo 'degrees' and have always used the "myservo.writeMicroseconds(1500); // set servo to mid-point" command
Yes, they are standard features on an RC transmitter, but I wonder if the ease of adding a map function to get this capability into a sketch is one reason why more people don't request this feature. How many bytes of RAM did you use for the trim functions.
My recollection is that the trim added 1 byte. I also used the 4microsecond accuracy to trade some resolution for range. The reverse flag was in the pinout attribute so used an otherwise unused bit.
One way of implementing trim without using and RAM is to modify the min and max values that can be set in the attach method. The resolution of these values is currently 4 microseconds, I wonder if that would be fine enough for trim settings?
I do not see how modifying the end points changes where the servo centers. Servo horn attachment leaves the horn connected at a somewhat random angle (within a fraction of the spline angle) Trim is used so that when everything else says for a servo to be centered, the horn is actually centered. Adding the trim feature keeps the logic in the code clean. Tell the servo to go straight, and the servo is straight.
I know that this results in telling the servo to go to position 1500, and the resulting servo.writemicroseconds sends a value different than 1500. But this is a servo class, using methods that make working with servos convenient.
Trim and Reverse are features that are so convenient, they have been included in most systems using servos for ages.
Not a concrete wish list item but i find myself struggling with the mismatch between real servos and the model. E.G. Many servos can't really rotate 180 and can't take pulses from 644 to 2400. If i set the limits to protect the servo i have to map the angle for Accuracy.
This brings up another feature I added to my version of the library. Scaling. I have 30 of the same servos that I ordered at the same time. I tested each, and there is deviation in the servo movement per uS. I used a protractor to measure difference in servo movement with two pulses that differed by 1600uS. I expected 160 degrees of servo movement. What I got was 164 degrees through 174 degrees. I am also using 6 higher torque servos. They gave me 160 degrees.
Since I want a predictable amount of movement for a given command, I want to assign a scaling factor to each servo. I can use the same map command I use to reverse the servo, but just modify the range by the scaling factor, and get the results I am looking for. This feature adds another byte to the servo structure.
This particular scaling feature is less critical in my mind that trim and reversing.