Template code for ELEC1620 mini-project (automotive electronics)

Dependencies:   N5110 ShiftReg Tone mbed

Committer:
eencae
Date:
Mon Mar 13 07:01:51 2017 +0000
Revision:
1:76241e21ec61
Parent:
0:d5312060f649
Fixed type in Shift declaration.

Who changed what in which revision?

UserRevisionLine numberNew 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 }