test fork
Dependencies: SPI_TFTx2 SPI_TFTx2_ILI9341 TFT_fonts TOUCH_TFTx2 mbed
Fork of CANary_9341 by
Diff: displayModes.cpp
- Revision:
- 171:355e284f5201
- Parent:
- 170:7ee98e3611bc
- Child:
- 172:53548bf8bf85
diff -r 7ee98e3611bc -r 355e284f5201 displayModes.cpp --- 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)]];