Lab 4

Dependencies:   mbed

ACS712.h

Committer:
mikeb
Date:
2016-03-09
Revision:
0:a35011a2fdaa
Child:
1:f68acb38a472

File content as of revision 0:a35011a2fdaa:

#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();
}