![]() |
Trouble Reading Drivers Station Digital Inputs
I'm finding that reading the drivers station digital inputs is unreliable. Our switch panel isn't ready yet so I am tying the signal pin of port 8 directly to the +5 pin. This should avoid the lack of a pull up or pull down problem on the digital inputs.
I'm using the iterativeRobot class. When I call the drivers station method Code:
value = m_ds->GetDigitalIn(8);I notice that IterativeRobot class is synchronized to the drivers station packet. But the DriversStation access methods all do a GetData() call. It looks like GetData does a wait for a new packet although the comment says that it doesn't. Has anyone seen this? |
Re: Trouble Reading Drivers Station Digital Inputs
Quote:
the fix is (sort of) easy, though a little unprofessional attach a ground wire with a 150ohm-ish resistor(thats what we used) to the signal pin, and have the switch connect the positive pin as normal this wil cause the voltage to always be negative if the switch is disconnected, and when it is connected, mostly positive you might want to play around with the resistor ohms to get a good mix hope that helped |
Re: Trouble Reading Drivers Station Digital Inputs
Quote:
|
Re: Trouble Reading Drivers Station Digital Inputs
This does seem a LOT like the flaoting value problem some teams have experienced--you might want to do a continuity test and make sure the current is actuall getting through everything
You could also use a purely software approach to the problem, though it's a bit hack-ish. Since this is apparently a rare event, you could design a "buffering" system, where you keep track of not only the bit that you are feeding into your system but also a few before and after it. In other words, with the circuit closed, this would normally look like: 111 1 111 Where the value is the middle was the one you were feeding to anything that needed that value. Obviously with the circuit open, this should look like 000 0 000 But if you have an occasionally occurring 0, this could look like 111 0 111 In this case, it's fairly trivial for the algorithm to "bridge the gap" and change the 0 to a 1. Your millage will vary depending on how often you get a 0, so you'll probably need to figure out what kind of ratio of 1s to 0s you need for your system to work reliably without losing short periods where the circuit is actually open. |
| All times are GMT -5. The time now is 02:40. |
Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi