can't push chnages :(

Fork of FBRDash by Michael Allan

Committer:
intrinseca
Date:
Mon Jun 25 21:01:02 2012 +0000
Revision:
1:b3907b8d9f65
Parent:
0:1f422ed56e0f
Child:
2:825f572902c6
Prototype before adding full CAN comms

Who changed what in which revision?

UserRevisionLine numberNew contents of line
intrinseca 0:1f422ed56e0f 1 #include "mbed.h"
intrinseca 0:1f422ed56e0f 2 #include "TextLCD.h"
intrinseca 1:b3907b8d9f65 3 #include "PinDetect.h"
intrinseca 1:b3907b8d9f65 4 #include "Menu.h"
intrinseca 1:b3907b8d9f65 5 #include "Comms.h"
intrinseca 1:b3907b8d9f65 6 #include "PCComms.h"
intrinseca 1:b3907b8d9f65 7 #include "Gears.h"
intrinseca 1:b3907b8d9f65 8 #include "LEDS.h"
intrinseca 1:b3907b8d9f65 9 #include "bigchar.h"
intrinseca 0:1f422ed56e0f 10
intrinseca 1:b3907b8d9f65 11 #define LCD_REFRESH_TIME 150000
intrinseca 1:b3907b8d9f65 12 #define REV_REFRESH_TIME 50000
intrinseca 1:b3907b8d9f65 13
intrinseca 1:b3907b8d9f65 14 DigitalOut warn[] = { (p20), (p19), (p27), (p18) };
intrinseca 1:b3907b8d9f65 15 DigitalOut debug[] = { (LED1), (LED2), (LED3) };
intrinseca 0:1f422ed56e0f 16
intrinseca 1:b3907b8d9f65 17 DigitalOut heartbeat(LED4);
intrinseca 1:b3907b8d9f65 18
intrinseca 1:b3907b8d9f65 19 PwmOut leds[] = { (p24), (p25), (p26), (p23), (p22), (p21) };
intrinseca 1:b3907b8d9f65 20
intrinseca 1:b3907b8d9f65 21 TextLCD lcd(p5, p6, p7, p8, p9, p10, p11);
intrinseca 0:1f422ed56e0f 22
intrinseca 1:b3907b8d9f65 23 Ticker lcdRefreshTicker;
intrinseca 1:b3907b8d9f65 24 Ticker revRefreshTicker;
intrinseca 1:b3907b8d9f65 25 Ticker increment;
intrinseca 1:b3907b8d9f65 26
intrinseca 1:b3907b8d9f65 27 State car;
intrinseca 0:1f422ed56e0f 28
intrinseca 1:b3907b8d9f65 29 Menu dashMenu(&lcd, p13, p14, p15); //*LCD, OK, Left, Right
intrinseca 1:b3907b8d9f65 30 PCComms pc(&car);
intrinseca 1:b3907b8d9f65 31 Gears gearButtons(p17, p16, p12, &car.gear, &pc); //Up, Neutral, Down, *Current Gear
intrinseca 1:b3907b8d9f65 32 LEDS revs(leds);
intrinseca 0:1f422ed56e0f 33
intrinseca 1:b3907b8d9f65 34 void revRefresh()
intrinseca 0:1f422ed56e0f 35 {
intrinseca 1:b3907b8d9f65 36 revs.refresh(car.rpm);
intrinseca 1:b3907b8d9f65 37
intrinseca 1:b3907b8d9f65 38 for(int i = 0; i < 4; i++)
intrinseca 1:b3907b8d9f65 39 {
intrinseca 1:b3907b8d9f65 40 warn[i] = car.warnings & (1 << i);
intrinseca 1:b3907b8d9f65 41 }
intrinseca 0:1f422ed56e0f 42 }
intrinseca 0:1f422ed56e0f 43
intrinseca 1:b3907b8d9f65 44 void lcdRefresh()
intrinseca 0:1f422ed56e0f 45 {
intrinseca 1:b3907b8d9f65 46 if(dashMenu.display == false)
intrinseca 1:b3907b8d9f65 47 {
intrinseca 1:b3907b8d9f65 48 lcd.locate(0, 0);
intrinseca 1:b3907b8d9f65 49 lcd.printf("R:%-11.0d", car.rpm);
intrinseca 1:b3907b8d9f65 50 lcd.locate(0, 1);
intrinseca 1:b3907b8d9f65 51 lcd.printf("S:%-3d T:%-5.0f", car.speed, car.coolant_temp);
intrinseca 1:b3907b8d9f65 52
intrinseca 1:b3907b8d9f65 53 write_bigchar(&lcd, 13, car.gear);
intrinseca 1:b3907b8d9f65 54 }
intrinseca 1:b3907b8d9f65 55 else
intrinseca 1:b3907b8d9f65 56 {
intrinseca 1:b3907b8d9f65 57 dashMenu.refresh();
intrinseca 1:b3907b8d9f65 58 }
intrinseca 1:b3907b8d9f65 59
intrinseca 1:b3907b8d9f65 60 heartbeat = !heartbeat;
intrinseca 0:1f422ed56e0f 61 }
intrinseca 0:1f422ed56e0f 62
intrinseca 1:b3907b8d9f65 63 /*void doIncrement()
intrinseca 1:b3907b8d9f65 64 {
intrinseca 1:b3907b8d9f65 65 if(car.rpm < LIMIT && car.gear > 0)
intrinseca 1:b3907b8d9f65 66 car.rpm++;
intrinseca 1:b3907b8d9f65 67 }*/
intrinseca 0:1f422ed56e0f 68
intrinseca 1:b3907b8d9f65 69 void selfTest()
intrinseca 1:b3907b8d9f65 70 {
intrinseca 1:b3907b8d9f65 71 lcd.printf(" FBR 2012");
intrinseca 0:1f422ed56e0f 72
intrinseca 1:b3907b8d9f65 73 for(int i = 0; i < LEDS::NUM_LEDS; i++)
intrinseca 1:b3907b8d9f65 74 {
intrinseca 1:b3907b8d9f65 75 leds[i] = true;
intrinseca 1:b3907b8d9f65 76 if(i < 4)
intrinseca 1:b3907b8d9f65 77 warn[i] = true;
intrinseca 1:b3907b8d9f65 78 wait(0.04);
intrinseca 1:b3907b8d9f65 79 }
intrinseca 0:1f422ed56e0f 80
intrinseca 1:b3907b8d9f65 81 for(int i = LEDS::NUM_LEDS - 1; i >= 0; i--)
intrinseca 1:b3907b8d9f65 82 {
intrinseca 1:b3907b8d9f65 83 leds[i] = false;
intrinseca 1:b3907b8d9f65 84 if(i < 4)
intrinseca 1:b3907b8d9f65 85 warn[i] = false;
intrinseca 1:b3907b8d9f65 86 wait(0.04);
intrinseca 1:b3907b8d9f65 87 }
intrinseca 0:1f422ed56e0f 88
intrinseca 1:b3907b8d9f65 89 lcd.cls();
intrinseca 1:b3907b8d9f65 90 }
intrinseca 1:b3907b8d9f65 91
intrinseca 1:b3907b8d9f65 92 int main()
intrinseca 1:b3907b8d9f65 93 {
intrinseca 1:b3907b8d9f65 94 car.rpm = 5000;
intrinseca 1:b3907b8d9f65 95 car.gear = 0;
intrinseca 1:b3907b8d9f65 96 car.speed = 150;
intrinseca 1:b3907b8d9f65 97 car.coolant_temp = 21.5;
intrinseca 1:b3907b8d9f65 98
intrinseca 1:b3907b8d9f65 99 car.throttle_pos = 1;
intrinseca 1:b3907b8d9f65 100 car.manifold_pres = 2;
intrinseca 1:b3907b8d9f65 101 car.air_temp = 3;
intrinseca 1:b3907b8d9f65 102 car.lambda = 5;
intrinseca 1:b3907b8d9f65 103 car.accel_x = 7;
intrinseca 1:b3907b8d9f65 104 car.accel_y = 8;
intrinseca 1:b3907b8d9f65 105 car.oil_temp = 10;
intrinseca 1:b3907b8d9f65 106 car.oil_pres = 11;
intrinseca 1:b3907b8d9f65 107 car.warnings = 12;
intrinseca 1:b3907b8d9f65 108
intrinseca 1:b3907b8d9f65 109 dashMenu.addItem<float>("Coolant Temp ", "%12.1f\xDF\x43", &car.coolant_temp); // \xDF\x43 -> &#65533;C . Need code for C as otherwise it gets taken as hex digit.
intrinseca 1:b3907b8d9f65 110 dashMenu.addItem<unsigned char>("Air Temp ", "%12d\xDF\x43", &car.air_temp);
intrinseca 1:b3907b8d9f65 111 dashMenu.addItem<unsigned char>("Throttle Pos ", "%13d\xDF", &car.throttle_pos);
intrinseca 1:b3907b8d9f65 112 dashMenu.addItem<unsigned char>("Manifold Pres ", "%10d psi", &car.manifold_pres);
intrinseca 1:b3907b8d9f65 113 dashMenu.addItem<unsigned char>("Lambda ", "%14d", &car.lambda);
intrinseca 1:b3907b8d9f65 114
intrinseca 1:b3907b8d9f65 115 dashMenu.addItem<unsigned char>("Oil Temp ", "%12d\xDF\x43", &car.oil_temp);
intrinseca 1:b3907b8d9f65 116 dashMenu.addItem<unsigned char>("Oil Pressure ", "%10d psi", &car.oil_pres);
intrinseca 1:b3907b8d9f65 117
intrinseca 1:b3907b8d9f65 118 setup_bigchar(&lcd);
intrinseca 1:b3907b8d9f65 119
intrinseca 1:b3907b8d9f65 120 selfTest();
intrinseca 1:b3907b8d9f65 121
intrinseca 1:b3907b8d9f65 122 lcdRefreshTicker.attach_us(&lcdRefresh, LCD_REFRESH_TIME);
intrinseca 1:b3907b8d9f65 123 revRefreshTicker.attach_us(&revRefresh, REV_REFRESH_TIME);
intrinseca 1:b3907b8d9f65 124 //increment.attach(&doIncrement, 0.0005);
intrinseca 1:b3907b8d9f65 125
intrinseca 1:b3907b8d9f65 126 while(true)
intrinseca 1:b3907b8d9f65 127 {
intrinseca 1:b3907b8d9f65 128 __WFI();
intrinseca 0:1f422ed56e0f 129 }
intrinseca 1:b3907b8d9f65 130 }