Quote:
|
Originally Posted by chadbarbe
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
|
All 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:
And here is the code: (from EasyC 2.0)
Code:
#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
}
}