Nope. The PulseInput module was really not designed for such a use-case. If you had only the output pulses on the input things would "just work". Try the AND gate trick.
On Wed, Apr 23, 2014 at 9:15 PM, Vic Wintriss <[email protected]>wrote: > I have tried all combinations of opening pulse input after sending the > trigger pulse...no luck. I am reading both the output (trigger pulse) and > the echo (return) pulse...alternately. About 5 trigger pulse readings to > each echo pulse reading. Any work around ideas? > > > On Wednesday, April 23, 2014 8:44:02 PM UTC-7, Ytai wrote: > >> Opening the pulse input after sending the pulse should have done that. >> You shouldn't be able to get a pulse from the past the way you're doing >> this. Are you saying that what you're reading back is the output pulse? >> It is possible that there's a bug in the firmware side on the PulseInput >> implementation in that case. >> >> >> On Wed, Apr 23, 2014 at 2:33 PM, Vic Wintriss <[email protected]>wrote: >> >>> I'm using 0503. >>> >>> The problem is that the ping and the return are getting out of sync. >>> The getDuration() readings match exactly the times that I see on the scope. >>> How can I synchronize so that I only start listening after the ping >>> pulse is complete? >>> >>> >>> On Wednesday, April 23, 2014 8:51:26 AM UTC-7, Ytai wrote: >>> >>>> 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) throwsConnectionLostException >>>>>>>>> >>>>>>>>> { >>>>>>>>> >>>>>>>>> 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/to >>>>>>> pic/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. >>> >> >> -- > 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.
