IGGE Power board

Dependencies:   mbed ADS1015 USBDevice MCP4725

Revision:
2:321c8783ea30
Parent:
1:dd6f8dc1e54e
Child:
3:a01ea06ca9ab
--- a/main.cpp	Wed Mar 26 02:56:20 2014 +0000
+++ b/main.cpp	Wed Mar 26 03:36:02 2014 +0000
@@ -10,6 +10,7 @@
 Adafruit_ADS1015 ads(&i2c);
 USBSerial pc; // USB CDC serial port
 CAN cantbus(p30, p29);
+Ticker graph;
 
 //leds
 DigitalOut led0(LED1);
@@ -40,23 +41,86 @@
 
 
 //30 minute graph arrays
-uint16_t iBatArr [180]; 
-uint16_t vBatArr [180]; 
-uint16_t iTwelveArr [180]; 
-uint16_t vTwelveArr [180]; 
-uint16_t iFiveArr [180]; 
-uint16_t vFiveArr [180]; 
-uint16_t iMotArr [180]; 
-uint16_t vMotArr [180]; 
-uint16_t iCpuArr [180]; 
-uint16_t iPeriArr [180]; 
+uint16_t iBatArr [180];
+uint16_t vBatArr [180];
+uint16_t iTwelveArr [180];
+uint16_t vTwelveArr [180];
+uint16_t iFiveArr [180];
+uint16_t vFiveArr [180];
+uint16_t iMotArr [180];
+uint16_t vMotArr [180];
+uint16_t iCpuArr [180];
+uint16_t iPeriArr [180];
 
 
 //volt
 uint16_t vBat, vTwelve,vFive,vMot ;
 
+
+void updateArray (void)
+{
+    vBat = ads.readADC_SingleEnded(0); // read channel 0
+    vTwelve = ads.readADC_SingleEnded(1); // read channel 0
+    vFive = ads.readADC_SingleEnded(2); // read channel 0
+    vMot = ads.readADC_SingleEnded(3); // read channel 0
+
+
+    for(int i =179; i >0; i--) {
+        iBatArr[i] =iBatArr[i-1];
+    }
+    iBatArr[0]= iBat.read_u16();
+
+    for(int i =179; i >0; i--) {
+        vBatArr[i] =vBatArr[i-1];
+    }
+    vBatArr[0]= vBat;
+
+    for(int i =179; i >0; i--) {
+        iTwelveArr[i] =iTwelveArr[i-1];
+    }
+    iTwelveArr[0]= iTwelve.read_u16();
+
+    for(int i =179; i >0; i--) {
+        vTwelveArr[i] =vTwelveArr[i-1];
+    }
+    vTwelveArr[0]= vTwelve;
+
+    for(int i =179; i >0; i--) {
+        iFiveArr[i] =iFiveArr[i-1];
+    }
+    iFiveArr[0]= iFive.read_u16();
+
+    for(int i =179; i >0; i--) {
+        vFiveArr[i] =vFiveArr[i-1];
+    }
+    vFiveArr[0]= vFive;
+
+    for(int i =179; i >0; i--) {
+        iMotArr[i] =iMotArr[i-1];
+    }
+    iMotArr[0]= iMot.read_u16();
+
+    for(int i =179; i >0; i--) {
+        vMotArr[i] =vMotArr[i-1];
+    }
+    vMotArr[0]= vMot;
+
+    for(int i =179; i >0; i--) {
+        iCpuArr[i] =iCpuArr[i-1];
+    }
+    iCpuArr[0]= iCpu.read_u16();
+
+    for(int i =179; i >0; i--) {
+        iPeriArr[i] =iPeriArr[i-1];
+    }
+    iPeriArr[0]= iPeri.read_u16();
+
+}
+
 void setup(void)
 {
+    graph.attach(&updateArray, 10); //update array every 10 seconds
+
     //initialize relays
     relSens= 0;
     relNet =0;
@@ -67,14 +131,12 @@
 }
 
 
+
 int main()
 {
     setup();
     while (1) {
-        vBat = ads.readADC_SingleEnded(0); // read channel 0
-        vTwelve = ads.readADC_SingleEnded(1); // read channel 0
-        vFive = ads.readADC_SingleEnded(2); // read channel 0
-        vMot = ads.readADC_SingleEnded(3); // read channel 0
+
 
         pc.printf("reading: %d\r\n", vBat); // print reading
         pc.printf("reading: %d\r\n", vTwelve); // print reading