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]<javascript:> > > 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_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) >>>>>>>>>>>> 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] <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.
