Attempts to merge SPI_TFT2 & SPI_TFT_ILI9341

Dependencies:   SPI_TFTx2 TFT_fonts TOUCH_TFTx2 mbed

Fork of CANary by Tick Tock

Files at this revision

API Documentation at this revision

Comitter:
TickTock
Date:
Sat Dec 28 14:53:14 2013 +0000
Parent:
170:7ee98e3611bc
Child:
172:53548bf8bf85
Commit message:
// Converted dte display braking bargraph to kW;

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
utility.h Show annotated file Show diff for this revision Revisions of this file
--- a/displayModes.cpp	Tue Dec 24 12:20:50 2013 +0000
+++ b/displayModes.cpp	Sat Dec 28 14:53:14 2013 +0000
@@ -1153,8 +1153,7 @@
     static unsigned short lgids=0;
     static unsigned char leff[39]={0};
     CANMessage msg;
-    unsigned long targetBraking, regenBraking, temp;
-    static unsigned long maxTarget = 1000, tardivreg_x1000 = 1400;
+    unsigned long targetBraking, regenBraking, motorSpeed, motorAmps, frictionBraking;
     static unsigned char lr=0, lt=0, lar=0;
 
     msg = lastMsg[indexLastMsg[0x5bc]]; //Get gids
@@ -1315,52 +1314,59 @@
         leff[i-1]=y;
     }
 
+    // Plot Braking friction/regen bar graph
+    msg = lastMsg[indexLastMsg[0x176]]; //Get RPMs
+    motorSpeed = (msg.data[2]<<8)+msg.data[3];
     msg = lastMsg[indexLastMsg[0x260]]; //Get available regen
-    availableRegen = msg.data[1]*2;
+    availableRegen = msg.data[1]*4;
+    msg = lastMsg[indexLastMsg[0x1cb]]; //Get target total braking
+    targetBraking = (msg.data[2]<<3)+(msg.data[3]>>5);
+    msg = lastMsg[indexLastMsg[0x292]]; //Get friction braking
+    frictionBraking = msg.data[6];
+    msg = lastMsg[indexLastMsg[0x180]]; //Get motor amps
+    motorAmps = (msg.data[2]<<4)+(msg.data[3]>>4);
+    if(motorAmps>0x7ff){ // invert and chop positive current
+        motorAmps=0x1000-motorAmps;
+    }else{
+        motorAmps=0;
+    }
 
+    targetBraking *= motorSpeed;
+    targetBraking /= tbScalar;  //0.0000345 * 4
+    regenBraking = motorAmps;
+    regenBraking *= motorSpeed;
+    regenBraking /= rbScalar;  //0.00002875 * 4
+    frictionBraking *= motorSpeed;
+    frictionBraking /= fbScalar;  //0.0019 * 4
+
+    // Plot available regen brackets
     if(availableRegen>lar){
-        tt.fillrect(264,240-availableRegen,266,239-lar,White);
-        tt.fillrect(308,240-availableRegen,310,239-lar,White);
+        tt.fillrect(273,238-availableRegen,275,239-lar,White);
+        tt.fillrect(317,238-availableRegen,319,239-lar,White);
+        if(availableRegen>=24){
+            for(i=24;i<=availableRegen;i+=24){
+                tt.fillrect(270,238-i,272,239-i,White);
+            }
+        }
         lar=availableRegen;
     }else if(availableRegen<lar){
-        tt.fillrect(264,240-lar,266,239-availableRegen,Navy);
-        tt.fillrect(308,240-lar,310,239-availableRegen,Navy);
+        tt.fillrect(270,238-lar,275,239-availableRegen,Navy);
+        tt.fillrect(317,238-lar,319,239-availableRegen,Navy);
         lar=availableRegen;
     }
 
