#include <mechButton.h>
#include <timeObj.h>
#define FLOW_PER_CLK 2.5 // Flow units, say.. Ml
#define FLOW_TIME_MS 1000 // Every second? Can be changed.
#define FLOW_METER_PIN 2
#define PUMP_BTN_PIN 4
#define PUMP_PIN 3
mechButton flowMeter(FLOW_METER_PIN);
mechButton pumpSwitch(PUMP_BTN_PIN);
timeObj flowTimer(FLOW_TIME_MS);
float flowAmount;
float flowRate;
bool pumpOn;
void setup() {
Serial.begin(9600);
pinMode(PUMP_PIN,OUTPUT);
flowAmount = 0;
flowRate = 0;
pumpOn = false;
flowMeter.setCallback(flowClk);
pumpSwitch.setCallback(pumpClk);
}
void flowClk(void) {
if (!flowMeter.getState()) {
flowAmount = flowAmount + FLOW_PER_CLK;
}
}
void pumpClk(void) {
if (!pumpSwitch.getState()) {
pumpOn = !pumpOn;
digitalWrite(PUMP_PIN,pumpOn);
}
}
void loop() {
idle();
if (flowTimer.ding()) {
flowRate = flowAmount/(FLOW_TIME_MS/1000); // Flow/sec.
flowAmount = 0;
flowTimer.stepTime();
Serial.print("Current flowrate \t: ");
Serial.println(flowRate);
}
}