USB current meter for TG-LPC11U35-501

Dependencies:   AQM0802 mbed

Revision:
2:d6fcc8bfc037
Parent:
0:4286edef4003
--- a/main.cpp	Tue Jun 24 08:42:52 2014 +0000
+++ b/main.cpp	Sat Sep 26 13:14:29 2015 +0000
@@ -13,57 +13,58 @@
 
 //#pragma O0
 //#pragma O1
-//#pragma O2    // default
-//#pragma O3
-//#pragma Otime
+//#pragma O2
+//#pragma O3        // default
+//#pragma Otime     // default
 //#pragma Ospace
 
 
 #if defined(TARGET_LPC1768)
-DigitalOut led1(LED1);
-DigitalOut led2(LED2);
 I2C i2c(p28,p27);
 AnalogIn ain(p15);
 #endif
 // for TG-LPC11U35-501
 #if defined(TARGET_LPC11U35_501)
-DigitalOut led1(P0_20);
-DigitalOut led2(P0_21);
 I2C i2c(P0_5,P0_4);
 AnalogIn ain(P0_11);
 #endif
 // for Nucleo
 #if defined(TARGET_NUCLEO_F401RE)
-DigitalOut led1(D13);
 I2C i2c(D14,D15);
 AnalogIn ain(PA_0);
 #endif
 
 AQM0802 lcd(i2c);
+Ticker tic;
 
-int main() {
-    
+
+void display()
+{
+
     char msg[10];
     int mA;
+    static int mAh=0;
 
-    sprintf(msg, "%d", SystemCoreClock );
+    // current
+    mA = ain.read()*3.3*1000;
+    mAh+=mA;
+    if(mAh/3600>99999)mAh=0;    // overflow
+
+    sprintf(msg," %4dmA ",mA);
     lcd.locate(0,0);
     lcd.print(msg);
-    wait(1);    
-
-    sprintf(msg, "current ");
-    lcd.locate(0,0);
+    
+    sprintf(msg,"%5dmAh",mAh/3600);
+    lcd.locate(0,1);
     lcd.print(msg);
-      
-    while(1) {
 
-        // current
-        mA = ain.read()*3.3*1000;
+}
 
-        sprintf(msg,"  %4dmA",mA);
-        lcd.locate(0,1);
-        lcd.print(msg);
-        wait(1);
+int main() {
+        
+    tic.attach(&display,1);    // Do not exceed 2147sec
+
+    while(true) {
     }
 
 }