I’m trying to write code that will cause a servo to move to one position for a certain amount of time and then move back to where it was. This is in a command based system. So far what I’ve tried are different functions for open, close, and done that are along the lines of this-
void GateServo::Open(){
gateTwo->Set(0);
}
and
void GateServo::Close(){
gateTwo->Set(.5);
and
void GateServo::done(){
gateTwo->SetOffline();
}
In this case gateTwo is the servo itself. I’m calling these functions in two different commands that are then put in a command group that calls the commands sequentially. The problem is that it doesn’t do anything. Am I doing anything wrong and/or is there a better way of doing it? Any help is appreciated.
Make sure your servo is working period first. Make yourself a MoveStick method, and ServoWithStick command to drive the servo with a Joystick. Then set that as the default command for the subsystem and check to make sure you can even move it to begin with. If it’s not moving with that basic of code, you know your problem is electrical or really basic programming level.
The servo is definitely working. I’m 99% positive the problem is my programming.
When the servo is plugged in and the robot is enabled, there’s no reaction. If I switch the way the servo is plugged into the PWM it will lock into a position and attempt to maintain that position. It still does not react to my button pushes though.
A properly operating servo will “lock into a position and attempt to maintain that position.” It sounds like your servo had been connected backwards before.
It still does not react to my button pushes though.
You should probably show us the code that reads and reacts to button pushes.