|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
|
|
Thread Tools | Rate Thread | Display Modes |
|
|
|
#1
|
|||
|
|||
|
limit switches
Hi,
We've been having a little trouble using limit switches. We get the value registered when the limit switch is pressed, but when it is released, the value doesn't change back. I figured the first thing to check would be the wiring. I haven't seen much on chiefdelphi after searching on limit switches, so if you could provide a wiring diagram, that would be helpful. Then secondly, maybe sample code for referencing the limit switch. ThankS! -Stephen P. |
|
#2
|
||||
|
||||
|
Re: limit switches
As per page 9 of the "Full Size RC Reference Guide", switches are connected between SIG and GND on the digital input.
|
|
#3
|
|||
|
|||
|
Re: limit switches
we're having a big problem with our limit switches. Basically, once it is pressed, the value of it changes it to 1, which is good, but once it is released, it doesn't change back to 0. hilf mir! danke schon
|
|
#4
|
||||
|
||||
|
Re: limit switches
Quote:
|
|
#5
|
||||
|
||||
|
Re: limit switches
Quote:
1) How are the switches connected? For example: Are they connected to the RC Digital input 1, 2, 3 etc. 2) How are you "registering them"? Do you have your own code, or are you using the interrupts associated with the digital inputs? 3) When it sticks, how do you unstick it? Manually or by reseting the controllers? If you are using the digital inputs, my guess is that the switches are sticking, either by binding of the mechanism, or internally to the micro switch it's self. If you are using your own code to set a flag, the code may not be written to reset the flag once the switch state changes. Good Luck, and let us know what you find. |
|
#6
|
||||
|
||||
|
Re: limit switches
Quote:
If you find that it stays low after you release the switch, then you know it's the switches fault. Get a new one... ![]() |
|
#7
|
|||
|
|||
|
Re: limit switches
I think the switch is ok. The problem is, once pressed, the value I use to reference it in the code (rc_dig_in08 == 0) when it is released, does not recognize that it is released. It recognizes in the code when it changes to one, though (rc_dig_in08 == 1) when it is pressed, but upon release, it doesn't change back to zero. Would this be code, I don't think so anyways, but I have my doubts as to whether it is hardware, because my code is such that the motor should only turn if the rc_dig_in08 == 0, and once the switch is released, and I press the button to turn the motor, it acts as if the rc_dig_in08 did indeed return back to 0, it's normal state. This really perplexes me. If you want to see my code, just respond and ask and I'll show you, it's very simple. My Mentor thinks it's possible we have a limit switch, that remembers its state, and upon release of the switch, it stays that way instead of returning back to it's 0 state. I hope this made sense, if not (I'm slightly confused myself!), I'll post the code, and will try to provide wiring details on our limit switch on Thursday. Thank you for you help!
|
|
#8
|
|||||
|
|||||
|
Re: limit switches
Quote:
Please post the part of the code that isn't doing what you expect it to do. |
|
#9
|
|||||
|
|||||
|
Re: limit switches
Try adding a printf to your code, see what it puts out.
printf("Limit Switch: %f \n", rc_dig_in08); |
|
#10
|
|||||
|
|||||
|
Re: limit switches
Quote:
|
|
#11
|
|||
|
|||
|
Re: limit switches
Quote:
Both the %d and (for our RC compiler) the cast to int are important... |
|
#12
|
|||||
|
|||||
|
Re: limit switches
Heh, yeah sorry about that. It is %d not %f. It's little (seemingly) trivial things like that that always get me.
eugene: I've never used (int) before, and my printf's work fine. |
|
#13
|
|||||
|
|||||
|
Re: limit switches
I am not sure if the question has been answered or not but I can't really diagnose the problem with out the code but what my first idea would be is that there is not an else statement following his if statement to turn the motor off when the switch is not pressed.
if (button8 == 1) {pwm01 = 254;} else {pwm01 = 127;} Wait, after rereading some of the posts maybe this is not the problem. Please post your code so we can further diagnose it. Last edited by CyberWolf_22 : 29-04-2005 at 01:09. |
|
#14
|
|||
|
|||
|
Re: limit switches
thanks for all your help. I've got it working now. the problem was just in how I was accessing the limit switch in the code. there was a variable that wasn't being reset when the switch changed its state. thanks for all your help. Originally, this wasn't the only problem, we had problems wth our buttons that kept messing me up too. but now that's all solved. thanks for the help!!!
the code you posted worked fine. thanks again. |
|
#15
|
|||||
|
|||||
|
Re: limit switches
I searched and couldn't find and couldn't think through the code for:
I have a motor and 2 Limit Switches that sets the upper and lower limits of an arm from our 2003 Robot. I want to have it so when I hit a Trigger on the joystick it sends the motor forward until it hits the Top limit switch or if it is already at the top to reverse the motor until it hits the Bottom Limit Switch. I have: #define T_DRIVE pwm01 #define Up_T_Limit rc_dig_in01 /* Limit Switch on Full Up Set */ #define Down_T_Limit rc_dig_in02 /* Limit Switch on Full Down Set */ #define T_BUTTON_BTN p2_sw_trig /* Button to change T state. */ /* T state variable. */ int intTState = 0; Thanks in advance <slightly off topic> This is for an off season project to convert our PBASIC 2003 robot into a vision robot for presentations </slightly off topic> |
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Common Ground on Limit Switches | Gary Bonner | Electrical | 4 | 18-02-2005 13:24 |
| Robot Controller File Size Limit ?? | RoboGeek | Programming | 1 | 17-01-2005 19:59 |
| material cost limit | haverfordfords | Fundraising | 3 | 06-12-2004 19:21 |
| Limit Switches help. | Xufer | Programming | 9 | 21-04-2004 21:21 |
| Need help with custom switches | archiver | 2001 | 3 | 24-06-2002 00:35 |