I don't think there's a lot of value in using the *Sync version. Otherwise
it's fine, as long as you don't mind that the sample rate varies with the
flow rate. Otherwise, create a separate thread for one or the other.

On Aug 28, 2017 18:21, "Maximillian" <[email protected]> wrote:

> Thanks a lot Ytai.
>
> One more thing.
>
> I plan to use pH sensor along with this flow sensor.
>
> more or less it will be like this:
>
> PulseInput flowMeter = ioio_.openPulseInput(FLOW_METER_PIN, PulseInput.
> PulseMode.FREQ_SCALE_16); //using frequency measurement with 16x scaling
> AnalogInput phMeter = ioio_.openAnalogInput(PH_METER_PIN);
>
>
> float phVolt;
>
> int totalPulse = 0; //set initial value of totalPulse
>
> (this is inside the loop)
>
> {
>
>     duration = flowMeter.getDurationBuffered(); //the loop will wait here for 
> 16 pulse then continue to next line
>
>     totalPulse += 16; //add total pulse by 16 because we use FREQ_SCALE_16
>
>     ....
>     phVolt = phMeter.getVoltageSync();
>     phValue = calculatePhFromVolt(phVolt);
>
>     ....
>
> }
>
>
> I think the phMeter will always has a value to return and will not block
> the UI.
>
> Would it be an issue if combined with the PulseInput.getDurationBuffered()
> ?
>
> Thanks.
>
> On Monday, August 28, 2017 at 9:03:16 PM UTC+7, Ytai wrote:
>>
>> Yup, that's what I meant. And you don't need the sleep.
>>
>> On Aug 28, 2017 1:21 AM, "Maximillian" <[email protected]> wrote:
>>
>>> Hi Ytai, thanks for the reply,
>>>
>>> Based from your suggestion,
>>>
>>> PulseInput flowMeter = ioio_.openPulseInput(FLOW_METER_PIN, 
>>> PulseInput.PulseMode.FREQ_SCALE_16); //using frequency measurement with 16x 
>>> scaling
>>>
>>>
>>> int totalPulse = 0; //set initial value of totalPulse
>>>
>>> (this is inside the loop)
>>>
>>> {
>>>
>>>     duration = flowMeter.getDurationBuffered(); //the loop will wait here 
>>> for 16 pulse then continue to next line
>>>
>>>     totalPulse += 16; //add total pulse by 16 because we use FREQ_SCALE_16
>>>
>>>     ....
>>>
>>>     ....
>>>
>>>     Thread.sleep(100);
>>>
>>> }
>>>
>>>
>>> Do you mean like this?
>>>
>>> And also, do I still need the Thread.sleep(100)? As the
>>> getDurationBuffered() will do pause the loop while waiting for 16 pulse
>>> to come.
>>>
>>> Thanks
>>>
>>>
>>> do I still need to use Thread.sleep(100) when using this
>>> implementation? Since getDurationBuffered will do pausing the loop
>>> waiting for 16 pulse to come.
>>>
>>> On Monday, August 28, 2017 at 11:15:05 AM UTC+7, Ytai wrote:
>>>>
>>>> You can use getDurationBuffered() and apply scaling (to reduce the
>>>> pulse rate). This will ensure you don't miss any pulses. You can even
>>>> ignore the actual value returned, since you don't seem to care about the
>>>> rate, but rather about the count. Each time getDurationBuffered() returns,
>>>> it would mean that 16 pulses (or whatever your scaling is) were observed.
>>>> So you'll end up with a somewhat cumbersome, yet accurate way to count your
>>>> pulses.
>>>>
>>>> On Wed, Aug 23, 2017 at 7:39 PM, Maximillian <[email protected]>
>>>> wrote:
>>>>
>>>>> Fyi, I use this sensor.
>>>>> https://www.seeedstudio.com/Water-Flow-Sensor-YF-B1-p-2878.html
>>>>>
>>>>>
>>>>> On Thursday, August 24, 2017 at 9:38:08 AM UTC+7, Maximillian wrote:
>>>>>>
>>>>>> I think I could get around ~40 pulse per each call of flowMeter.
>>>>>> getFrequencySync() in a Thread.sleep(100) loop.
>>>>>>
>>>>>> Is it still unsafe to just use the getFrequencySync() method for
>>>>>> that amount of pulse?
>>>>>>
>>>>>> Or maybe I can just lower the sleep time to maybe Thread.sleep(50)
>>>>>> for better accuracy?
>>>>>>
>>>>>> Thanks for the hint, I'll try to look into that.
>>>>>>
>>>>>>
>>>>>> On Thursday, August 24, 2017 at 6:18:52 AM UTC+7, Ytai wrote:
>>>>>>>
>>>>>>> What's the maximum pulse rate for your application?
>>>>>>>
>>>>>>> On Wed, Aug 23, 2017 at 3:36 PM, Maximillian <[email protected]>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> Can you give more hint about how to count?
>>>>>>>>
>>>>>>>> I'm not really sure how to do it.
>>>>>>>>
>>>>>>>> Big thanks
>>>>>>>>
>>>>>>>> On Wednesday, August 23, 2017 at 11:56:20 PM UTC+7, Ytai wrote:
>>>>>>>>>
>>>>>>>>> Sampling the frequency and integrating will give you an estimate
>>>>>>>>> of the total. If it's not accurate enough, you'll need to count.
>>>>>>>>>
>>>>>>>>> On Aug 22, 2017 2:51 PM, "Maximillian" <[email protected]>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> Hi Ytai,
>>>>>>>>>>
>>>>>>>>>> This is my current code (trimmed for this post)
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> int FLOW_METER_PIN = 14;
>>>>>>>>>>
>>>>>>>>>> volatile float pulseFreq, totalPulse;
>>>>>>>>>>
>>>>>>>>>> PulseInput flowMeter = ioio_.openPulseInput(FLOW_METER_PIN, 
>>>>>>>>>> PulseInput.PulseMode.FREQ);
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> totalPulse = 0;
>>>>>>>>>>
>>>>>>>>>> public void loop() throws ConnectionLostException, 
>>>>>>>>>> InterruptedException
>>>>>>>>>> {
>>>>>>>>>>
>>>>>>>>>>     pulseFreq = flowMeter.getFrequencySync();
>>>>>>>>>>     totalPulse += pulseFreq;
>>>>>>>>>>     //display totalPulse value to a textView;
>>>>>>>>>>
>>>>>>>>>>     Thread.sleep(100);
>>>>>>>>>> }
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Current behavior is already as I expected, the totalPulse
>>>>>>>>>> textView will updated only when the hall sensor is spinning
>>>>>>>>>> (flow detected)
>>>>>>>>>>
>>>>>>>>>> If I use the getFrequencySync() method, I think the loop is
>>>>>>>>>> paused, waiting the flowMeter to receive input.
>>>>>>>>>>
>>>>>>>>>> If it received input, the totalPulse will increase by the amount
>>>>>>>>>> of pulseFreq from getFrequencySync().
>>>>>>>>>>
>>>>>>>>>> I haven't tested with real water yet (I just blow the flow sensor
>>>>>>>>>> to make the hall spin for early development test)
>>>>>>>>>>
>>>>>>>>>> My question, is it correct to use this approach with the
>>>>>>>>>> getFrequencySync() method?
>>>>>>>>>> Or I still need to hack the DigitalInputImpl to count the pulses?
>>>>>>>>>>
>>>>>>>>>> Thanks
>>>>>>>>>>
>>>>>>>>>> On Wednesday, August 23, 2017 at 4:18:28 AM UTC+7, Ytai wrote:
>>>>>>>>>>>
>>>>>>>>>>> It is known, but there isn't currently a plan to add it. If
>>>>>>>>>>> anyone wants to contribute a patch, I will happily consider 
>>>>>>>>>>> adopting it.
>>>>>>>>>>>
>>>>>>>>>>> On Aug 13, 2017 8:21 PM, "Maximillian" <[email protected]>
>>>>>>>>>>> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Is this still a known missing feature? As this post is from
>>>>>>>>>>>> 2013.. I need to use flow sensor as well..
>>>>>>>>>>>>
>>>>>>>>>>>> On Monday, September 9, 2013 at 10:31:46 AM UTC+7, Ytai wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>> This is known missing feature. You can work around this by
>>>>>>>>>>>>> hacking DigitalInputImpl to count the pulses: its setValue() 
>>>>>>>>>>>>> method will
>>>>>>>>>>>>> get called on every edge.
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Fri, Sep 6, 2013 at 11:21 AM, jorge sb <[email protected]>
>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> Hi. I want to connect a hall sensor flow meter to ioio.
>>>>>>>>>>>>>> Perhaps, I could use "PulseInput" but after reading
>>>>>>>>>>>>>> ioio-wiki, I see that I can't do it with it.
>>>>>>>>>>>>>> Really, I need a simple pulse counter but without loosing any
>>>>>>>>>>>>>> pulse.
>>>>>>>>>>>>>> With flow meter I will like to get:
>>>>>>>>>>>>>> - Total liquid flow (accumulated countered pulses)
>>>>>>>>>>>>>> - Instant flow (reading difference between two counts in a
>>>>>>>>>>>>>> measured time).
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> With this sensor I could get a pulse every 50 msec or less at
>>>>>>>>>>>>>> max rate.
>>>>>>>>>>>>>> I think I could loose pulses doing periodic read of digital
>>>>>>>>>>>>>> input.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Some suggestion.
>>>>>>>>>>>>>> Thanks.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> --
>>>>>>>>>>>>>> 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/grou
>>>>>>>>>>>>>> ps/opt_out.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> --
>>>>>>>>>>>> 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 https://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 https://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 https://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 https://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 https://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 https://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 https://groups.google.com/group/ioio-users.
For more options, visit https://groups.google.com/d/optout.

Reply via email to