Are you using the latest firmware?
Also, cancellation is supported. Search the forum for TimerTask.


On Tue, Apr 22, 2014 at 10:10 PM, Vic Wintriss <[email protected]>wrote:

> 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]>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]> 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]>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_ST
>>>>> ROBE_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].
>>>> 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.
>>>>
>>>
>>>
>>> --
>>> 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].
>>>
>>> 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.
>>>
>>>
>>>  --
>>> 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.
>>>
>>
>>  --
> 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.
>

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