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] <javascript:>> 
> 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/groups/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] <javascript:>.
>> To post to this group, send email to [email protected] 
>> <javascript:>.
>> 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