USB current meter for TG-LPC11U35-501

Dependencies:   AQM0802 mbed

Committer:
yasuyuki
Date:
Sat Sep 26 13:14:29 2015 +0000
Revision:
2:d6fcc8bfc037
Parent:
0:4286edef4003
revised

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yasuyuki 0:4286edef4003 1 //**********************
yasuyuki 0:4286edef4003 2 // USB current meter for mbed
yasuyuki 0:4286edef4003 3 //
yasuyuki 0:4286edef4003 4 // LPC1768 flash=512KB, ADC=12bits
yasuyuki 0:4286edef4003 5 // LPC11U35 flash=64KB, ADC=10bits
yasuyuki 0:4286edef4003 6 // Nucleo ADC=12bits
yasuyuki 0:4286edef4003 7 //
yasuyuki 0:4286edef4003 8 // (C)Copyright 2014 All rights reserved by Y.Onodera
yasuyuki 0:4286edef4003 9 // http://einstlab.web.fc2.com
yasuyuki 0:4286edef4003 10 //**********************
yasuyuki 0:4286edef4003 11 #include "mbed.h"
yasuyuki 0:4286edef4003 12 #include "AQM0802.h"
yasuyuki 0:4286edef4003 13
yasuyuki 0:4286edef4003 14 //#pragma O0
yasuyuki 0:4286edef4003 15 //#pragma O1
yasuyuki 2:d6fcc8bfc037 16 //#pragma O2
yasuyuki 2:d6fcc8bfc037 17 //#pragma O3 // default
yasuyuki 2:d6fcc8bfc037 18 //#pragma Otime // default
yasuyuki 0:4286edef4003 19 //#pragma Ospace
yasuyuki 0:4286edef4003 20
yasuyuki 0:4286edef4003 21
yasuyuki 0:4286edef4003 22 #if defined(TARGET_LPC1768)
yasuyuki 0:4286edef4003 23 I2C i2c(p28,p27);
yasuyuki 0:4286edef4003 24 AnalogIn ain(p15);
yasuyuki 0:4286edef4003 25 #endif
yasuyuki 0:4286edef4003 26 // for TG-LPC11U35-501
yasuyuki 0:4286edef4003 27 #if defined(TARGET_LPC11U35_501)
yasuyuki 0:4286edef4003 28 I2C i2c(P0_5,P0_4);
yasuyuki 0:4286edef4003 29 AnalogIn ain(P0_11);
yasuyuki 0:4286edef4003 30 #endif
yasuyuki 0:4286edef4003 31 // for Nucleo
yasuyuki 0:4286edef4003 32 #if defined(TARGET_NUCLEO_F401RE)
yasuyuki 0:4286edef4003 33 I2C i2c(D14,D15);
yasuyuki 0:4286edef4003 34 AnalogIn ain(PA_0);
yasuyuki 0:4286edef4003 35 #endif
yasuyuki 0:4286edef4003 36
yasuyuki 0:4286edef4003 37 AQM0802 lcd(i2c);
yasuyuki 2:d6fcc8bfc037 38 Ticker tic;
yasuyuki 0:4286edef4003 39
yasuyuki 2:d6fcc8bfc037 40
yasuyuki 2:d6fcc8bfc037 41 void display()
yasuyuki 2:d6fcc8bfc037 42 {
yasuyuki 2:d6fcc8bfc037 43
yasuyuki 0:4286edef4003 44 char msg[10];
yasuyuki 0:4286edef4003 45 int mA;
yasuyuki 2:d6fcc8bfc037 46 static int mAh=0;
yasuyuki 0:4286edef4003 47
yasuyuki 2:d6fcc8bfc037 48 // current
yasuyuki 2:d6fcc8bfc037 49 mA = ain.read()*3.3*1000;
yasuyuki 2:d6fcc8bfc037 50 mAh+=mA;
yasuyuki 2:d6fcc8bfc037 51 if(mAh/3600>99999)mAh=0; // overflow
yasuyuki 2:d6fcc8bfc037 52
yasuyuki 2:d6fcc8bfc037 53 sprintf(msg," %4dmA ",mA);
yasuyuki 0:4286edef4003 54 lcd.locate(0,0);
yasuyuki 0:4286edef4003 55 lcd.print(msg);
yasuyuki 2:d6fcc8bfc037 56
yasuyuki 2:d6fcc8bfc037 57 sprintf(msg,"%5dmAh",mAh/3600);
yasuyuki 2:d6fcc8bfc037 58 lcd.locate(0,1);
yasuyuki 0:4286edef4003 59 lcd.print(msg);
yasuyuki 0:4286edef4003 60
yasuyuki 2:d6fcc8bfc037 61 }
yasuyuki 0:4286edef4003 62
yasuyuki 2:d6fcc8bfc037 63 int main() {
yasuyuki 2:d6fcc8bfc037 64
yasuyuki 2:d6fcc8bfc037 65 tic.attach(&display,1); // Do not exceed 2147sec
yasuyuki 2:d6fcc8bfc037 66
yasuyuki 2:d6fcc8bfc037 67 while(true) {
yasuyuki 0:4286edef4003 68 }
yasuyuki 0:4286edef4003 69
yasuyuki 0:4286edef4003 70 }