Chief Delphi

Chief Delphi (http://www.chiefdelphi.com/forums/index.php)
-   C/C++ (http://www.chiefdelphi.com/forums/forumdisplay.php?f=183)
-   -   Limit Switch Problems (http://www.chiefdelphi.com/forums/showthread.php?t=113522)

zackd97 14-02-2013 21:47

Limit Switch Problems
 
I'm having trouble creating a functional program for limit switches. The idea is that there is an arm that will move forward, trigger a switch at its limit, and move back until it triggers another switch in the ready position. I think the problem is either the switches themselves, my if statements, or how I'm trying to take the values of the switches. Right now when I run the program the arm will move back without stopping. The arm will continue to move back until I restart the cRio, completely ignoring the switches. I tried changing the if statements to false, but when I do that the arm just twitches for a second. If anyone can find what I'm doing wrong or give a better solution, that would be awesome.

The code can be found here- https://github.com/zackd97/RobotProject4

Sorry if the github repository sucks, I'm pretty new at this.

Edit: I forgot to mention that all of the issues are in the loader subsystem, pushfrisbee command, readyposition command, and the frisbeeload command group.

bob.wolff68 17-02-2013 00:36

Re: Limit Switch Problems
 
I'm not a pro at reading robotbuilder code, but in just taking a cursory glance at your loader subsystem file, I see the following code...
Code:

bool Loader::GetReadySwitch(){
        readySwitch->Get();
}
bool Loader::GetEndSwitch(){
        endSwitch->Get();
}

While I didn't study the way these functions are used, it would seem that they are not doing you any good... GetReadySwitch() and GetEndSwitch() should *return* a boolean. They are not returning anything. They each go and 'Get()' the value of the digital inputs, but they don't return them... a corrected version might be:

Code:

bool Loader::GetReadySwitch(){
        return readySwitch->Get();
}
bool Loader::GetEndSwitch(){
        return endSwitch->Get();
}

Without returning anything, whomever calls those Get*Switch() functions won't get any info back.

Also, please look at your compiler warnings. The compiler should warn you that you have defined a function as a 'bool' but you returned no value at all. Warnings from compilers are often times very important - especially when you're less experienced.

bob


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