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.
