It doesn't work when I close and then reopen the input line. Can you recommend some tests that I can do to try and find out why it doesn't work?
On Saturday, April 26, 2014 4:57:52 PM UTC-7, Ytai wrote: > > Yes. This is what we tried before. I'm still under the impression that it > should have worked but you've reported that it doesn't. > > Can I close the input while I am doing the strobe so that the input is not > being exposed to both pulses? > > On Saturday, April 26, 2014 4:23:51 PM UTC-7, Ytai wrote: >> >> @Duane >> At this point I'm convinced that there is no reason why this *should* work. >> If it used to work in the past it is probably coincidental and you can of >> course downgrade if you prefer. >> I'm not going to spend any time supporting one specific sensor that has a >> weird interface. You have several viable options for solving your problem: >> >> - Use a different sensor as recommended above. >> - Filter out the trigger pulse using simple discrete logic as >> recommended above. >> - Change the firmware to support your use-case, for example, to >> filter out pulses shorter than a certain limit or even having a dedicated >> PING interface that can do both the output and input. >> >> @Vic >> While you're generating the output with one pin and reading the input >> with another, the latter pin is being exposed to both signals. >> >> >> On Sat, Apr 26, 2014 at 4:20 PM, Vic Wintriss <[email protected]>wrote: >> >>> The output pulse and input pulse are not on the same pin. I assume by >>> line you meant pin. Output is on one pin and input is on another pin. >>> >>> >>> On Saturday, April 26, 2014 4:04:51 PM UTC-7, Ytai wrote: >>> >>>> PulseInput is primarily designed for: >>>> >>>> 1. Measuring rate or pulse-width of a pulse train signal, where it >>>> is not necessarily important to get a result for each and every pulse. >>>> This >>>> is useful, for example, to measure speed of a wheel or to decode a >>>> servo >>>> signal. >>>> 2. Measuring width of individual pulses that occur relatively >>>> sporadically, like outputs from ultrasonics. >>>> >>>> In your case, we have two kinds of pulses (in/out) on the same line in >>>> close proximity, and you're trying to extract one but not the other. Not >>>> that there is anything particularly hard to implement such a feature, only >>>> that it is not generic enough to be addressed in the standard interfaces >>>> that I've developed. >>>> >>>> >>>> On Fri, Apr 25, 2014 at 9:50 PM, Vic Wintriss <[email protected]>wrote: >>>> >>>>> I am just trying to put out a pulse on one pin and then read a pulse >>>>> width on a different pin 750 microsecs later. Why do you say that it was >>>>> not designed for such a use? >>>>> >>>>> >>>>> 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_ULTRA >>>>>>>>>>>>>>> SONIC_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) >>>>>>>>>>>>>>> throws ConnectionLostException, 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/uns >>>>>>>>>>>>> ubscribe. >>>>>>>>>>>>> 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. >>> >> >> -- > 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.
