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.
