automotive simulation thingy
Dependencies: N5110 ShiftReg Tone mbed
Fork of 1620_Project_Template by
Main/main.cpp@2:e7e39d27b11f, 2017-06-29 (annotated)
- Committer:
- Al_Husien_Dabashi
- Date:
- Thu Jun 29 22:41:30 2017 +0000
- Revision:
- 2:e7e39d27b11f
- Parent:
- 0:d5312060f649
1620 Final Automotive simulation
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
eencae | 0:d5312060f649 | 1 | #include "main.h" |
eencae | 0:d5312060f649 | 2 | |
eencae | 0:d5312060f649 | 3 | // objects defined here with pin numbers (if required) |
eencae | 0:d5312060f649 | 4 | DigitalIn button_a(p29); |
eencae | 0:d5312060f649 | 5 | DigitalIn button_b(p28); |
eencae | 0:d5312060f649 | 6 | DigitalIn button_c(p27); |
eencae | 0:d5312060f649 | 7 | DigitalIn button_d(p26); |
eencae | 0:d5312060f649 | 8 | |
Al_Husien_Dabashi | 2:e7e39d27b11f | 9 | |
Al_Husien_Dabashi | 2:e7e39d27b11f | 10 | |
eencae | 0:d5312060f649 | 11 | N5110 lcd(p8,p9,p10,p11,p13,p21); |
eencae | 0:d5312060f649 | 12 | BusOut leds(LED4,LED3,LED2,LED1); |
eencae | 0:d5312060f649 | 13 | |
eencae | 0:d5312060f649 | 14 | AnalogIn ldr(p15); |
eencae | 0:d5312060f649 | 15 | |
eencae | 0:d5312060f649 | 16 | PwmOut red_led(p24); |
eencae | 0:d5312060f649 | 17 | PwmOut green_led(p23); |
eencae | 0:d5312060f649 | 18 | PwmOut blue_led(p22); |
eencae | 0:d5312060f649 | 19 | |
eencae | 0:d5312060f649 | 20 | AnalogIn tmp36(p16); |
eencae | 0:d5312060f649 | 21 | |
eencae | 0:d5312060f649 | 22 | AnalogIn pot_0(p20); |
eencae | 0:d5312060f649 | 23 | AnalogIn pot_1(p19); |
eencae | 0:d5312060f649 | 24 | AnalogIn pot_2(p17); |
eencae | 0:d5312060f649 | 25 | |
eencae | 0:d5312060f649 | 26 | Tone speaker(p18); |
eencae | 0:d5312060f649 | 27 | ShiftReg shift; |
eencae | 0:d5312060f649 | 28 | |
Al_Husien_Dabashi | 2:e7e39d27b11f | 29 | |
eencae | 0:d5312060f649 | 30 | int main() |
eencae | 0:d5312060f649 | 31 | { |
eencae | 0:d5312060f649 | 32 | init(); // initialise peripherals |
eencae | 0:d5312060f649 | 33 | welcome(); // display welcome message |
eencae | 0:d5312060f649 | 34 | |
eencae | 0:d5312060f649 | 35 | while(1) { // infinite loop |
eencae | 0:d5312060f649 | 36 | |
eencae | 0:d5312060f649 | 37 | print_menu(); // this re-prints the menu at the start of every loop |
eencae | 0:d5312060f649 | 38 | |
eencae | 0:d5312060f649 | 39 | // if any buttons pressed then jump to appropriate menu function |
eencae | 0:d5312060f649 | 40 | if (button_a.read() == 1) { |
eencae | 0:d5312060f649 | 41 | mode_A(); |
eencae | 0:d5312060f649 | 42 | } |
eencae | 0:d5312060f649 | 43 | if (button_b.read() == 1) { |
eencae | 0:d5312060f649 | 44 | mode_B(); |
eencae | 0:d5312060f649 | 45 | } |
eencae | 0:d5312060f649 | 46 | if (button_c.read() == 1) { |
eencae | 0:d5312060f649 | 47 | mode_C(); |
eencae | 0:d5312060f649 | 48 | } |
eencae | 0:d5312060f649 | 49 | if (button_d.read() == 1) { |
eencae | 0:d5312060f649 | 50 | mode_D(); |
eencae | 0:d5312060f649 | 51 | } |
eencae | 0:d5312060f649 | 52 | |
eencae | 0:d5312060f649 | 53 | // delay to prevent multiple button presses being detected |
eencae | 0:d5312060f649 | 54 | wait_ms(250); |
eencae | 0:d5312060f649 | 55 | |
Al_Husien_Dabashi | 2:e7e39d27b11f | 56 | }lcd.clear(); |
eencae | 0:d5312060f649 | 57 | } |
eencae | 0:d5312060f649 | 58 | |
eencae | 0:d5312060f649 | 59 | void init() |
eencae | 0:d5312060f649 | 60 | { |
eencae | 0:d5312060f649 | 61 | // turn off LEDs |
eencae | 0:d5312060f649 | 62 | red_led = 1.0; |
eencae | 0:d5312060f649 | 63 | green_led = 1.0; |
eencae | 0:d5312060f649 | 64 | blue_led = 1.0; |
eencae | 0:d5312060f649 | 65 | |
eencae | 0:d5312060f649 | 66 | // turn off 7-seg display |
eencae | 0:d5312060f649 | 67 | shift.write(0x00); |
eencae | 0:d5312060f649 | 68 | |
eencae | 0:d5312060f649 | 69 | // initialise LCD |
eencae | 0:d5312060f649 | 70 | lcd.init(); |
eencae | 0:d5312060f649 | 71 | |
eencae | 0:d5312060f649 | 72 | // PCB has external pull-down resistors so turn the internal ones off |
eencae | 0:d5312060f649 | 73 | button_a.mode(PullNone); |
eencae | 0:d5312060f649 | 74 | button_b.mode(PullNone); |
eencae | 0:d5312060f649 | 75 | button_c.mode(PullNone); |
eencae | 0:d5312060f649 | 76 | button_d.mode(PullNone); |
eencae | 0:d5312060f649 | 77 | } |
eencae | 0:d5312060f649 | 78 | |
eencae | 0:d5312060f649 | 79 | void print_menu() |
eencae | 0:d5312060f649 | 80 | { |
eencae | 0:d5312060f649 | 81 | lcd.clear(); |
eencae | 0:d5312060f649 | 82 | lcd.printString("Press button",0,0); |
eencae | 0:d5312060f649 | 83 | lcd.printString("to select",0,1); |
eencae | 0:d5312060f649 | 84 | lcd.printString("A: Mode A",0,2); |
eencae | 0:d5312060f649 | 85 | lcd.printString("B: Mode B",0,3); |
eencae | 0:d5312060f649 | 86 | lcd.printString("C: Mode C",0,4); |
eencae | 0:d5312060f649 | 87 | lcd.printString("D: Mode D",0,5); |
eencae | 0:d5312060f649 | 88 | lcd.refresh(); |
eencae | 0:d5312060f649 | 89 | } |
eencae | 0:d5312060f649 | 90 | |
eencae | 0:d5312060f649 | 91 | void welcome() |
eencae | 0:d5312060f649 | 92 | { |
eencae | 0:d5312060f649 | 93 | lcd.clear(); |
eencae | 0:d5312060f649 | 94 | lcd.printString(" Automotive",0,0); |
eencae | 0:d5312060f649 | 95 | lcd.printString(" Electronics",0,1); |
eencae | 0:d5312060f649 | 96 | lcd.printString(" Simulator",0,2); |
Al_Husien_Dabashi | 2:e7e39d27b11f | 97 | lcd.printString(" Al Husien",0,3); |
Al_Husien_Dabashi | 2:e7e39d27b11f | 98 | lcd.printString(" Dabashi",0,4); |
Al_Husien_Dabashi | 2:e7e39d27b11f | 99 | lcd.printString(" 201042563",0,5); |
eencae | 0:d5312060f649 | 100 | lcd.refresh(); |
eencae | 0:d5312060f649 | 101 | wait(5.0); |
eencae | 0:d5312060f649 | 102 | } |