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.