Log in

View Full Version : Limit switch in easy c?


chadbarbe
13-01-2006, 16:13
I've only messed around with easy c a couple of times and i was able to get a 2 motor tank drive system up and running in no time... i love it! however, I'd like to get my limit switches working to prevent an arm motor from going too far (either up or down)... I know how to do this by handing coding in MP lab but I am not sure how to do it within the constraints of Easy C. Any suggestions?

CHAD

Michael Leicht
13-01-2006, 16:19
well i don't know how different the easy c from vex is to FRC but i did make a code for two limit switches on one motor.

if you want the code email me at michaelleicht@gmail.com and i will get you that code for the limit switch.

Kingofl337
13-01-2006, 16:57
1. Map Analog to OI Input to a variable
2. Map PWM Control to a variable
3. Make a few "IF" statements
4. Make a few Assignments

Thats pretty much the gist of it. We will be releasing
samples in the future on how to perform these activities. :D

Also, EasyC for FRC and VEX work pretty much the
same way for driver control.

artdutra04
13-01-2006, 17:00
I've only messed around with easy c a couple of times and i was able to get a 2 motor tank drive system up and running in no time... i love it! however, I'd like to get my limit switches working to prevent an arm motor from going too far (either up or down)... I know how to do this by handing coding in MP lab but I am not sure how to do it within the constraints of Easy C. Any suggestions?

CHADAll you need to do is to be able to tell when the limit switch was depressed at the same time that the motor is trying to run in that direction. That way, you will only limit the direction of the motor in that direction, while still allowing for it to go in the other direction.

Here is how this sample arm/elevator is set up. There is an upper and a lower limit switch. The PWM signal for moving the arm up must be between 127 and 255. The PWM signal for moving the arm down will be between 0 and 127. Here is a diagram of this setup:

http://www.team228.org/images/arm-limit-switch.jpg


And here is the code: (from EasyC 2.0)

#include "Main.h"

void main ( void )
{
char upperlimit;
char lowerlimit;
unsigned char arm;

while ( 1 )
{
upperlimit = GetDigitalInput ( 1 ) ; //Upper limit Switch is plugged into I/O Port 1
lowerlimit = GetDigitalInput ( 2 ) ; //Lower limit Switch is plugged into I/O Port 2
arm = GetRxInput ( 1 , 1 ) ; //Arm control is coming from RX port 1, Channel 1
if ( upperlimit == 0 && arm > 127 )
{
arm = 127 ;
}
if ( lowerlimit == 0 && arm < 127 )
{
arm = 127 ;
}
SetPWM ( 1 , arm ) ; //Set PWM port 1 to 'arm' variable
}
}

Kingofl337
13-01-2006, 17:05
In FRC you would substitute "GetRXInput" with "GetOIAInput".

Thanks artdutra04 for the example.

chadbarbe
13-01-2006, 18:27
Thanks everybody! This information was very helpful. I had forgotten that I can use the joystick value as a representation of what my PWM output will be. I was stuck because I couldn't find a way to look up what the PWM value was and didn't realize that I didn't even need it!

scottmso
02-02-2006, 09:51
Be careful not to use a while loop for this, I did that and the limit switch essentially acted as a "kill switch" for the robot :D