Dual CANbus monitor and instrumentation cluster supporting ILI9341 display controller

Dependencies:   SPI_TFTx2_ILI9341 TOUCH_TFTx2_ILI9341 TFT_fonts mbed

Fork of CANary by Tick Tock

Files at this revision

API Documentation at this revision

Comitter:
TickTock
Date:
Thu Nov 21 23:08:00 2013 +0000
Parent:
161:71ac85d11f03
Child:
163:3b6fab958773
Commit message:
// Fixed efficiency screen discontinuity when CC power changes; // Added DTE & efficiency w/o CC to efficiency display

Changed in this revision

displayModes.cpp Show annotated file Show diff for this revision Revisions of this file
displayModes.h Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/displayModes.cpp	Thu Nov 21 14:17:35 2013 +0000
+++ b/displayModes.cpp	Thu Nov 21 23:08:00 2013 +0000
@@ -809,7 +809,6 @@
         } else { // Only compute judgement value if min cellpair meets <= 3712mV requirement
             jv=0;
         }
-        
         //------------------
         tt.cls();
             
@@ -837,6 +836,18 @@
           if( bd > iBinValMax ) bd = iBinValMax ;
           nBin[bd]++ ;
         }
+ 
+        //----------------
+        if( iBinValMax == 0 ) { // dummy data if no real data
+            min = 10 ; 
+            max = 50 ;
+            avg = ( max + min ) / 2;
+            iBinValMax = max - min ;
+            for(int i=0; i<=(iBinValMax/2); i++) {
+              nBin[i] = i ;
+              nBin[iBinValMax-i] = i ;
+            }
+        }
 
         // label the Y axis
         tt.locate( 0, yWinMin ); printf("25\n");
@@ -878,7 +889,7 @@
     // handle the button
     if(sMode==1&&showButtons){
         showButton(1,0,"Request","CP Data",4,4);               
-        }
+    }
 }
 
 //---------------
@@ -1088,7 +1099,6 @@
     static unsigned char leff[39]={0};
     CANMessage msg;
     unsigned long targetBraking, regenBraking, temp;
-    //static unsigned long maxTarget = 1000, maxRegen = 1000, tardivreg_x1000 = 1000;
     static unsigned long maxTarget = 1000, tardivreg_x1000 = 1400;
     static unsigned char lr=0, lt=0;
 
@@ -1124,17 +1134,10 @@
         printf("mon\n");  
         tt.line(x,10,x,220,DarkGrey);     
         x=50+38*6;
-        //tt.locate(x-10,226);
-        //printf("year\n");  
-        //tt.line(x,10,x,220,DarkGrey);
-        toVal=33;
-    } else {
-        toVal=24;// no need to constantly update the long tc values
-    }
+        }
+    toVal=33;
     if(force||lgids!=gids){ // update Y axis when kWh changes
         tt.set_font((unsigned char*) Arial24x23);
-        //for(i=0;i<10;i++){
-            //y=200-i*20;
         for(i=2;i<7;i++){
             y=200-(i-2)*40;
             tt.locate(0,y-8);
@@ -1183,15 +1186,26 @@
             }
             tt.foreground(Cyan);
             tt.set_font((unsigned char*) Arial24x23);
-            tt.locate(198,70);
-            printf("%3.1f \n",mpkWh[dtePeriod]);
+            miles = mpkWh_noCC*((float)(gids-5)*.075);
+            miles = convertDistance(miles); // LM - Metric support
+            // Right justify
+            if (miles>99.9){ //space=13; num=17; . = 5
+                tt.locate(191,60);
+                printf("%4.1f\n",miles);
+            } else if (miles>9.9){
+                tt.locate(182,60);
+                printf("  %3.1f\n",miles);
+            } else {
+                tt.locate(173,60);
+                printf("    %2.1f\n",miles);
+            }
         } else {
             tt.locate(200,10);
             printf("%3.1f \n",mpkWh[dtePeriod]);
             tt.foreground(Cyan);
             tt.set_font((unsigned char*) Arial24x23);
-            tt.locate(222,70);
-            printf("%2.1f \n",curEff);
+            tt.locate(240,60);
+            printf("%3.1f \n",mpkWh_noCC);
         }
         lx=50;
         ly=mpkWh[0]*40;
--- a/displayModes.h	Thu Nov 21 14:17:35 2013 +0000
+++ b/displayModes.h	Thu Nov 21 23:08:00 2013 +0000
@@ -38,6 +38,7 @@
 extern float kWh_trip[3];
 extern float kW[39];
 extern float mpkWh[39];
+extern float mpkWh_noCC;
 extern unsigned char whichTouched;
 extern unsigned char skin;
 extern unsigned char dtePeriod;
--- a/main.cpp	Thu Nov 21 14:17:35 2013 +0000
+++ b/main.cpp	Thu Nov 21 23:08:00 2013 +0000
@@ -7,9 +7,9 @@
 // * 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?)
 
-// 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
+// rev162
+// Fixed efficiency screen discontinuity when CC power changes
+// Added DTE & efficiency w/o CC to efficiency display
 
 #include "mbed.h"
 #include "CAN.h"
@@ -19,7 +19,7 @@
 #include "utility.h"
 #include "displayModes.h"
 #include "TOUCH_TFTx2.h"
-char revStr[7] = "161"; // gg - revision string, max 6 characters
+char revStr[7] = "162"; // gg - revision string, max 6 characters
 
 FATFS USBdrive;
 LocalFileSystem local("local");
@@ -132,6 +132,7 @@
 float mph[39]={0};
 float kW[39]={0};
 float mpkWh[39]={0};
+float mpkWh_noCC=0;
 float unloadedV_x2,Resr,curRmax,curRmin,redRmax,redRmin,incRmax,incRmin;
 signed short Imax, Imin;
 // Logarithmic division scale (roughly - snapped to common units of time)
@@ -878,6 +879,7 @@
                     average=kW[i]/timeConstant[i];
                     kW[i]-=average;
                     kW[i]+=kW[0];
+                    if(i==dtePeriod) mpkWh_noCC=mpkWh[i]/average; // compute efficiency w/o CC for dtePeriod
                     average+=CCkW; //add climate control power back in for display
                     mpkWh[i]/=average;
                     if (mpkWh[i]<0) {