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