Project Template for Headstart Course 2017

Dependencies:   N5110 ShiftReg Tone mbed

Fork of 1620_Project_Template by Craig Evans

Committer:
eendmo
Date:
Mon Jul 10 10:07:01 2017 +0000
Revision:
2:0f91b789d90a
Parent:
0:d5312060f649
Project for Headstart Lab Session 2017

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);
eendmo 2:0f91b789d90a 25 ShiftReg sevenSeg;
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) {
eendmo 2:0f91b789d90a 44
eencae 0:d5312060f649 45 }
eencae 0:d5312060f649 46 if (button_d.read() == 1) {
eendmo 2:0f91b789d90a 47
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
eendmo 2:0f91b789d90a 63 // set led PWM frequency
eendmo 2:0f91b789d90a 64 float frequency = 100.0f;
eendmo 2:0f91b789d90a 65 red_led.period(1.0f/frequency);
eendmo 2:0f91b789d90a 66
eencae 0:d5312060f649 67 // turn off 7-seg display
eendmo 2:0f91b789d90a 68 sevenSeg.write(0x00);
eencae 0:d5312060f649 69
eencae 0:d5312060f649 70 // initialise LCD
eencae 0:d5312060f649 71 lcd.init();
eencae 0:d5312060f649 72
eencae 0:d5312060f649 73 // PCB has external pull-down resistors so turn the internal ones off
eencae 0:d5312060f649 74 button_a.mode(PullNone);
eencae 0:d5312060f649 75 button_b.mode(PullNone);
eencae 0:d5312060f649 76 button_c.mode(PullNone);
eencae 0:d5312060f649 77 button_d.mode(PullNone);
eencae 0:d5312060f649 78 }
eencae 0:d5312060f649 79
eencae 0:d5312060f649 80 void print_menu()
eencae 0:d5312060f649 81 {
eencae 0:d5312060f649 82 lcd.clear();
eencae 0:d5312060f649 83 lcd.printString("Press button",0,0);
eencae 0:d5312060f649 84 lcd.printString("to select",0,1);
eencae 0:d5312060f649 85 lcd.printString("A: Mode A",0,2);
eencae 0:d5312060f649 86 lcd.printString("B: Mode B",0,3);
eencae 0:d5312060f649 87 lcd.refresh();
eencae 0:d5312060f649 88 }
eencae 0:d5312060f649 89
eencae 0:d5312060f649 90 void welcome()
eencae 0:d5312060f649 91 {
eencae 0:d5312060f649 92 lcd.clear();
eendmo 2:0f91b789d90a 93 lcd.printString(" UKESF",0,1);
eendmo 2:0f91b789d90a 94 lcd.printString(" Headstart",0,2);
eendmo 2:0f91b789d90a 95 lcd.printString(" Demo Board",0,3);
eendmo 2:0f91b789d90a 96 lcd.printString("YOUR NAME HERE",0,4);
eencae 0:d5312060f649 97 lcd.refresh();
eencae 0:d5312060f649 98 wait(5.0);
eencae 0:d5312060f649 99 }