can't push chnages :(
Dependencies: PinDetect TextLCD mbed
Fork of FBRDash by
main.cpp
- Committer:
- intrinseca
- Date:
- 2012-06-25
- Revision:
- 1:b3907b8d9f65
- Parent:
- 0:1f422ed56e0f
- Child:
- 2:825f572902c6
File content as of revision 1:b3907b8d9f65:
#include "mbed.h" #include "TextLCD.h" #include "PinDetect.h" #include "Menu.h" #include "Comms.h" #include "PCComms.h" #include "Gears.h" #include "LEDS.h" #include "bigchar.h" #define LCD_REFRESH_TIME 150000 #define REV_REFRESH_TIME 50000 DigitalOut warn[] = { (p20), (p19), (p27), (p18) }; DigitalOut debug[] = { (LED1), (LED2), (LED3) }; DigitalOut heartbeat(LED4); PwmOut leds[] = { (p24), (p25), (p26), (p23), (p22), (p21) }; TextLCD lcd(p5, p6, p7, p8, p9, p10, p11); Ticker lcdRefreshTicker; Ticker revRefreshTicker; Ticker increment; State car; Menu dashMenu(&lcd, p13, p14, p15); //*LCD, OK, Left, Right PCComms pc(&car); Gears gearButtons(p17, p16, p12, &car.gear, &pc); //Up, Neutral, Down, *Current Gear LEDS revs(leds); void revRefresh() { revs.refresh(car.rpm); for(int i = 0; i < 4; i++) { warn[i] = car.warnings & (1 << i); } } void lcdRefresh() { if(dashMenu.display == false) { lcd.locate(0, 0); lcd.printf("R:%-11.0d", car.rpm); lcd.locate(0, 1); lcd.printf("S:%-3d T:%-5.0f", car.speed, car.coolant_temp); write_bigchar(&lcd, 13, car.gear); } else { dashMenu.refresh(); } heartbeat = !heartbeat; } /*void doIncrement() { if(car.rpm < LIMIT && car.gear > 0) car.rpm++; }*/ void selfTest() { lcd.printf(" FBR 2012"); for(int i = 0; i < LEDS::NUM_LEDS; i++) { leds[i] = true; if(i < 4) warn[i] = true; wait(0.04); } for(int i = LEDS::NUM_LEDS - 1; i >= 0; i--) { leds[i] = false; if(i < 4) warn[i] = false; wait(0.04); } lcd.cls(); } int main() { car.rpm = 5000; car.gear = 0; car.speed = 150; car.coolant_temp = 21.5; car.throttle_pos = 1; car.manifold_pres = 2; car.air_temp = 3; car.lambda = 5; car.accel_x = 7; car.accel_y = 8; car.oil_temp = 10; car.oil_pres = 11; car.warnings = 12; dashMenu.addItem<float>("Coolant Temp ", "%12.1f\xDF\x43", &car.coolant_temp); // \xDF\x43 -> �C . Need code for C as otherwise it gets taken as hex digit. dashMenu.addItem<unsigned char>("Air Temp ", "%12d\xDF\x43", &car.air_temp); dashMenu.addItem<unsigned char>("Throttle Pos ", "%13d\xDF", &car.throttle_pos); dashMenu.addItem<unsigned char>("Manifold Pres ", "%10d psi", &car.manifold_pres); dashMenu.addItem<unsigned char>("Lambda ", "%14d", &car.lambda); dashMenu.addItem<unsigned char>("Oil Temp ", "%12d\xDF\x43", &car.oil_temp); dashMenu.addItem<unsigned char>("Oil Pressure ", "%10d psi", &car.oil_pres); setup_bigchar(&lcd); selfTest(); lcdRefreshTicker.attach_us(&lcdRefresh, LCD_REFRESH_TIME); revRefreshTicker.attach_us(&revRefresh, REV_REFRESH_TIME); //increment.attach(&doIncrement, 0.0005); while(true) { __WFI(); } }