Chief Delphi

Chief Delphi (http://www.chiefdelphi.com/forums/index.php)
-   C/C++ (http://www.chiefdelphi.com/forums/forumdisplay.php?f=183)
-   -   Servo Help (http://www.chiefdelphi.com/forums/showthread.php?t=113801)

zackd97 17-02-2013 17:57

Servo Help
 
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.

Alan Anderson 17-02-2013 22:26

Re: Servo Help
 
Is the servo power jumper installed on the PWM channel you're wired to?

zackd97 18-02-2013 13:11

Re: Servo Help
 
Quote:

Originally Posted by Alan Anderson (Post 1235331)
Is the servo power jumper installed on the PWM channel you're wired to?

Indeed it is.

Kevin Sevcik 18-02-2013 13:24

Re: Servo Help
 
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.

zackd97 18-02-2013 14:42

Re: Servo Help
 
Quote:

Originally Posted by Kevin Sevcik (Post 1235688)
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.

Alan Anderson 18-02-2013 16:47

Re: Servo Help
 
Quote:

Originally Posted by zackd97 (Post 1235715)
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.

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.

Quote:

It still does not react to my button pushes though.
You should probably show us the code that reads and reacts to button pushes.

zackd97 18-02-2013 17:19

Re: Servo Help
 
Here's the code. It is command based and a bit too inconvenient to put in a post so I uploaded it to github.

https://github.com/zackd97/RobotProject5

The problem areas are in the subsystem GateServoTwo and the commands CloseGateTwo, OpenGateTwo, and the command group GateTwo.

Alan Anderson 18-02-2013 22:00

Re: Servo Help
 
Where are you reading the button? I don't see where in the code the GateTwo command is invoked.

zackd97 18-02-2013 22:23

Re: Servo Help
 
Quote:

Originally Posted by Alan Anderson (Post 1235979)
Where are you reading the button? I don't see where in the code the GateTwo command is invoked.

The association between the button and the command is in the OI.cpp in lines 37 and 38.


All times are GMT -5. The time now is 13:39.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi