Demo of the ACS712 Library

Dependencies:   Servo mbed

Fork of ece4180_lab4_ACS712 by Gedeon Nyengele

Committer:
nyengele
Date:
Sun Mar 13 16:51:20 2016 +0000
Revision:
2:2b5233355986
Parent:
1:4f9effb20c29
Child:
3:9cae7baf7ccd
fixed bug with initialization of data member "type" inside the constructor

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mikeb 0:a35011a2fdaa 1 #include <mbed.h>
mikeb 0:a35011a2fdaa 2
mikeb 0:a35011a2fdaa 3 class ACS712 {
mikeb 0:a35011a2fdaa 4
mikeb 0:a35011a2fdaa 5 public:
mikeb 0:a35011a2fdaa 6 ACS712(PinName _pin, float voltDivRatio = 1, short type = 5);
mikeb 0:a35011a2fdaa 7
mikeb 0:a35011a2fdaa 8 float read();
mikeb 0:a35011a2fdaa 9 float operator=(ACS712&);
nyengele 1:4f9effb20c29 10 operator float() { return read(); }
mikeb 0:a35011a2fdaa 11
mikeb 0:a35011a2fdaa 12 private:
mikeb 0:a35011a2fdaa 13 AnalogIn sensor;
mikeb 0:a35011a2fdaa 14 float translate(float);
mikeb 0:a35011a2fdaa 15 float ratio;
mikeb 0:a35011a2fdaa 16 short type;
mikeb 0:a35011a2fdaa 17
mikeb 0:a35011a2fdaa 18 };
mikeb 0:a35011a2fdaa 19
mikeb 0:a35011a2fdaa 20 ACS712::ACS712(PinName _pin, float voltDivRatio, short type) : sensor(_pin){
mikeb 0:a35011a2fdaa 21 ratio = voltDivRatio;
nyengele 2:2b5233355986 22 this.type = type;
mikeb 0:a35011a2fdaa 23 }
mikeb 0:a35011a2fdaa 24
mikeb 0:a35011a2fdaa 25 float ACS712::translate(float val){
mikeb 0:a35011a2fdaa 26 switch(type){
mikeb 0:a35011a2fdaa 27 case 5:
mikeb 0:a35011a2fdaa 28 return (val*ratio - 2.5*ratio)/(.185*ratio);
mikeb 0:a35011a2fdaa 29 break;
mikeb 0:a35011a2fdaa 30 case 20:
mikeb 0:a35011a2fdaa 31 return (val*ratio - 2.5*ratio)/(.1*ratio);
mikeb 0:a35011a2fdaa 32 break;
mikeb 0:a35011a2fdaa 33 case 30:
mikeb 0:a35011a2fdaa 34 return (val*ratio - 2.5*ratio)/(.066*ratio);
mikeb 0:a35011a2fdaa 35 break;
mikeb 0:a35011a2fdaa 36 default:
mikeb 0:a35011a2fdaa 37 return 999;
mikeb 0:a35011a2fdaa 38 break;
mikeb 0:a35011a2fdaa 39
mikeb 0:a35011a2fdaa 40 }
mikeb 0:a35011a2fdaa 41 }
mikeb 0:a35011a2fdaa 42
mikeb 0:a35011a2fdaa 43
mikeb 0:a35011a2fdaa 44 float ACS712::read(){
nyengele 1:4f9effb20c29 45 return ACS712::translate(sensor * 3.3);
mikeb 0:a35011a2fdaa 46 }
mikeb 0:a35011a2fdaa 47
nyengele 1:4f9effb20c29 48 ACS712& ACS712::operator=(ACS712& rhs){
nyengele 1:4f9effb20c29 49 sensor = rhs.sensor;
nyengele 1:4f9effb20c29 50 ratio = rhs.ratio;
nyengele 1:4f9effb20c29 51 type = rhs.type;
nyengele 1:4f9effb20c29 52 return this;
mikeb 0:a35011a2fdaa 53 }