Log in

View Full Version : Limit Switches


ChrisR_522
25-01-2008, 06:37
How can we go about thoroughly programming the limit switches to control a specific motor using MPLab,
ex: if ((dig_in03)) { pwm03 = p3_y; } else { pwm03 = 127; }
Is that the correct way?

Any help would be greatly appreciated, Thanks!

Roger
25-01-2008, 07:10
You're up a bit late, aren't cha? (Or early? Do programmers ever get to see the sun?) :cool:

I think it's rc_dig_in03.

Here's some code we had from last year, using joystick 2 y-axis to move the grabber arm up or down (like your lower arm with the motor at the elbow). We had a limit switch (LS) at the top and bottom to stop the motor, but allows it to go the other way even if it reaches the limit switch.
//-------------------------- ARM WORK 3 -------------------------------------
//Arm desired direction is from JoyStick2, Y-axis. UP goes fwd, DOWN is back.
//pwm05 is the motor. LimitSwitch 5 and 7 is fwd and back stop points.
//Change pwm numbers of motor, LS, and Joystick as need be.
if (p2_y >(127+50)) //If Joystk2 Y pushed up - arm forward
{
if (rc_dig_in05 == 0) //is LS5 not pressed?
{ pwm05= 127+3; } // No- turn motor on!
else
{ pwm05= 127; } // Yes- turn motor off!
}
else if (p2_y < (127-50)) //If Joystk2 Y pulled back - arm backwrd
{
if (rc_dig_in07 == 0) //is LS7 not pressed?
{ pwm05= 127-3; } // No- turn motor on!
else
{ pwm05= 127; } // Yes- turn motor off!
}
else
{ pwm05= 127; } //Turn motor off

Of course if you're doing autonomous, don't use the joystick! ;) Just remember to cover all possibilities (all if/ifelse/else's) so you know at the end the motors are on or off.

This wasn't our final code, but it did work at the time. As always YMMV.
______________________
One of the main causes of the fall of the Roman Empire was that, lacking zero, they had no way to indicate successful termination of their C programs.

ChrisR_522
25-01-2008, 08:04
Hey, thank you so much! It worked!