Chief Delphi

Chief Delphi (http://www.chiefdelphi.com/forums/index.php)
-   Programming (http://www.chiefdelphi.com/forums/forumdisplay.php?f=51)
-   -   Limit Switches (http://www.chiefdelphi.com/forums/showthread.php?t=62456)

ChrisR_522 25-01-2008 06:37

Limit Switches
 
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

Re: Limit Switches
 
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.
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.

ChrisR_522 25-01-2008 08:04

Re: Limit Switches
 
Hey, thank you so much! It worked!


All times are GMT -5. The time now is 08:59.

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