using micros is kinda redundant. theres already a function called pulseIn that measures the time between pulses, high or low.
Indeed, i hadn't used it before, it saves writing some lines, thank you !
One thing, Pulsein() seems to measure the time a pin is High or Low, not... High and Low.
From the reference :
Reads a pulse (either HIGH or LOW) on a pin. For example, if value is HIGH, pulseIn() waits for the pin to go HIGH, starts timing, then waits for the pin to go LOW and stops timing.
To measure frequency you'll need both, so maybe you need to multiply the pulsein() value by two.
I guess both methods are more then fast enough to measure.
Minimum value to measure with pulsein() is 10 microseconds.
In theory you could measure up to 50.000Hz, about 150 times as fast as the max output of the sensors.
BTW, Any idea how the sensors behave below 0.2 or 0.4 GPM ? it's 288/576 Gallons a day...