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.

Reply via email to