brw1

Dependencies:   mbed

Committer:
reiniermarcel
Date:
Mon Nov 30 11:13:18 2015 +0000
Revision:
0:a115ff47d1c1
ok

Who changed what in which revision?

UserRevisionLine numberNew contents of line
reiniermarcel 0:a115ff47d1c1 1 #include "mbed.h"
reiniermarcel 0:a115ff47d1c1 2 #include "RA8875.h"
reiniermarcel 0:a115ff47d1c1 3
reiniermarcel 0:a115ff47d1c1 4 Serial Fc(p28, p27);
reiniermarcel 0:a115ff47d1c1 5
reiniermarcel 0:a115ff47d1c1 6 int fuelcellStatus = -1;
reiniermarcel 0:a115ff47d1c1 7 int fuelcellAmbientRawT;
reiniermarcel 0:a115ff47d1c1 8 float fuelcellAmbientT;
reiniermarcel 0:a115ff47d1c1 9 int fuelcellStackRawV;
reiniermarcel 0:a115ff47d1c1 10 int fuelcellStackRawIHighByte;
reiniermarcel 0:a115ff47d1c1 11 int fuelcellStackRawILowByte;
reiniermarcel 0:a115ff47d1c1 12 int fuelcellStackRawH2Sensor;
reiniermarcel 0:a115ff47d1c1 13
reiniermarcel 0:a115ff47d1c1 14 int fuelcellStackRawT;
reiniermarcel 0:a115ff47d1c1 15 int fuelcellRawOutputCurrent1; //high byte
reiniermarcel 0:a115ff47d1c1 16 int fuelcellRawOutputCurrent2; //low byte
reiniermarcel 0:a115ff47d1c1 17 int fuelcellBatteryRawV;
reiniermarcel 0:a115ff47d1c1 18 float fuelcellStackV;
reiniermarcel 0:a115ff47d1c1 19 float fuelcellStackI;
reiniermarcel 0:a115ff47d1c1 20 float h2SensorVoltage;
reiniermarcel 0:a115ff47d1c1 21 float fuelcellStackPower;
reiniermarcel 0:a115ff47d1c1 22 float fuelcellStackT;
reiniermarcel 0:a115ff47d1c1 23 float fuelcellOutputCurrent;//
reiniermarcel 0:a115ff47d1c1 24 float fuelcellBatteryV;
reiniermarcel 0:a115ff47d1c1 25 float PWRused = 0.0;
reiniermarcel 0:a115ff47d1c1 26
reiniermarcel 0:a115ff47d1c1 27 InterruptIn S(p15);
reiniermarcel 0:a115ff47d1c1 28 float speed = 0.0;
reiniermarcel 0:a115ff47d1c1 29 float avgspeed = 0.0;
reiniermarcel 0:a115ff47d1c1 30 float necspeed = 0.0;
reiniermarcel 0:a115ff47d1c1 31 float wielomtrek = 1.75;
reiniermarcel 0:a115ff47d1c1 32 bool rond = 0;
reiniermarcel 0:a115ff47d1c1 33 Timer t;
reiniermarcel 0:a115ff47d1c1 34 Timer teller;
reiniermarcel 0:a115ff47d1c1 35 Ticker tick;
reiniermarcel 0:a115ff47d1c1 36
reiniermarcel 0:a115ff47d1c1 37 int seconde = 0;
reiniermarcel 0:a115ff47d1c1 38 int sec = 0;
reiniermarcel 0:a115ff47d1c1 39 int min = 0;
reiniermarcel 0:a115ff47d1c1 40 int lmin = 39;
reiniermarcel 0:a115ff47d1c1 41 int lsec = 0;
reiniermarcel 0:a115ff47d1c1 42
reiniermarcel 0:a115ff47d1c1 43 float afstandtogo = 17000.0;
reiniermarcel 0:a115ff47d1c1 44 float afstand = 0.0;
reiniermarcel 0:a115ff47d1c1 45 float tijd = 39.0*60.0;
reiniermarcel 0:a115ff47d1c1 46 color_t Kleur1;
reiniermarcel 0:a115ff47d1c1 47 color_t Kleur6;
reiniermarcel 0:a115ff47d1c1 48
reiniermarcel 0:a115ff47d1c1 49
reiniermarcel 0:a115ff47d1c1 50
reiniermarcel 0:a115ff47d1c1 51 void tel(){
reiniermarcel 0:a115ff47d1c1 52 rond=1;
reiniermarcel 0:a115ff47d1c1 53 }
reiniermarcel 0:a115ff47d1c1 54
reiniermarcel 0:a115ff47d1c1 55
reiniermarcel 0:a115ff47d1c1 56 void counters(){
reiniermarcel 0:a115ff47d1c1 57 seconde++;
reiniermarcel 0:a115ff47d1c1 58 PWRused += (fuelcellStackPower * (1.0/3600.0));
reiniermarcel 0:a115ff47d1c1 59 if(seconde >= 39*60)
reiniermarcel 0:a115ff47d1c1 60 {
reiniermarcel 0:a115ff47d1c1 61
reiniermarcel 0:a115ff47d1c1 62 min = 39;
reiniermarcel 0:a115ff47d1c1 63 sec = 00;
reiniermarcel 0:a115ff47d1c1 64 lmin = 00;
reiniermarcel 0:a115ff47d1c1 65 lsec = 00;
reiniermarcel 0:a115ff47d1c1 66 Kleur1 = BrightRed;
reiniermarcel 0:a115ff47d1c1 67 Kleur6 = BrightRed;
reiniermarcel 0:a115ff47d1c1 68 }
reiniermarcel 0:a115ff47d1c1 69 else if(seconde >= 34*60)
reiniermarcel 0:a115ff47d1c1 70 {
reiniermarcel 0:a115ff47d1c1 71
reiniermarcel 0:a115ff47d1c1 72 min = seconde/60;
reiniermarcel 0:a115ff47d1c1 73 sec = seconde - (min*60);
reiniermarcel 0:a115ff47d1c1 74 lsec--;
reiniermarcel 0:a115ff47d1c1 75 if(lsec < 0){
reiniermarcel 0:a115ff47d1c1 76 lsec = 59;
reiniermarcel 0:a115ff47d1c1 77 lmin--;
reiniermarcel 0:a115ff47d1c1 78 }
reiniermarcel 0:a115ff47d1c1 79
reiniermarcel 0:a115ff47d1c1 80 Kleur1 = Yellow;
reiniermarcel 0:a115ff47d1c1 81 Kleur6 = Yellow;
reiniermarcel 0:a115ff47d1c1 82 }
reiniermarcel 0:a115ff47d1c1 83 else
reiniermarcel 0:a115ff47d1c1 84 {
reiniermarcel 0:a115ff47d1c1 85
reiniermarcel 0:a115ff47d1c1 86 min = seconde/60;
reiniermarcel 0:a115ff47d1c1 87 sec = seconde - (min*60);
reiniermarcel 0:a115ff47d1c1 88 lsec--;
reiniermarcel 0:a115ff47d1c1 89 if(lsec < 0){
reiniermarcel 0:a115ff47d1c1 90 lsec = 59;
reiniermarcel 0:a115ff47d1c1 91 lmin--;
reiniermarcel 0:a115ff47d1c1 92 }
reiniermarcel 0:a115ff47d1c1 93
reiniermarcel 0:a115ff47d1c1 94 Kleur1 = BrightGreen;
reiniermarcel 0:a115ff47d1c1 95 Kleur6 = BrightGreen;
reiniermarcel 0:a115ff47d1c1 96 }
reiniermarcel 0:a115ff47d1c1 97
reiniermarcel 0:a115ff47d1c1 98 }
reiniermarcel 0:a115ff47d1c1 99
reiniermarcel 0:a115ff47d1c1 100 void snelheidmeten(){
reiniermarcel 0:a115ff47d1c1 101 if (rond){
reiniermarcel 0:a115ff47d1c1 102 speed = (wielomtrek/t.read())*3,6;
reiniermarcel 0:a115ff47d1c1 103 afstand += wielomtrek;
reiniermarcel 0:a115ff47d1c1 104 t.reset();
reiniermarcel 0:a115ff47d1c1 105 }
reiniermarcel 0:a115ff47d1c1 106 tijd -= teller.read();
reiniermarcel 0:a115ff47d1c1 107 necspeed = ((afstandtogo-afstand)/tijd)*3.6;
reiniermarcel 0:a115ff47d1c1 108 avgspeed = (afstand/teller.read())*3.6;
reiniermarcel 0:a115ff47d1c1 109
reiniermarcel 0:a115ff47d1c1 110 if(t.read() > 2.5)
reiniermarcel 0:a115ff47d1c1 111 speed = 0.0;
reiniermarcel 0:a115ff47d1c1 112
reiniermarcel 0:a115ff47d1c1 113 rond = 0;
reiniermarcel 0:a115ff47d1c1 114
reiniermarcel 0:a115ff47d1c1 115 }
reiniermarcel 0:a115ff47d1c1 116
reiniermarcel 0:a115ff47d1c1 117 void checkIncomingFcData() {
reiniermarcel 0:a115ff47d1c1 118
reiniermarcel 0:a115ff47d1c1 119 // anything in the buffer? yes check if its a valid packet. no, return
reiniermarcel 0:a115ff47d1c1 120 if (Fc.readable()) {
reiniermarcel 0:a115ff47d1c1 121
reiniermarcel 0:a115ff47d1c1 122
reiniermarcel 0:a115ff47d1c1 123
reiniermarcel 0:a115ff47d1c1 124 fuelcellStatus = Fc.getc();
reiniermarcel 0:a115ff47d1c1 125 fuelcellAmbientRawT = Fc.getc();
reiniermarcel 0:a115ff47d1c1 126 fuelcellStackRawV = Fc.getc();
reiniermarcel 0:a115ff47d1c1 127 fuelcellStackRawH2Sensor = Fc.getc();
reiniermarcel 0:a115ff47d1c1 128 fuelcellStackRawT= Fc.getc();
reiniermarcel 0:a115ff47d1c1 129 fuelcellStackRawIHighByte = Fc.getc();
reiniermarcel 0:a115ff47d1c1 130 fuelcellStackRawILowByte = Fc.getc();
reiniermarcel 0:a115ff47d1c1 131 fuelcellBatteryRawV = Fc.getc();
reiniermarcel 0:a115ff47d1c1 132
reiniermarcel 0:a115ff47d1c1 133 //calculate actual values
reiniermarcel 0:a115ff47d1c1 134 fuelcellAmbientT = fuelcellAmbientRawT * .5;
reiniermarcel 0:a115ff47d1c1 135 fuelcellStackV = fuelcellStackRawV * .33333;
reiniermarcel 0:a115ff47d1c1 136 fuelcellStackT = fuelcellStackRawT * .5;
reiniermarcel 0:a115ff47d1c1 137 fuelcellStackI = ((fuelcellStackRawIHighByte<<8) + fuelcellStackRawILowByte) * .2;//
reiniermarcel 0:a115ff47d1c1 138 fuelcellBatteryV = fuelcellBatteryRawV * .10;
reiniermarcel 0:a115ff47d1c1 139 fuelcellStackPower = fuelcellStackI * fuelcellStackV;
reiniermarcel 0:a115ff47d1c1 140 h2SensorVoltage = fuelcellStackRawH2Sensor *.10;
reiniermarcel 0:a115ff47d1c1 141
reiniermarcel 0:a115ff47d1c1 142 }
reiniermarcel 0:a115ff47d1c1 143 }
reiniermarcel 0:a115ff47d1c1 144
reiniermarcel 0:a115ff47d1c1 145
reiniermarcel 0:a115ff47d1c1 146
reiniermarcel 0:a115ff47d1c1 147
reiniermarcel 0:a115ff47d1c1 148
reiniermarcel 0:a115ff47d1c1 149 int main()
reiniermarcel 0:a115ff47d1c1 150 {
reiniermarcel 0:a115ff47d1c1 151 teller.start();
reiniermarcel 0:a115ff47d1c1 152 t.start();
reiniermarcel 0:a115ff47d1c1 153 S.rise(&tel);
reiniermarcel 0:a115ff47d1c1 154 float f = 10000000;
reiniermarcel 0:a115ff47d1c1 155
reiniermarcel 0:a115ff47d1c1 156
reiniermarcel 0:a115ff47d1c1 157 RA8875 lcd(p5, p6, p7, p12, NC, "tft"); // MOSI, MISO, SCK, /ChipSelect, /reset, name
reiniermarcel 0:a115ff47d1c1 158 lcd.init(800, 480, 24, true, false, false);
reiniermarcel 0:a115ff47d1c1 159
reiniermarcel 0:a115ff47d1c1 160 lcd.frequency(f);
reiniermarcel 0:a115ff47d1c1 161 AnalogIn ain(A5);
reiniermarcel 0:a115ff47d1c1 162 tick.attach(&counters, 1.0);
reiniermarcel 0:a115ff47d1c1 163 lcd.cls();
reiniermarcel 0:a115ff47d1c1 164 wait_ms(250);
reiniermarcel 0:a115ff47d1c1 165
reiniermarcel 0:a115ff47d1c1 166
reiniermarcel 0:a115ff47d1c1 167
reiniermarcel 0:a115ff47d1c1 168
reiniermarcel 0:a115ff47d1c1 169 lcd.background(White);
reiniermarcel 0:a115ff47d1c1 170 lcd.fillrect( 0,0, 800,480, White);
reiniermarcel 0:a115ff47d1c1 171 lcd.fillrect( 0,79, 800,81 , Black); // hor strepen over het hele beeld
reiniermarcel 0:a115ff47d1c1 172 lcd.fillrect( 0,159, 800,161, Black);
reiniermarcel 0:a115ff47d1c1 173 lcd.fillrect( 0,239, 800,241, Black);
reiniermarcel 0:a115ff47d1c1 174 lcd.fillrect( 0,319, 800,321, Black);
reiniermarcel 0:a115ff47d1c1 175 lcd.fillrect( 0,399, 800,401, Black);
reiniermarcel 0:a115ff47d1c1 176
reiniermarcel 0:a115ff47d1c1 177 lcd.fillrect( 759,80 , 761,240, Black); //verticale streep boven
reiniermarcel 0:a115ff47d1c1 178 lcd.fillrect( 759,320, 761,480, Black); //verticale streep onder
reiniermarcel 0:a115ff47d1c1 179
reiniermarcel 0:a115ff47d1c1 180 lcd.fillrect( 371,119, 800,121, Black); //hor strepen vanaf halve cirkel
reiniermarcel 0:a115ff47d1c1 181 lcd.fillrect( 396,199, 800,201, Black);
reiniermarcel 0:a115ff47d1c1 182 lcd.fillrect( 371,359, 800,361, Black);
reiniermarcel 0:a115ff47d1c1 183 lcd.fillrect( 315,439, 800,441, Black);
reiniermarcel 0:a115ff47d1c1 184
reiniermarcel 0:a115ff47d1c1 185 lcd.line( 209,0 , 280,80 , Black); //binnenste halve cirkel
reiniermarcel 0:a115ff47d1c1 186 lcd.line( 280,80 , 321,160, Black);
reiniermarcel 0:a115ff47d1c1 187 lcd.line( 321,160, 331,240, Black);
reiniermarcel 0:a115ff47d1c1 188 lcd.line( 331,240, 321,320, Black);
reiniermarcel 0:a115ff47d1c1 189 lcd.line( 321,320, 280,400, Black);
reiniermarcel 0:a115ff47d1c1 190 lcd.line( 280,400, 209,480, Black);
reiniermarcel 0:a115ff47d1c1 191
reiniermarcel 0:a115ff47d1c1 192 lcd.line( 209+70,0 , 280+70,80 , Black); //buitenste halve cirkel (+70)
reiniermarcel 0:a115ff47d1c1 193 lcd.line( 280+70,80 , 321+70,160, Black);
reiniermarcel 0:a115ff47d1c1 194 lcd.line( 321+70,160, 331+70,240, Black);
reiniermarcel 0:a115ff47d1c1 195 lcd.line( 331+70,240, 321+70,320, Black);
reiniermarcel 0:a115ff47d1c1 196 lcd.line( 321+70,320, 280+70,400, Black);
reiniermarcel 0:a115ff47d1c1 197 lcd.line( 280+70,400, 209+70,480, Black);
reiniermarcel 0:a115ff47d1c1 198
reiniermarcel 0:a115ff47d1c1 199 Kleur1 = BrightGreen;
reiniermarcel 0:a115ff47d1c1 200 Kleur6 = BrightGreen;
reiniermarcel 0:a115ff47d1c1 201
reiniermarcel 0:a115ff47d1c1 202 lcd.SetTextFontSize(2,2);
reiniermarcel 0:a115ff47d1c1 203 int H = lcd.fontheight()/2;
reiniermarcel 0:a115ff47d1c1 204 lcd.puts(411,40-H, "STATUS FUEL CELL");
reiniermarcel 0:a115ff47d1c1 205 lcd.puts(411,280-H, "GENERAL STATUS");
reiniermarcel 0:a115ff47d1c1 206
reiniermarcel 0:a115ff47d1c1 207 lcd.SetTextFontSize(1,1);
reiniermarcel 0:a115ff47d1c1 208 H = lcd.fontheight()/2;
reiniermarcel 0:a115ff47d1c1 209
reiniermarcel 0:a115ff47d1c1 210
reiniermarcel 0:a115ff47d1c1 211 color_t Kleur2;
reiniermarcel 0:a115ff47d1c1 212 color_t Kleur3;
reiniermarcel 0:a115ff47d1c1 213 color_t Kleur4;
reiniermarcel 0:a115ff47d1c1 214 color_t Kleur5;
reiniermarcel 0:a115ff47d1c1 215
reiniermarcel 0:a115ff47d1c1 216 color_t KleurA;
reiniermarcel 0:a115ff47d1c1 217 color_t KleurB;
reiniermarcel 0:a115ff47d1c1 218 color_t KleurC;
reiniermarcel 0:a115ff47d1c1 219 color_t KleurD;
reiniermarcel 0:a115ff47d1c1 220 color_t KleurE;
reiniermarcel 0:a115ff47d1c1 221 color_t KleurF;
reiniermarcel 0:a115ff47d1c1 222 color_t KleurG;
reiniermarcel 0:a115ff47d1c1 223 color_t KleurH;
reiniermarcel 0:a115ff47d1c1 224
reiniermarcel 0:a115ff47d1c1 225
reiniermarcel 0:a115ff47d1c1 226 while(1){
reiniermarcel 0:a115ff47d1c1 227 checkIncomingFcData();
reiniermarcel 0:a115ff47d1c1 228 snelheidmeten();
reiniermarcel 0:a115ff47d1c1 229
reiniermarcel 0:a115ff47d1c1 230 if (avgspeed >= 26.0 && avgspeed <= 27.3)
reiniermarcel 0:a115ff47d1c1 231 {
reiniermarcel 0:a115ff47d1c1 232
reiniermarcel 0:a115ff47d1c1 233 Kleur2 = BrightGreen;
reiniermarcel 0:a115ff47d1c1 234 }
reiniermarcel 0:a115ff47d1c1 235 else if(avgspeed <= 25.0 || avgspeed >= 28.5)
reiniermarcel 0:a115ff47d1c1 236 Kleur2 = BrightRed;
reiniermarcel 0:a115ff47d1c1 237 else{
reiniermarcel 0:a115ff47d1c1 238 Kleur2 = Yellow;
reiniermarcel 0:a115ff47d1c1 239 }
reiniermarcel 0:a115ff47d1c1 240 Kleur3 = BrightBlue;
reiniermarcel 0:a115ff47d1c1 241
reiniermarcel 0:a115ff47d1c1 242
reiniermarcel 0:a115ff47d1c1 243 Kleur4 = BrightBlue;
reiniermarcel 0:a115ff47d1c1 244
reiniermarcel 0:a115ff47d1c1 245
reiniermarcel 0:a115ff47d1c1 246 Kleur5 = BrightBlue;
reiniermarcel 0:a115ff47d1c1 247
reiniermarcel 0:a115ff47d1c1 248 if(fuelcellStackV >= 22 && fuelcellStackV <= 45)
reiniermarcel 0:a115ff47d1c1 249 {
reiniermarcel 0:a115ff47d1c1 250 KleurA = BrightGreen;
reiniermarcel 0:a115ff47d1c1 251 }
reiniermarcel 0:a115ff47d1c1 252 else if(fuelcellStackV <= 20 || fuelcellStackV >= 48){
reiniermarcel 0:a115ff47d1c1 253 KleurA = BrightRed;
reiniermarcel 0:a115ff47d1c1 254 }
reiniermarcel 0:a115ff47d1c1 255 else{
reiniermarcel 0:a115ff47d1c1 256 KleurA = Yellow;
reiniermarcel 0:a115ff47d1c1 257 }
reiniermarcel 0:a115ff47d1c1 258
reiniermarcel 0:a115ff47d1c1 259
reiniermarcel 0:a115ff47d1c1 260 if(fuelcellStackI <= 25)
reiniermarcel 0:a115ff47d1c1 261 {
reiniermarcel 0:a115ff47d1c1 262 KleurB = BrightGreen;
reiniermarcel 0:a115ff47d1c1 263 }
reiniermarcel 0:a115ff47d1c1 264 else if(fuelcellStackI >= 27){
reiniermarcel 0:a115ff47d1c1 265 KleurB = BrightRed;
reiniermarcel 0:a115ff47d1c1 266 }
reiniermarcel 0:a115ff47d1c1 267 else{
reiniermarcel 0:a115ff47d1c1 268 KleurB = Yellow;
reiniermarcel 0:a115ff47d1c1 269 }
reiniermarcel 0:a115ff47d1c1 270
reiniermarcel 0:a115ff47d1c1 271
reiniermarcel 0:a115ff47d1c1 272
reiniermarcel 0:a115ff47d1c1 273 if(fuelcellStackPower <=1000){
reiniermarcel 0:a115ff47d1c1 274 KleurC = BrightGreen;
reiniermarcel 0:a115ff47d1c1 275 }
reiniermarcel 0:a115ff47d1c1 276 else if(fuelcellStackPower >= 1200){
reiniermarcel 0:a115ff47d1c1 277 KleurC = BrightRed;
reiniermarcel 0:a115ff47d1c1 278 }
reiniermarcel 0:a115ff47d1c1 279 else{
reiniermarcel 0:a115ff47d1c1 280 KleurC = Yellow;
reiniermarcel 0:a115ff47d1c1 281 }
reiniermarcel 0:a115ff47d1c1 282
reiniermarcel 0:a115ff47d1c1 283
reiniermarcel 0:a115ff47d1c1 284 if(fuelcellStackT <=38){
reiniermarcel 0:a115ff47d1c1 285 KleurD = BrightGreen;
reiniermarcel 0:a115ff47d1c1 286 }
reiniermarcel 0:a115ff47d1c1 287 else if(fuelcellStackT >= 40){
reiniermarcel 0:a115ff47d1c1 288 KleurD = BrightRed;
reiniermarcel 0:a115ff47d1c1 289 }
reiniermarcel 0:a115ff47d1c1 290 else{
reiniermarcel 0:a115ff47d1c1 291 KleurD = Yellow;
reiniermarcel 0:a115ff47d1c1 292 }
reiniermarcel 0:a115ff47d1c1 293
reiniermarcel 0:a115ff47d1c1 294
reiniermarcel 0:a115ff47d1c1 295 if((ain*20*3.3) <=45){
reiniermarcel 0:a115ff47d1c1 296 KleurE = BrightGreen;
reiniermarcel 0:a115ff47d1c1 297 }
reiniermarcel 0:a115ff47d1c1 298 else if((ain*20*3.3) >= 48){
reiniermarcel 0:a115ff47d1c1 299 KleurE = BrightRed;
reiniermarcel 0:a115ff47d1c1 300 }
reiniermarcel 0:a115ff47d1c1 301 else{
reiniermarcel 0:a115ff47d1c1 302 KleurE = Yellow;
reiniermarcel 0:a115ff47d1c1 303 }
reiniermarcel 0:a115ff47d1c1 304
reiniermarcel 0:a115ff47d1c1 305
reiniermarcel 0:a115ff47d1c1 306 if(fuelcellAmbientT <=28){
reiniermarcel 0:a115ff47d1c1 307 KleurF = BrightGreen;
reiniermarcel 0:a115ff47d1c1 308 }
reiniermarcel 0:a115ff47d1c1 309 else if(fuelcellAmbientT >= 30){
reiniermarcel 0:a115ff47d1c1 310 KleurF = BrightRed;
reiniermarcel 0:a115ff47d1c1 311 }
reiniermarcel 0:a115ff47d1c1 312 else{
reiniermarcel 0:a115ff47d1c1 313 KleurF = Yellow;
reiniermarcel 0:a115ff47d1c1 314 }
reiniermarcel 0:a115ff47d1c1 315
reiniermarcel 0:a115ff47d1c1 316
reiniermarcel 0:a115ff47d1c1 317
reiniermarcel 0:a115ff47d1c1 318
reiniermarcel 0:a115ff47d1c1 319
reiniermarcel 0:a115ff47d1c1 320
reiniermarcel 0:a115ff47d1c1 321
reiniermarcel 0:a115ff47d1c1 322 lcd.foreground(Black);
reiniermarcel 0:a115ff47d1c1 323
reiniermarcel 0:a115ff47d1c1 324 lcd.SetTextCursor(10,40-H); //16
reiniermarcel 0:a115ff47d1c1 325 lcd.printf("Total time %02d:%02d",min,sec );
reiniermarcel 0:a115ff47d1c1 326 lcd.SetTextCursor(10,120-H);
reiniermarcel 0:a115ff47d1c1 327 lcd.printf("Average speed %.1f km/h ",avgspeed);
reiniermarcel 0:a115ff47d1c1 328 lcd.SetTextCursor(10,200-H);
reiniermarcel 0:a115ff47d1c1 329 lcd.printf("Necessary speed %.1f km/h ",necspeed);
reiniermarcel 0:a115ff47d1c1 330 lcd.SetTextCursor(10,280-H);
reiniermarcel 0:a115ff47d1c1 331 lcd.printf("Actual speed %.1f km/h ",speed);
reiniermarcel 0:a115ff47d1c1 332 lcd.SetTextCursor(10,360-H);
reiniermarcel 0:a115ff47d1c1 333 lcd.printf("Power used %.1f Wh ",PWRused);
reiniermarcel 0:a115ff47d1c1 334 lcd.SetTextCursor(10,440-H);
reiniermarcel 0:a115ff47d1c1 335 lcd.printf("Time left %02d:%02d",lmin,lsec);
reiniermarcel 0:a115ff47d1c1 336
reiniermarcel 0:a115ff47d1c1 337 lcd.SetTextCursor(411,100-H);
reiniermarcel 0:a115ff47d1c1 338 lcd.printf("Voltage fuel cell %.2f V ",fuelcellStackV);
reiniermarcel 0:a115ff47d1c1 339 lcd.SetTextCursor(411,140-H);
reiniermarcel 0:a115ff47d1c1 340 lcd.printf("Current fuel cell %.2f A ",fuelcellStackI);
reiniermarcel 0:a115ff47d1c1 341 lcd.SetTextCursor(411,180-H);
reiniermarcel 0:a115ff47d1c1 342 lcd.printf("Power fuel cell %.2f W ",fuelcellStackPower);
reiniermarcel 0:a115ff47d1c1 343 lcd.SetTextCursor(411,220-H);
reiniermarcel 0:a115ff47d1c1 344 lcd.printf("Temperature fuel cell %.2f %cC ",fuelcellStackT,176);
reiniermarcel 0:a115ff47d1c1 345 lcd.SetTextCursor(411,340-H);
reiniermarcel 0:a115ff47d1c1 346 lcd.printf("Voltage supercapacitors %.2f V ",ain*20*3.3);
reiniermarcel 0:a115ff47d1c1 347 lcd.SetTextCursor(411,380-H);
reiniermarcel 0:a115ff47d1c1 348 lcd.printf("Ambient temperature %.2f %cC ",fuelcellAmbientT,176);
reiniermarcel 0:a115ff47d1c1 349 lcd.SetTextCursor(411,420-H);
reiniermarcel 0:a115ff47d1c1 350
reiniermarcel 0:a115ff47d1c1 351 switch(fuelcellStatus)
reiniermarcel 0:a115ff47d1c1 352 {
reiniermarcel 0:a115ff47d1c1 353 case 0:
reiniermarcel 0:a115ff47d1c1 354 lcd.printf("Status fuelcell: NORMAL ");
reiniermarcel 0:a115ff47d1c1 355 KleurG = BrightGreen;
reiniermarcel 0:a115ff47d1c1 356 KleurH = BrightGreen;
reiniermarcel 0:a115ff47d1c1 357 break;
reiniermarcel 0:a115ff47d1c1 358
reiniermarcel 0:a115ff47d1c1 359 case 1:
reiniermarcel 0:a115ff47d1c1 360 lcd.printf("Status fuelcell: BATTERY LOW ");
reiniermarcel 0:a115ff47d1c1 361 KleurG = BrightRed;
reiniermarcel 0:a115ff47d1c1 362 KleurH = BrightRed;
reiniermarcel 0:a115ff47d1c1 363 break;
reiniermarcel 0:a115ff47d1c1 364
reiniermarcel 0:a115ff47d1c1 365 case 2:
reiniermarcel 0:a115ff47d1c1 366 lcd.printf("Status fuelcell: FC VOLTAGE LOW ");
reiniermarcel 0:a115ff47d1c1 367 KleurG = BrightRed;
reiniermarcel 0:a115ff47d1c1 368 KleurH = BrightRed;
reiniermarcel 0:a115ff47d1c1 369 break;
reiniermarcel 0:a115ff47d1c1 370
reiniermarcel 0:a115ff47d1c1 371 case 3:
reiniermarcel 0:a115ff47d1c1 372 lcd.printf("Status fuelcell: H2% HIGH ");
reiniermarcel 0:a115ff47d1c1 373 KleurG = BrightRed;
reiniermarcel 0:a115ff47d1c1 374 KleurH = BrightRed;
reiniermarcel 0:a115ff47d1c1 375 break;
reiniermarcel 0:a115ff47d1c1 376
reiniermarcel 0:a115ff47d1c1 377 case 4:
reiniermarcel 0:a115ff47d1c1 378 lcd.printf("Status fuelcell: CURRENT HIGH ");
reiniermarcel 0:a115ff47d1c1 379 KleurG = BrightRed;
reiniermarcel 0:a115ff47d1c1 380 KleurH = BrightRed;
reiniermarcel 0:a115ff47d1c1 381 break;
reiniermarcel 0:a115ff47d1c1 382
reiniermarcel 0:a115ff47d1c1 383 case 5:
reiniermarcel 0:a115ff47d1c1 384 lcd.printf("Status fuelcell: TEMPERATURE HIGH");
reiniermarcel 0:a115ff47d1c1 385 KleurG = BrightRed;
reiniermarcel 0:a115ff47d1c1 386 KleurH = BrightRed;
reiniermarcel 0:a115ff47d1c1 387 break;
reiniermarcel 0:a115ff47d1c1 388
reiniermarcel 0:a115ff47d1c1 389 case 20:
reiniermarcel 0:a115ff47d1c1 390 lcd.printf("Status fuelcell: MANUAL TURN OFF ");
reiniermarcel 0:a115ff47d1c1 391 KleurG = BrightRed;
reiniermarcel 0:a115ff47d1c1 392 KleurH = BrightRed;
reiniermarcel 0:a115ff47d1c1 393 break;
reiniermarcel 0:a115ff47d1c1 394
reiniermarcel 0:a115ff47d1c1 395 default:
reiniermarcel 0:a115ff47d1c1 396 lcd.printf("Status fuelcell: NO STATUS ");
reiniermarcel 0:a115ff47d1c1 397 KleurG = Yellow;
reiniermarcel 0:a115ff47d1c1 398 KleurH = Yellow;
reiniermarcel 0:a115ff47d1c1 399 }
reiniermarcel 0:a115ff47d1c1 400
reiniermarcel 0:a115ff47d1c1 401
reiniermarcel 0:a115ff47d1c1 402
reiniermarcel 0:a115ff47d1c1 403
reiniermarcel 0:a115ff47d1c1 404
reiniermarcel 0:a115ff47d1c1 405
reiniermarcel 0:a115ff47d1c1 406 // vakjes in de halve cirkel
reiniermarcel 0:a115ff47d1c1 407 lcd.filltriangle( 210,0, 281,78, 278,0, Kleur1); //vakje 1
reiniermarcel 0:a115ff47d1c1 408 lcd.filltriangle( 349,78, 281,78, 278,0, Kleur1);
reiniermarcel 0:a115ff47d1c1 409
reiniermarcel 0:a115ff47d1c1 410 lcd.filltriangle( 281,82, 322,158, 349,82, Kleur2); //vakje 2
reiniermarcel 0:a115ff47d1c1 411 lcd.filltriangle( 390,158, 322,158, 349,82, Kleur2);
reiniermarcel 0:a115ff47d1c1 412
reiniermarcel 0:a115ff47d1c1 413 lcd.filltriangle( 322,162, 332,238, 390,162, Kleur3); //vakje 3
reiniermarcel 0:a115ff47d1c1 414 lcd.filltriangle( 400,238, 332,238, 390,162, Kleur3);
reiniermarcel 0:a115ff47d1c1 415
reiniermarcel 0:a115ff47d1c1 416 lcd.filltriangle( 332,242, 322,318, 400,242, Kleur4); //vakje 4
reiniermarcel 0:a115ff47d1c1 417 lcd.filltriangle( 390,318, 322,318, 400,242, Kleur4);
reiniermarcel 0:a115ff47d1c1 418
reiniermarcel 0:a115ff47d1c1 419 lcd.filltriangle( 322,322, 281,398, 390,322, Kleur5); //vakje 5
reiniermarcel 0:a115ff47d1c1 420 lcd.filltriangle( 349,398, 281,398, 390,322, Kleur5);
reiniermarcel 0:a115ff47d1c1 421
reiniermarcel 0:a115ff47d1c1 422 lcd.filltriangle( 281,402, 210,480, 349,402, Kleur6); //vakje 6
reiniermarcel 0:a115ff47d1c1 423 lcd.filltriangle( 278,480, 210,480, 349,402, Kleur6);
reiniermarcel 0:a115ff47d1c1 424
reiniermarcel 0:a115ff47d1c1 425 //vierkantjes aan de rechterkant
reiniermarcel 0:a115ff47d1c1 426
reiniermarcel 0:a115ff47d1c1 427 lcd.fillrect( 762,82, 800,118, KleurA); // Vierkant A
reiniermarcel 0:a115ff47d1c1 428 lcd.fillrect( 762,122, 800,158, KleurB); // Vierkant B
reiniermarcel 0:a115ff47d1c1 429 lcd.fillrect( 762,162, 800,198, KleurC); // Vierkant C
reiniermarcel 0:a115ff47d1c1 430 lcd.fillrect( 762,202, 800,238, KleurD); // Vierkant D
reiniermarcel 0:a115ff47d1c1 431 lcd.fillrect( 762,322, 800,358, KleurE); // Vierkant E
reiniermarcel 0:a115ff47d1c1 432 lcd.fillrect( 762,362, 800,398, KleurF); // Vierkant F
reiniermarcel 0:a115ff47d1c1 433 lcd.fillrect( 762,402, 800,438, KleurG); // Vierkant G
reiniermarcel 0:a115ff47d1c1 434 lcd.fillrect( 762,442, 800,480, KleurH); // Vierkant H
reiniermarcel 0:a115ff47d1c1 435
reiniermarcel 0:a115ff47d1c1 436 wait(0.2);
reiniermarcel 0:a115ff47d1c1 437 }
reiniermarcel 0:a115ff47d1c1 438 }