-    msg = lastMsg[indexLastMsg[0x1cb]]; //Get Target total braking
-    targetBraking = (msg.data[2]<<3)+(msg.data[3]>>5);
-
-    msg = lastMsg[indexLastMsg[0x1d4]]; //Get Motor Amps - simlar to 1d5/1.4 but includes coast regen
-    temp = (msg.data[2]<<4)+(msg.data[3]>>4);
-    if(temp>0x7ff){ // invert and chop positive current
-        regenBraking=0x1000-temp;
-    }else{
-        regenBraking=0;
+    t = (unsigned char) regenBraking+frictionBraking;
+    if (t>160) t=160;
+    r = (unsigned char) regenBraking;
+    if (r>160) r=160;
+    if (r>t) t=r;  //Should never happen
+    if(lr!=r||lt!=t){
+        if (t<160) tt.fillrect(277,239-160,315,238-t,Navy);
+        if (r<t) tt.fillrect(277,239-t,315,238-r,Red);
+        if (0<r) tt.fillrect(277,239-r,315,238,Green);
     }
-
-    if (targetBraking<2045){
-        if (targetBraking>maxTarget) maxTarget=targetBraking;
-        temp = targetBraking;
-        temp *=167;
-        temp /= maxTarget;
-        t = (char) temp;
-        if (t>160) t=160;
-        temp = regenBraking;
-        temp *= tardivreg_x1000;
-        temp /= maxTarget;
-        temp /= 6; // 1000/167=6
-        r = (char) temp;
-        if (r>160) r=160;
-        if (r>t) t=r;  //Should never happen
-        if(lr!=r||lt!=t){
-            if (t<160) tt.fillrect(268,239-160,306,238-t,Navy);
-            if (r<t) tt.fillrect(268,239-t,306,238-r,Red);
-            if (0<r) tt.fillrect(268,239-r,306,238,Green);
-        }
-        lt=t;
-        lr=r;
-    }
+    lt=t;
+    lr=r;
 }
 
 void testDisplay (bool force, bool showButtons){
@@ -1382,18 +1388,6 @@
         tt.locate(10,10);
         printf("%d maxT\n",maxTarget);
     }
-    /*msg = lastMsg[indexLastMsg[0x5fa]];
-    month = msg.data[5]>>4;
-    day = msg.data[2]>>3;
-    msg = lastMsg[indexLastMsg[0x5fb]];
-    year = msg.data[1];
-    msg = lastMsg[indexLastMsg[0x5fc]];
-    hour = msg.data[0]>>3;
-    minute = (msg.data[1]<<4&0x30)+(msg.data[2]>>4);
-    second = msg.data[1]>>2;
-    tt.locate(0,40);
-    printf("%02d%02d%02d %02d%02d%03d\n",hour,minute,second,month,day,year);*/
-    //printf("%4.2fV %4.2fV \n",accV,accV2);
 
     for (i=0; i<8; i++){
         msg = lastMsg[indexLastMsg[(uMsgId[i]>>4)]];
--- a/displayModes.h	Tue Dec 24 12:20:50 2013 +0000
+++ b/displayModes.h	Sat Dec 28 14:53:14 2013 +0000
@@ -76,6 +76,9 @@
 extern bool CCon;
 extern float kWperGid;
 extern unsigned short startGids;
+extern unsigned long tbScalar;
+extern unsigned long rbScalar;
+extern unsigned long fbScalar;
 
 extern "C" {
     void printLast (bool force, bool showButtons);
--- a/main.cpp	Tue Dec 24 12:20:50 2013 +0000
+++ b/main.cpp	Sat Dec 28 14:53:14 2013 +0000
@@ -11,10 +11,8 @@
 // * Add climate control impact to main max/min dte and new trip display
 // * Be more efficient with write buffer (use msgLen instead of always storing 8 bytes)
 
-// rev170
-// Added kWperGid scalar to config file.  .075 appears to be too small
-// Added CCkWh_trip to TripLog (after kWh_trip)
-// Added uncalibrated available regen bars to dte screen
+// rev171
+// Converted dte display braking bargraph to kW
 
 #include "mbed.h"
 #include "CAN.h"
@@ -24,7 +22,7 @@
 #include "utility.h"
 #include "displayModes.h"
 #include "TOUCH_TFTx2.h"
-char revStr[7] = "170"; // gg - revision string, max 6 characters
+char revStr[7] = "171"; // gg - revision string, max 6 characters
 unsigned long maxTarget = 1000;
 FATFS USBdrive;
 LocalFileSystem local("local");
@@ -177,6 +175,9 @@
 bool idir, lidir;
 bool enableSound=false;
 bool clearTest=true;
+unsigned long tbScalar = 72464;
+unsigned long rbScalar = 8696;
+unsigned long fbScalar = 132;
 
 int main() {
     char sTemp[40];
--- a/utility.h	Tue Dec 24 12:20:50 2013 +0000
+++ b/utility.h	Sat Dec 28 14:53:14 2013 +0000
@@ -82,6 +82,9 @@
 extern unsigned short modelYear;
 extern bool enableSound;
 extern const unsigned char Arial12x12[];
+extern unsigned long tbScalar;
+extern unsigned long rbScalar;
+extern unsigned long fbScalar;
 
 extern "C" {
     void mbed_reset();