Code for testing the ELEC1620 Application Board.

Dependencies:   N5110 ShiftReg Tone mbed

Committer:
eencae
Date:
Wed Nov 01 20:54:21 2017 +0000
Revision:
1:9359b8534c79
Parent:
0:fabfe08aee13
Updated N5110 library to be able to test LCD contrast using potentiometer.

Who changed what in which revision?

UserRevisionLine numberNew 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 1:9359b8534c79 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 1:9359b8534c79 132 char buffer[14];
eencae 1:9359b8534c79 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 1:9359b8534c79 142 char buffer[14];
eencae 1:9359b8534c79 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 1:9359b8534c79 148 void test_pots()
eencae 1:9359b8534c79 149 {
eencae 1:9359b8534c79 150
eencae 1:9359b8534c79 151 char buffer[14];
eencae 0:fabfe08aee13 152
eencae 0:fabfe08aee13 153 float val = pot_0.read();
eencae 0:fabfe08aee13 154 sprintf(buffer,"%.2f",val); // print formatted data to buffer
eencae 0:fabfe08aee13 155 lcd.printString(buffer,0,5); // display on screen
eencae 1:9359b8534c79 156 lcd.setContrast(val); // tune LCD contrast
eencae 0:fabfe08aee13 157
eencae 0:fabfe08aee13 158 val = pot_1.read();
eencae 0:fabfe08aee13 159 sprintf(buffer,"%.2f",val); // print formatted data to buffer
eencae 0:fabfe08aee13 160 lcd.printString(buffer,28,5); // display on screen
eencae 1:9359b8534c79 161
eencae 0:fabfe08aee13 162 val = pot_2.read();
eencae 0:fabfe08aee13 163 sprintf(buffer,"%.2f",val); // print formatted data to buffer
eencae 0:fabfe08aee13 164 lcd.printString(buffer,56,5); // display on screen
eencae 0:fabfe08aee13 165 }