An API for interacting with the Adafruit flow meter.
FlowMeter.cpp@0:195a3c58c944, 2016-04-28 (annotated)
- Committer:
- krbng4180
- Date:
- Thu Apr 28 19:53:59 2016 +0000
- Revision:
- 0:195a3c58c944
Initial commit.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
krbng4180 | 0:195a3c58c944 | 1 | #include "FlowMeter.h" |
krbng4180 | 0:195a3c58c944 | 2 | |
krbng4180 | 0:195a3c58c944 | 3 | void FlowMeter::handle_pulse_irq(void) |
krbng4180 | 0:195a3c58c944 | 4 | { |
krbng4180 | 0:195a3c58c944 | 5 | _pulses++; |
krbng4180 | 0:195a3c58c944 | 6 | } |
krbng4180 | 0:195a3c58c944 | 7 | |
krbng4180 | 0:195a3c58c944 | 8 | FlowMeter::FlowMeter(PinName out) : _pin(out) |
krbng4180 | 0:195a3c58c944 | 9 | { |
krbng4180 | 0:195a3c58c944 | 10 | _pulses = 0; |
krbng4180 | 0:195a3c58c944 | 11 | _pin.rise(this, &FlowMeter::handle_pulse_irq); |
krbng4180 | 0:195a3c58c944 | 12 | |
krbng4180 | 0:195a3c58c944 | 13 | } |
krbng4180 | 0:195a3c58c944 | 14 | |
krbng4180 | 0:195a3c58c944 | 15 | long FlowMeter::get_pulse_count(void) |
krbng4180 | 0:195a3c58c944 | 16 | { |
krbng4180 | 0:195a3c58c944 | 17 | return _pulses; |
krbng4180 | 0:195a3c58c944 | 18 | } |
krbng4180 | 0:195a3c58c944 | 19 | |
krbng4180 | 0:195a3c58c944 | 20 | float FlowMeter::get_fl_oz(void) |
krbng4180 | 0:195a3c58c944 | 21 | { |
krbng4180 | 0:195a3c58c944 | 22 | return pulses_to_fl_oz(_pulses); |
krbng4180 | 0:195a3c58c944 | 23 | } |
krbng4180 | 0:195a3c58c944 | 24 | |
krbng4180 | 0:195a3c58c944 | 25 | float FlowMeter::get_ml(void) |
krbng4180 | 0:195a3c58c944 | 26 | { |
krbng4180 | 0:195a3c58c944 | 27 | return pulses_to_ml(_pulses); |
krbng4180 | 0:195a3c58c944 | 28 | } |
krbng4180 | 0:195a3c58c944 | 29 | |
krbng4180 | 0:195a3c58c944 | 30 | float FlowMeter::pulses_to_ml(int pulses) |
krbng4180 | 0:195a3c58c944 | 31 | { |
krbng4180 | 0:195a3c58c944 | 32 | return ((float)pulses) / 2.2222222f; // pulses per mL. |
krbng4180 | 0:195a3c58c944 | 33 | } |
krbng4180 | 0:195a3c58c944 | 34 | |
krbng4180 | 0:195a3c58c944 | 35 | float FlowMeter::pulses_to_fl_oz(int pulses) |
krbng4180 | 0:195a3c58c944 | 36 | { |
krbng4180 | 0:195a3c58c944 | 37 | return ((float)pulses) / 13.308294f; // pulses per fl oz. |
krbng4180 | 0:195a3c58c944 | 38 | } |
krbng4180 | 0:195a3c58c944 | 39 | |
krbng4180 | 0:195a3c58c944 | 40 | |
krbng4180 | 0:195a3c58c944 | 41 | void FlowMeter::reset(void) |
krbng4180 | 0:195a3c58c944 | 42 | { |
krbng4180 | 0:195a3c58c944 | 43 | _pulses = 0; |
krbng4180 | 0:195a3c58c944 | 44 | } |