https://groups.google.com/d/msg/ioio-users/B6dTfB2scpI/b0o8Q15SEwgJ
On Fri, Apr 25, 2014 at 3:09 PM, Vic Wintriss <[email protected]>wrote: > Could you give me a simple example of how to interrupt getDuration(). I > checked the TimerTask forum, but am not sure that I understand. I assume > that getDuration() is blocking. > > > On Wednesday, April 23, 2014 9:21:54 PM UTC-7, Ytai wrote: > >> 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/ >>>>>>>>> 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. >>>>> >>>> >>>> -- >>> 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.
