I tried the following:

public void read() throws ConnectionLostException, InterruptedException {

 ioio.beginBatch();

 leftStrobe.write(false);

 leftStrobe.write(true);

 leftStrobe.write(false);

   leftInput = ioio.openPulseInput(LEFT_ULTRASONIC_INPUT_PIN,

  PulseMode.POSITIVE);

   ioio.endBatch();

 leftDistance = (int) (leftInput.getDurationBuffered() * 1000000);

 leftInput.close();

 SystemClock.sleep(100);

 dashboard.log(leftDistance + "");

}
It makes one reading and then hangs up.  How do I time out if I want stop 
waiting?
I put the scope on the sensor and discovered that I am reading alternately 
both the trigger pulse and the echo pulse...most often the trigger pulse.

On Tuesday, April 22, 2014 5:05:23 PM UTC-7, Ytai wrote:
>
> No, there isn't, and even if there were, I'm not sure this will actually 
> do what you want.
> Have you tried the hack I recommended on the previous post?
>
>
> On Mon, Apr 21, 2014 at 8:36 PM, Vic Wintriss 
> <[email protected]<javascript:>
> > wrote:
>
>> Good idea about the logic fix.  I’m redoing the interface boards, so I 
>> might add that logic.
>> If I am, in fact, reading part of the trigger pulse, is there any way of 
>> imposing a short, predictable delay…say 50 microsecs…after the trigger 
>> pulse but before the getDuration() read?
>>
>> On Apr 21, 2014, at 5:12 PM, Ytai Ben-Tsvi <[email protected]<javascript:>> 
>> wrote:
>>
>> Good catch, I forgot about this constraint.
>> In that case, this (similar to what you've proposed) approach might work:
>>
>> beginBatch();
>> generatePulse();
>> openPulseIn();
>> endBatch();
>> getDuration();
>> closePulseIn();
>>
>> I'd like to emphasize that the fact we have to jump through weird hoops 
>> to get is working is mostly due to the fact that this sensor has a weird 
>> interface. BTW, another thing you can do is use a discrete logic gate to 
>> filter out the ping input pulse from the output. Something like:
>> clean_out = ping_pin & !ioio_pulse_out_pin
>>
>> This will convert the Ping's interface to be similar to the one of the 
>> other sensor I referred you to.
>>
>>
>>
>> On Mon, Apr 21, 2014 at 3:23 PM, Vic Wintriss 
>> <[email protected]<javascript:>
>> > wrote:
>>
>>> I don't think that I can use getDurationBuffered() in this case. The 
>>> getDuration() Interface notes say: "...Note that once a pulse is detected, 
>>> the next one must have its leading edge at least 5ms after the leading edge 
>>> of the current one, or else it will be skipped."  The ping pulse is about 
>>> 50 microsecs long, and the echo pulse comes about 750 microsecs after the 
>>> ping pulse,  If I am getting the last part of the ping pulse, the echo 
>>> pulse will come too soon for getDurationBuffered() to acquire the echo 
>>> pulse.  Am I understanding this right?
>>>
>>>
>>> On Sunday, April 13, 2014 7:22:39 PM UTC-7, Vic Wintriss wrote:
>>>>
>>>> I am trying to use the Parallax Ping))) ultrasonic sensor with a ioio 
>>>> V1 board, using the IOIO00503 library.  I get a good looking signal...see 
>>>> the attached scope view, but the input.getDuration() call returns 16.8 
>>>> micro seconds most of the time, called 2 times per second.  Every once in 
>>>> a 
>>>> while I get the proper number. 
>>>>
>>>>  Any ideas? Here is the code:
>>>>
>>>> import ioio.lib.api.DigitalOutput;
>>>>
>>>> import ioio.lib.api.IOIO;
>>>>
>>>> import ioio.lib.api.PulseInput;
>>>>
>>>> import ioio.lib.api.PulseInput.PulseMode;
>>>>
>>>> import ioio.lib.api.exception.ConnectionLostException;
>>>>
>>>>
>>>> public class UltraSonicSensors 
>>>>
>>>> {
>>>>
>>>> private static final int LEFT_ULTRASONIC_INPUT_PIN = 35;
>>>>
>>>> private static final int LEFT_STROBE_ULTRASONIC_OUTPUT_PIN = 15;
>>>>
>>>> private final PulseInput leftInput;
>>>>
>>>> private DigitalOutput leftStrobe;
>>>>
>>>> private float leftDistance;
>>>>
>>>> private IOIO ioio;
>>>>
>>>>
>>>> public UltraSonicSensors(IOIO ioio) throws ConnectionLostException 
>>>>
>>>> {
>>>>
>>>>  this.leftInput = ioio.openPulseInput(LEFT_ULTRASONIC_INPUT_PIN, 
>>>> PulseMode.POSITIVE);
>>>>
>>>>  this.leftStrobe = ioio.openDigitalOutput(LEFT_
>>>> STROBE_ULTRASONIC_OUTPUT_PIN);
>>>>
>>>>  this.ioio = ioio;
>>>>
>>>> }
>>>>
>>>>
>>>> public void read() throws ConnectionLostException, 
>>>> InterruptedException 
>>>>
>>>> {
>>>>
>>>>  read(leftStrobe, leftInput);
>>>>
>>>> }
>>>>
>>>>
>>>> private void read(DigitalOutput strobe, PulseInput input) 
>>>> throwsConnectionLostException, InterruptedException 
>>>>
>>>> {
>>>>
>>>>  ioio.beginBatch();
>>>>
>>>>  strobe.write(true);
>>>>
>>>>  strobe.write(false);
>>>>
>>>>  ioio.endBatch();
>>>>
>>>>  this.leftDistance =  input.getDuration();
>>>>
>>>> }
>>>>
>>>>
>>>> public float getLeftDistance() 
>>>>
>>>> {
>>>>
>>>>  return leftDistance;
>>>>
>>>> }
>>>>
>>>> }
>>>>
>>>
>>> -- 
>>> You received this message because you are subscribed to the Google 
>>> Groups "ioio-users" group.
>>> To unsubscribe from this group and stop receiving emails from it, send 
>>> an email to [email protected] <javascript:>.
>>> To post to this group, send email to [email protected]<javascript:>
>>> .
>>> Visit this group at http://groups.google.com/group/ioio-users.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>
>> -- 
>> You received this message because you are subscribed to a topic in the 
>> Google Groups "ioio-users" group.
>> To unsubscribe from this topic, visit 
>> https://groups.google.com/d/topic/ioio-users/3MDLEEKtejY/unsubscribe.
>> To unsubscribe from this group and all its topics, send an email to 
>> [email protected] <javascript:>.
>>
>> To post to this group, send email to [email protected]<javascript:>
>> .
>> Visit this group at http://groups.google.com/group/ioio-users.
>> For more options, visit https://groups.google.com/d/optout.
>>
>>
>>  -- 
>> You received this message because you are subscribed to the Google Groups 
>> "ioio-users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] <javascript:>.
>> To post to this group, send email to [email protected]<javascript:>
>> .
>> Visit this group at http://groups.google.com/group/ioio-users.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"ioio-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/ioio-users.
For more options, visit https://groups.google.com/d/optout.

Reply via email to