Lab 4

Dependencies:   mbed

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