![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Lab 4
Diff: ACS712.h
- Revision:
- 0:a35011a2fdaa
- Child:
- 1:f68acb38a472
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ACS712.h Wed Mar 09 04:19:10 2016 +0000 @@ -0,0 +1,56 @@ +#include <mbed.h> + +class ACS712 { + + public: + ACS712(PinName _pin, float voltDivRatio = 1, short type = 5); + + float read(); + float operator=(ACS712&); + //void sampleInterval(float); + //void sampleFrequency(float); + //void bufferLength(int); + //float[] readBuffer(); + + private: + AnalogIn sensor; + float translate(float); + //float[] circularBuffer; + //float interval; + float ratio; + short type; + +}; + +ACS712::ACS712(PinName _pin, float voltDivRatio, short type) : sensor(_pin){ + ratio = voltDivRatio; + type = type; +} + +float ACS712::translate(float val){ + switch(type){ + case 5: + return (val*ratio - 2.5*ratio)/(.185*ratio); + break; + case 20: + return (val*ratio - 2.5*ratio)/(.1*ratio); + break; + case 30: + return (val*ratio - 2.5*ratio)/(.066*ratio); + break; + default: + return 999; + break; + + } +} + + +float ACS712::read(){ + return ACS712::translate(sensor); +} + +float ACS712::operator=(ACS712& rhs){ + return rhs.read(); +} +