PM publish

Fork of PowerMonlib2 by Sippakorn Saeng-aroon

Revision:
2:01b627381f0d
Parent:
1:7a6a568c5c34
--- a/PowerMon.h	Sun Feb 25 09:10:18 2018 +0000
+++ b/PowerMon.h	Mon Aug 13 11:39:08 2018 +0000
@@ -1,6 +1,5 @@
-
-#define i2c_sda D14
-#define i2c_scl D15
+#define i2c2_sda D3 //D14
+#define i2c2_scl D6 //D15
 
 #define SourceVH 0x58
 #define SourceVL 0x59
@@ -9,81 +8,93 @@
 #define PowerH 0x5B
 #define PowerL 0x5C
 
-I2C i2c_PM(i2c_sda, i2c_scl);
+I2C i2c2_PM(i2c2_sda, i2c2_scl);
 
-class powerMon{
- private:
-    int w_addr,r_addr;
+class powerMon
+{
+    private:
+        int w_addr,r_addr;
 
- public:
- powerMon(int addr_sel){
-    switch(addr_sel)
-     {
-         case 0: w_addr=0x98; break;
-         case 100: w_addr=0x9A; break;
-         case 180: w_addr=0x9C; break;
-         case 300: w_addr=0x9E; break;
-         case 430: w_addr=0x90; break;
-         case 560: w_addr=0x92; break;
-         case 750: w_addr=0x94; break;
-         case 1270: w_addr=0x96; break;
-         case 1600: w_addr=0x50; break;
-         case 2000: w_addr=0x52; break;
-         case 2700: w_addr=0x54; break;
-         case 3600: w_addr=0x56; break;
-         case 5600: w_addr=0x58; break;
-         case 9100: w_addr=0x58; break;
-         case 20000: w_addr=0x5A; break;
-         case -1: w_addr=0x30; break;
-       }  
-       r_addr=w_addr+0x01;
-         
-         }
-double V_Sense(){
-    double volt=0,mult_fac=1,offset=0;
-    char buffer[2];
-    buffer[0]=SenseVL;
-    i2c_PM.write(r_addr,buffer, 1,true);
-    i2c_PM.read(r_addr, buffer,1);
-    volt=buffer[0]/16;
-    buffer[0]=SenseVH;
-    i2c_PM.write(r_addr,buffer, 1,true);
-    i2c_PM.read(r_addr, buffer,1);
-    volt += (buffer[0] & 0x7f)*16;
-    volt = (volt*mult_fac)+offset;
-    return (buffer[0]&0x80)?-volt:volt;
-}    
-double V_Source(){
-    double volt=0;
-    char buffer[2];
-    buffer[0]=SourceVL;
-    i2c_PM.write(r_addr,buffer, 1,true);
-    i2c_PM.read(r_addr, buffer,1);
-    volt=buffer[0]/32;
-    buffer[0]=SourceVH;
-    i2c_PM.write(r_addr,buffer, 1,true);
-    i2c_PM.read(r_addr, buffer,1);
-    volt += buffer[0]*8;
-    
-    return (volt/2048.0000)*23.9883;
-}    
-double Current(){
-    return (V_Sense()/2047.0000)*(8.0000);}
-long Power_Ratio(){
-    long power_r=0;
-    char buffer[2];
-    buffer[0]=PowerL;
-    i2c_PM.write(r_addr,buffer, 1,true);
-    i2c_PM.read(r_addr, buffer,1);
-    power_r=buffer[0];
-    buffer[0]=PowerH;
-    i2c_PM.write(r_addr,buffer, 1,true);
-    i2c_PM.read(r_addr, buffer,1);
-    power_r += buffer[0]*256;
-    
-    return power_r;}
-double Power(){
-   return (Power_Ratio()/65535.0000)*(8.0000*23.9883);
+    public:
+    powerMon(int addr_sel)
+    {
+        switch(addr_sel)
+        {
+             case 0:        w_addr=0x98; break;
+             case 100:      w_addr=0x9A; break;
+             case 180:      w_addr=0x9C; break;
+             case 300:      w_addr=0x9E; break;
+             case 430:      w_addr=0x90; break;
+             case 560:      w_addr=0x92; break;
+             case 750:      w_addr=0x94; break;
+             case 1270:     w_addr=0x96; break;
+             case 1600:     w_addr=0x50; break;
+             case 2000:     w_addr=0x52; break;
+             case 2700:     w_addr=0x54; break;
+             case 3600:     w_addr=0x56; break;
+             case 5600:     w_addr=0x58; break;
+             case 9100:     w_addr=0x58; break;
+             case 20000:    w_addr=0x5A; break;
+             case -1:       w_addr=0x30; break;
+        }  
+        r_addr = w_addr + 0x01;
     }
 
+    double V_Sense()
+    {
+        double volt=0,mult_fac=1,offset=0;
+        char buffer[2];
+        buffer[0]=SenseVL;
+        i2c2_PM.write(r_addr,buffer, 1,true);
+        i2c2_PM.read(r_addr, buffer,1);
+        volt=buffer[0]/16;
+        buffer[0]=SenseVH;
+        i2c2_PM.write(r_addr,buffer, 1,true);
+        i2c2_PM.read(r_addr, buffer,1);
+        volt += (buffer[0] & 0x7f)*16;
+        volt = (volt*mult_fac)+offset;
+        return (buffer[0]&0x80)?-volt:volt;
+    }    
+    
+    double V_Source()
+    {
+        double volt=0;
+        char buffer[2];
+        buffer[0]=SourceVL;
+        i2c2_PM.write(r_addr,buffer, 1,true);
+        i2c2_PM.read(r_addr, buffer,1);
+        volt=buffer[0]/32;
+        buffer[0]=SourceVH;
+        i2c2_PM.write(r_addr,buffer, 1,true);
+        i2c2_PM.read(r_addr, buffer,1);
+        volt += buffer[0]*8;
+        
+        return (volt/2048.0000)*23.9883;
+    }    
+    
+    double Current()
+    {
+        return (V_Sense()/2047.0000)*(8.0000);
+    }
+        
+    long Power_Ratio()
+    {
+        long power_r=0;
+        char buffer[2];
+        buffer[0]=PowerL;
+        i2c2_PM.write(r_addr,buffer, 1,true);
+        i2c2_PM.read(r_addr, buffer,1);
+        power_r=buffer[0];
+        buffer[0]=PowerH;
+        i2c2_PM.write(r_addr,buffer, 1,true);
+        i2c2_PM.read(r_addr, buffer,1);
+        power_r += buffer[0]*256;
+        
+        return power_r;
+    }
+    
+    double Power()
+    {
+       return (Power_Ratio()/65535.0000)*(8.0000*23.9883);
+    }
 };
\ No newline at end of file