/* YF-S201 Hall Effect Water Flow Meter / Sensor http://www.hobbytronics.co.uk/yf-s201-water-flow-meter Read Water Flow Meter and output reading in litres/hour */ volatile int flow_frequency; // Measures flow meter pulses unsigned int l_hour; // Calculated litres/hour unsigned char flowmeter = 2; // Flow Meter Pin number unsigned long currentTime; unsigned long cloopTime; void flow () // Interruot function { flow_frequency++; } void setup() { pinMode(flowmeter, INPUT); Serial.begin(9600); attachInterrupt(0, flow, RISING); // Setup Interrupt // see http://arduino.cc/en/Reference/attachInterrupt sei(); // Enable interrupts currentTime = millis(); cloopTime = currentTime; } void loop () { currentTime = millis(); // Every second, calculate and print litres/hour if(currentTime >= (cloopTime + 1000)) { cloopTime = currentTime; // Updates cloopTime // Pulse frequency (Hz) = 7.5Q, Q is flow rate in L/min. (Results in +/- 3% range) l_hour = (flow_frequency * 60 / 7.5); // (Pulse frequency x 60 min) / 7.5Q = flow rate in L/hour flow_frequency = 0; // Reset Counter Serial.print(l_hour, DEC); // Print litres/hour Serial.println(" L/hour"); } }