Thread: Limit Switches
View Single Post
  #2   Spotlight this post!  
Unread 25-01-2008, 07:10
Roger Roger is offline
Registered User
FRC #1153
 
Join Date: Jan 2006
Rookie Year: 1900
Location: Walpole MA
Posts: 685
Roger has a reputation beyond reputeRoger has a reputation beyond reputeRoger has a reputation beyond reputeRoger has a reputation beyond reputeRoger has a reputation beyond reputeRoger has a reputation beyond reputeRoger has a reputation beyond reputeRoger has a reputation beyond reputeRoger has a reputation beyond reputeRoger has a reputation beyond reputeRoger has a reputation beyond repute
Re: Limit Switches

You're up a bit late, aren't cha? (Or early? Do programmers ever get to see the sun?)

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.
Code:
   //-------------------------- 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.