test fork
Dependencies: SPI_TFTx2 SPI_TFTx2_ILI9341 TFT_fonts TOUCH_TFTx2 mbed
Fork of CANary_9341 by
Diff: main.cpp
- Revision:
- 161:71ac85d11f03
- Parent:
- 160:905fe45ed54b
- Child:
- 162:c6545fc0164a
--- a/main.cpp Wed Nov 20 13:13:54 2013 +0000 +++ b/main.cpp Thu Nov 21 14:17:35 2013 +0000 @@ -3,16 +3,13 @@ //To Do: // * Add 50% charge option // * Add linear efficiency graph with 10 minute values -// * Subtract accessory power from efficiency history (add back in when displaying) // * Add in-device config editor // * Change pack volt color when CVLI fails // * Add tire pressure cal (40psi for me = FR 38, RR 38.2, FL 37.8, RL 38 - maybe 2psi error on my tire gauge?) -// rev160 -// * Tweaked heater monitor to only issue once per power on/off -// * Added filtering to timeSync routing (some times set time to bogus value) -// * Removed debug wait commands from config save and firmware update -// * Added 3-tone sound messages +// rev161 +// * Subtract climate control power from stored efficiency data and add current CC power back in for display +// * Added X axis labels on CP histogram and scaled bar width #include "mbed.h" #include "CAN.h" @@ -22,7 +19,7 @@ #include "utility.h" #include "displayModes.h" #include "TOUCH_TFTx2.h" -char revStr[7] = "160"; // gg - revision string, max 6 characters +char revStr[7] = "161"; // gg - revision string, max 6 characters FATFS USBdrive; LocalFileSystem local("local"); @@ -116,6 +113,7 @@ unsigned short numSsamples = 0; float accV = 0; float accV2 = 0; +float CCkW = 0; bool playbackEn = false; bool playbackOpen = false; //float playbackInt = 0.05; //read messages every 50 ms @@ -469,6 +467,7 @@ } else if (dMode[whichTouched]==config2Screen) { // reset DTE Max/Min maxTripEff = 0; minTripEff = 5; + beep(2000,0.25); } else if (dMode[whichTouched]==playbackScreen) { // pause/unpause playbackEn=!playbackEn; if(playbackEn){ @@ -741,6 +740,7 @@ if(tick){ // Executes once a second tick=false; + CCkW = (lastMsg[indexLastMsg[0x510]].data[3]&0x7f)*0.125; if (miles_trip[0]>0.25) { curEff = miles_trip[0]/kWh_trip[0]; } else { @@ -857,17 +857,35 @@ if(numWsamples>0){ // Avoid div0 mpkWh[0]=mph[0]; - kW[0]=((float) mWs_x4)/numWsamples/4e3; + kW[0]=((float) mWs_x4)/numWsamples/4e3; mpkWh[0]/=kW[0]; if (mpkWh[0]<0) { mpkWh[0]=99;// negative means inf. } - } else { + kW[0]-=CCkW; // subtract climate control power from recorded value + } else { kW[0]=0; mpkWh[0]=0; } numWsamples=0; + if((accOn||playbackEn)&&!charging){ // Calculate averages + for(i=1;i<39;i++){ + average=mph[i]/timeConstant[i]; + mph[i]-=average; + mph[i]+=mph[0]; + mpkWh[i]=average; + average=kW[i]/timeConstant[i]; + kW[i]-=average; + kW[i]+=kW[0]; + average+=CCkW; //add climate control power back in for display + mpkWh[i]/=average; + if (mpkWh[i]<0) { + mpkWh[i]=99;// negative means inf. + } + } + } + if (!charging){ miles_trip[0]+=mph[0]/3600; // per trip miles_trip[1]+=mph[0]/3600; // per charge @@ -875,7 +893,7 @@ kWh_trip[0]+=kW[0]/3600; kWh_trip[1]+=kW[0]/3600; kWh_trip[2]+=kW[0]/3600; - } else { + } else { // charging so reset per charge trip meter miles_trip[1]=0; kWh_trip[1]=0; } @@ -904,22 +922,6 @@ Imax=-1000; Imin=1000; - if((accOn||playbackEn)&&!charging){ - for(i=1;i<39;i++){ - average=mph[i]/timeConstant[i]; - mph[i]-=average; - mph[i]+=mph[0]; - mpkWh[i]=average; - average=kW[i]/timeConstant[i]; - kW[i]-=average; - kW[i]+=kW[0]; - mpkWh[i]/=average; - if (mpkWh[i]<0) { - mpkWh[i]=99;// negative means inf. - } - //mpkWh[i]=floor(mpkWh[i]*10+0.5)/10; // Round to nearest 10th - } - } if(logCP&&usbEn){ if(logOnce){ tripLog();