Your local leftDistance variable is shadowing the class field...
On Apr 16, 2014 3:18 PM, "Vic Wintriss" <[email protected]> wrote:

> It’s not too important that we get every pulse.
> I tried the following code, but still get all zeroes:
> 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) throws ConnectionLostException
> {
> this.leftInput = ioio.openPulseInput(LEFT_ULTRASONIC_INPUT_PIN, PulseMode.
> POSITIVE);
> this.leftStrobe = ioio.openDigitalOutput(LEFT_STROBE_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();
> while (true)
> {
>   float leftDistance = leftInput.getDurationBuffered();
>   if (leftDistance > .0000001)
>   {
>   break;
>   }
> }
> }
>
> public float getLeftDistance()
> {
> return leftDistance;
> }
> }
> What should I try next?
> Thanks for the lead to the 4-pin sensors.  I have ordered some…but since a
> lot of the kids already have the 3-pin versions, I’m stuck with having to
> make that work, too.
> I use use a pretty simple circuit to separate the input from the
> output…attached.
>
> Thanks for all the great help.
>
> On Apr 15, 2014, at 9:41 PM, Ytai Ben-Tsvi <[email protected]> wrote:
>
> Yes, that's what I meant when I said that you may miss the actual pulse.
>
> What about the following approach:
> beginBatch();
> sendPulse();
> endBatch();
> while (true) {
>   float duration = pulseIn.GetDurationBuffered();
>   if (duration > MIN_DURATION) return duration;
> }
>
> Of course, you can timeout if you want.
> With this approach, every pulse is captured and considered, and you're
> filtering out the really short ones that indicate the input pulses.
>
> BTW, there are equivalent ultrasonic range finders that have a more
> pleasant interface (for example, analog, or similar to the one you have but
> the feedback is on a separate pin). Here's one (available on DX for <$5):
> http://www.micropik.com/PDF/HCSR04.pdf
>
>
>
> On Tue, Apr 15, 2014 at 7:00 PM, Vic Wintriss <[email protected]>wrote:
>
>> Ytai:
>>
>> With the sync() call after the endBatch() and before the getDuration()
>> the program hangs up and I get no readings.
>>
>> Vic
>>
>> On Apr 15, 2014, at 5:32 PM, Ytai Ben-Tsvi <[email protected]> wrote:
>>
>> This code doesn't have the sync() call I proposed. It should come after
>> the batch.
>> On Apr 15, 2014 4:43 PM, "Vic Wintriss" <[email protected]> wrote:
>>
>>> Ytai:
>>>
>>> This code produces only 1.6875E-5…reading 2 times per second.
>>>
>>> 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) throws ConnectionLostException
>>>  {
>>> this.leftInput = ioio.openPulseInput(LEFT_ULTRASONIC_INPUT_PIN,
>>> PulseMode.POSITIVE);
>>> this.leftStrobe =
>>> ioio.openDigitalOutput(LEFT_STROBE_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.getDurationSync();
>>> }
>>>
>>> public float getLeftDistance()
>>> {
>>> return leftDistance;
>>>  }
>>> }
>>> On Apr 15, 2014, at 4:27 PM, Ytai Ben-Tsvi <[email protected]> wrote:
>>>
>>> Can you send me the most "correct" version of your code that
>>> demonstrates the issue?
>>> I can probably make the necessary changes to sync () if this is indeed a
>>> problem.
>>> On Apr 15, 2014 4:03 PM, "Vic Wintriss" <[email protected]> wrote:
>>>
>>>> Thanks for the ideas. I've tried many combinations of synch,
>>>> readBuffered...etc, but unfortunately it still reads very small
>>>> numbers...probably measuring the last part of the trigger pulse. Is there
>>>> any way that I can delay the read by a couple of hundred micro seconds?
>>>>  Could you do the..... sync() call  "send" half inside the batch and "wait"
>>>> half outside thing?
>>>>
>>>> Thanks for all the help.  The kids are trying to use these sensors for
>>>> iARoC 2014 (the International Autonomous Robot Competition) here in San
>>>> Diego.
>>>>
>>>> --
>>>> 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 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 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.

Reply via email to