Code for testing the ELEC1620 Application Board.
Dependencies: N5110 ShiftReg Tone mbed
Main/main.cpp@0:fabfe08aee13, 2017-11-01 (annotated)
- Committer:
- eencae
- Date:
- Wed Nov 01 09:44:56 2017 +0000
- Revision:
- 0:fabfe08aee13
- Child:
- 1:9359b8534c79
Working version of quick test. Tests all peripherals on the PCB.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
eencae | 0:fabfe08aee13 | 1 | #include "main.h" |
eencae | 0:fabfe08aee13 | 2 | |
eencae | 0:fabfe08aee13 | 3 | // objects defined here with pin numbers |
eencae | 0:fabfe08aee13 | 4 | DigitalIn button_a(p29); |
eencae | 0:fabfe08aee13 | 5 | DigitalIn button_b(p28); |
eencae | 0:fabfe08aee13 | 6 | DigitalIn button_c(p27); |
eencae | 0:fabfe08aee13 | 7 | DigitalIn button_d(p26); |
eencae | 0:fabfe08aee13 | 8 | |
eencae | 0:fabfe08aee13 | 9 | AnalogIn ldr(p15); |
eencae | 0:fabfe08aee13 | 10 | BusOut leds(LED4,LED3,LED2,LED1); |
eencae | 0:fabfe08aee13 | 11 | Tone speaker(p18); |
eencae | 0:fabfe08aee13 | 12 | |
eencae | 0:fabfe08aee13 | 13 | BusOut rgb_led(p24,p23,p22); |
eencae | 0:fabfe08aee13 | 14 | |
eencae | 0:fabfe08aee13 | 15 | AnalogIn tmp36(p16); |
eencae | 0:fabfe08aee13 | 16 | |
eencae | 0:fabfe08aee13 | 17 | AnalogIn pot_0(p20); |
eencae | 0:fabfe08aee13 | 18 | AnalogIn pot_1(p19); |
eencae | 0:fabfe08aee13 | 19 | AnalogIn pot_2(p17); |
eencae | 0:fabfe08aee13 | 20 | |
eencae | 0:fabfe08aee13 | 21 | N5110 lcd(p8,p9,p10,p11,p13,p21); |
eencae | 0:fabfe08aee13 | 22 | ShiftReg shift; |
eencae | 0:fabfe08aee13 | 23 | |
eencae | 0:fabfe08aee13 | 24 | int seven_seg_array[] = { |
eencae | 0:fabfe08aee13 | 25 | 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x67 |
eencae | 0:fabfe08aee13 | 26 | }; |
eencae | 0:fabfe08aee13 | 27 | // array that stores the colors R, G and B |
eencae | 0:fabfe08aee13 | 28 | int rgd_led_array[] = { |
eencae | 0:fabfe08aee13 | 29 | 0b011,0b101,0b110 |
eencae | 0:fabfe08aee13 | 30 | }; |
eencae | 0:fabfe08aee13 | 31 | |
eencae | 0:fabfe08aee13 | 32 | int led_val = 0; |
eencae | 0:fabfe08aee13 | 33 | |
eencae | 0:fabfe08aee13 | 34 | void init(); |
eencae | 0:fabfe08aee13 | 35 | void test_7seg(); |
eencae | 0:fabfe08aee13 | 36 | void test_buttons(); |
eencae | 0:fabfe08aee13 | 37 | void test_leds(); |
eencae | 0:fabfe08aee13 | 38 | void test_ldr(); |
eencae | 0:fabfe08aee13 | 39 | void test_tmp(); |
eencae | 0:fabfe08aee13 | 40 | void test_pots(); |
eencae | 0:fabfe08aee13 | 41 | |
eencae | 0:fabfe08aee13 | 42 | int main() |
eencae | 0:fabfe08aee13 | 43 | { |
eencae | 0:fabfe08aee13 | 44 | // initialise peripherals |
eencae | 0:fabfe08aee13 | 45 | init(); |
eencae | 0:fabfe08aee13 | 46 | |
eencae | 0:fabfe08aee13 | 47 | // test the constant outputs |
eencae | 0:fabfe08aee13 | 48 | test_7seg(); |
eencae | 0:fabfe08aee13 | 49 | leds = 0x0F; // on-board LEDs |
eencae | 0:fabfe08aee13 | 50 | speaker.play(1000.0,2.0); |
eencae | 0:fabfe08aee13 | 51 | |
eencae | 0:fabfe08aee13 | 52 | // loop forever |
eencae | 0:fabfe08aee13 | 53 | while(1) { |
eencae | 0:fabfe08aee13 | 54 | |
eencae | 0:fabfe08aee13 | 55 | // clear LCD at beginning of each 'frame' |
eencae | 0:fabfe08aee13 | 56 | lcd.clear(); |
eencae | 0:fabfe08aee13 | 57 | lcd.printString("Test",0,0); |
eencae | 0:fabfe08aee13 | 58 | |
eencae | 0:fabfe08aee13 | 59 | // test inputs and outputs that can change |
eencae | 0:fabfe08aee13 | 60 | |
eencae | 0:fabfe08aee13 | 61 | test_buttons(); |
eencae | 0:fabfe08aee13 | 62 | test_leds(); |
eencae | 0:fabfe08aee13 | 63 | test_ldr(); |
eencae | 0:fabfe08aee13 | 64 | test_tmp(); |
eencae | 0:fabfe08aee13 | 65 | test_pots(); |
eencae | 0:fabfe08aee13 | 66 | |
eencae | 0:fabfe08aee13 | 67 | // print everything on the screen |
eencae | 0:fabfe08aee13 | 68 | lcd.refresh(); |
eencae | 0:fabfe08aee13 | 69 | // small delay before next frame is drawn |
eencae | 0:fabfe08aee13 | 70 | wait(1.0/4); |
eencae | 0:fabfe08aee13 | 71 | } |
eencae | 0:fabfe08aee13 | 72 | |
eencae | 0:fabfe08aee13 | 73 | } |
eencae | 0:fabfe08aee13 | 74 | |
eencae | 0:fabfe08aee13 | 75 | void init() |
eencae | 0:fabfe08aee13 | 76 | { |
eencae | 0:fabfe08aee13 | 77 | shift.write(0x00); |
eencae | 0:fabfe08aee13 | 78 | |
eencae | 0:fabfe08aee13 | 79 | lcd.init(); |
eencae | 0:fabfe08aee13 | 80 | |
eencae | 0:fabfe08aee13 | 81 | speaker.init(); |
eencae | 0:fabfe08aee13 | 82 | |
eencae | 0:fabfe08aee13 | 83 | // PCB has external pull-down resistors so turn the internal ones off |
eencae | 0:fabfe08aee13 | 84 | // (default for DigitalIn) |
eencae | 0:fabfe08aee13 | 85 | button_a.mode(PullNone); |
eencae | 0:fabfe08aee13 | 86 | button_b.mode(PullNone); |
eencae | 0:fabfe08aee13 | 87 | button_c.mode(PullNone); |
eencae | 0:fabfe08aee13 | 88 | button_d.mode(PullNone); |
eencae | 0:fabfe08aee13 | 89 | } |
eencae | 0:fabfe08aee13 | 90 | |
eencae | 0:fabfe08aee13 | 91 | void test_7seg() |
eencae | 0:fabfe08aee13 | 92 | { |
eencae | 0:fabfe08aee13 | 93 | shift.write(0xFF); |
eencae | 0:fabfe08aee13 | 94 | } |
eencae | 0:fabfe08aee13 | 95 | |
eencae | 0:fabfe08aee13 | 96 | void test_buttons() |
eencae | 0:fabfe08aee13 | 97 | { |
eencae | 0:fabfe08aee13 | 98 | // check each button, and print character on screen |
eencae | 0:fabfe08aee13 | 99 | if ( button_a.read() == 1) { |
eencae | 0:fabfe08aee13 | 100 | lcd.printChar('A',0,1); |
eencae | 0:fabfe08aee13 | 101 | } |
eencae | 0:fabfe08aee13 | 102 | if ( button_b.read() == 1) { |
eencae | 0:fabfe08aee13 | 103 | lcd.printChar('B',8,1); |
eencae | 0:fabfe08aee13 | 104 | } |
eencae | 0:fabfe08aee13 | 105 | if ( button_c.read() == 1) { |
eencae | 0:fabfe08aee13 | 106 | lcd.printChar('C',16,1); |
eencae | 0:fabfe08aee13 | 107 | } |
eencae | 0:fabfe08aee13 | 108 | if ( button_d.read() == 1) { |
eencae | 0:fabfe08aee13 | 109 | lcd.printChar('D',24,1); |
eencae | 0:fabfe08aee13 | 110 | } |
eencae | 0:fabfe08aee13 | 111 | } |
eencae | 0:fabfe08aee13 | 112 | |
eencae | 0:fabfe08aee13 | 113 | void test_leds() |
eencae | 0:fabfe08aee13 | 114 | { |
eencae | 0:fabfe08aee13 | 115 | |
eencae | 0:fabfe08aee13 | 116 | // set RGB to current val |
eencae | 0:fabfe08aee13 | 117 | rgb_led = rgd_led_array[led_val]; |
eencae | 0:fabfe08aee13 | 118 | |
eencae | 0:fabfe08aee13 | 119 | // increment the val (i.e. change colour combination) |
eencae | 0:fabfe08aee13 | 120 | led_val++; |
eencae | 0:fabfe08aee13 | 121 | |
eencae | 0:fabfe08aee13 | 122 | // once we've got to end of array, go back to beginning |
eencae | 0:fabfe08aee13 | 123 | if (led_val == 3) { |
eencae | 0:fabfe08aee13 | 124 | led_val = 0; |
eencae | 0:fabfe08aee13 | 125 | } |
eencae | 0:fabfe08aee13 | 126 | |
eencae | 0:fabfe08aee13 | 127 | } |
eencae | 0:fabfe08aee13 | 128 | |
eencae | 0:fabfe08aee13 | 129 | void test_ldr() |
eencae | 0:fabfe08aee13 | 130 | { |
eencae | 0:fabfe08aee13 | 131 | float value = ldr.read(); // read in the LDR value in range 0.0 to 1.0 |
eencae | 0:fabfe08aee13 | 132 | char buffer[14]; |
eencae | 0:fabfe08aee13 | 133 | |
eencae | 0:fabfe08aee13 | 134 | sprintf(buffer,"LDR=%.2f",value); // print formatted data to buffer |
eencae | 0:fabfe08aee13 | 135 | lcd.printString(buffer,0,2); // display on screen |
eencae | 0:fabfe08aee13 | 136 | } |
eencae | 0:fabfe08aee13 | 137 | |
eencae | 0:fabfe08aee13 | 138 | void test_tmp() |
eencae | 0:fabfe08aee13 | 139 | { |
eencae | 0:fabfe08aee13 | 140 | float value = 3.3*tmp36.read(); // read in the TMP36 value in range 0.0 to 1.0 |
eencae | 0:fabfe08aee13 | 141 | float temperature = 100.0f*value - 50.0f; |
eencae | 0:fabfe08aee13 | 142 | char buffer[14]; |
eencae | 0:fabfe08aee13 | 143 | |
eencae | 0:fabfe08aee13 | 144 | sprintf(buffer,"T=%.4f C",temperature); // print formatted data to buffer |
eencae | 0:fabfe08aee13 | 145 | lcd.printString(buffer,0,3); // display on screen |
eencae | 0:fabfe08aee13 | 146 | } |
eencae | 0:fabfe08aee13 | 147 | |
eencae | 0:fabfe08aee13 | 148 | void test_pots() { |
eencae | 0:fabfe08aee13 | 149 | |
eencae | 0:fabfe08aee13 | 150 | char buffer[14]; |
eencae | 0:fabfe08aee13 | 151 | |
eencae | 0:fabfe08aee13 | 152 | float val = pot_0.read(); |
eencae | 0:fabfe08aee13 | 153 | sprintf(buffer,"%.2f",val); // print formatted data to buffer |
eencae | 0:fabfe08aee13 | 154 | lcd.printString(buffer,0,5); // display on screen |
eencae | 0:fabfe08aee13 | 155 | |
eencae | 0:fabfe08aee13 | 156 | val = pot_1.read(); |
eencae | 0:fabfe08aee13 | 157 | sprintf(buffer,"%.2f",val); // print formatted data to buffer |
eencae | 0:fabfe08aee13 | 158 | lcd.printString(buffer,28,5); // display on screen |
eencae | 0:fabfe08aee13 | 159 | |
eencae | 0:fabfe08aee13 | 160 | val = pot_2.read(); |
eencae | 0:fabfe08aee13 | 161 | sprintf(buffer,"%.2f",val); // print formatted data to buffer |
eencae | 0:fabfe08aee13 | 162 | lcd.printString(buffer,56,5); // display on screen |
eencae | 0:fabfe08aee13 | 163 | } |