Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@0:205c4d6ab7f4, 2013-02-04 (annotated)
- Committer:
- IanTheMBEDMaster
- Date:
- Mon Feb 04 14:48:28 2013 +0000
- Revision:
- 0:205c4d6ab7f4
hahahaa
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 1 | #include "mbed.h" |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 2 | #include <AnalogOut.h> |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 3 | //AnalogOut(p18); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 4 | DigitalOut myled(LED1); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 5 | Serial pc(USBTX, USBRX); // tx, rx |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 6 | |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 7 | //void Initialize(); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 8 | |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 9 | // prototypes |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 10 | char DisplayMenu(); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 11 | void SimpleIOTest(); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 12 | void AnalogOutTest(); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 13 | void AnalogInTest(); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 14 | void PwmOutTest(); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 15 | void TimerIntInit(); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 16 | void ExternalIntInit(); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 17 | void LinearOpticalArrayTest(); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 18 | void BluetoothTest(); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 19 | void TimerISR(); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 20 | |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 21 | int main() |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 22 | { |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 23 | char Key; |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 24 | //Initialize(); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 25 | while(1) |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 26 | { |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 27 | Key=DisplayMenu(); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 28 | switch(Key) |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 29 | { |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 30 | case ('1'): |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 31 | { |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 32 | SimpleIOTest(); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 33 | break; |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 34 | } |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 35 | case ('2'): |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 36 | { |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 37 | AnalogOutTest(); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 38 | break; |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 39 | } |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 40 | case ('3'): |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 41 | { |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 42 | AnalogInTest(); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 43 | break; |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 44 | } |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 45 | case ('4'): |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 46 | { |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 47 | PwmOutTest(); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 48 | break; |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 49 | } |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 50 | case ('5'): |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 51 | { |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 52 | TimerIntInit(); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 53 | break; |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 54 | } |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 55 | case ('6'): |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 56 | { |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 57 | ExternalIntInit(); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 58 | break; |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 59 | } |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 60 | case ('7'): |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 61 | { |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 62 | LinearOpticalArrayTest(); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 63 | break; |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 64 | } |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 65 | case ('8'): |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 66 | { |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 67 | BluetoothTest(); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 68 | break; |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 69 | } |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 70 | default: |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 71 | { |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 72 | printf("\r\nInvalid keypress entry.\r\n"); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 73 | break; |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 74 | } |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 75 | }// close switch |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 76 | }// end infinite loop |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 77 | |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 78 | //return (0); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 79 | }// close main |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 80 | |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 81 | char DisplayMenu() |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 82 | { |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 83 | // test code for a display function |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 84 | unsigned int ScanData[] = {}; |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 85 | |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 86 | unsigned short |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 87 | |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 88 | int i = 0; |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 89 | for(i = 0; i < 128; i++) |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 90 | { |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 91 | if |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 92 | } |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 93 | } |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 94 | |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 95 | void SimpleIOTest() |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 96 | { |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 97 | DigitalOut StatusLED(p25); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 98 | DigitalIn LimitSW(p26); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 99 | |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 100 | bool z; |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 101 | char x; |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 102 | |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 103 | do |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 104 | { |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 105 | z = LimitSW; |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 106 | StatusLED = z; |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 107 | pc.printf("\r\nDigital input = %x",z); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 108 | pc.printf("\r\nPress space to continue - any other key to quit"); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 109 | x = pc.getc(); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 110 | } |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 111 | while (x == 0x20); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 112 | } |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 113 | |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 114 | void AnalogIOTest() |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 115 | { |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 116 | AnalogOut AnalogOutPin(p18); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 117 | AnalogIn Ain19(p19); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 118 | |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 119 | unsigned short x, Aout; |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 120 | Aout = 0; |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 121 | |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 122 | do |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 123 | { |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 124 | AnalogOutPin.write_u16(Aout); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 125 | x = Ain19.read_u16(); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 126 | printf("\r\nAnalog output = %x, Analog input = %x", Aout, x); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 127 | Aout = Aout + 4096; |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 128 | } |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 129 | while(pc.getc() == ' '); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 130 | } |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 131 | |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 132 | void AnalogInTest() |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 133 | { |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 134 | AnalogIn Ain19(p19); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 135 | char inputChar = ' '; |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 136 | unsigned short analogIn; |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 137 | float percent; |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 138 | |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 139 | pc.printf("\r\nPress space to continue - any other key to quit"); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 140 | |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 141 | while(inputChar == ' ') |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 142 | { |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 143 | // sample analog input |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 144 | analogIn = Ain19.read_u16(); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 145 | |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 146 | // convert to percentage |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 147 | percent = (float) analogIn/65535; |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 148 | |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 149 | pc.printf("\r\nAnalog input = %u (%f %%)", analogIn, percent); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 150 | |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 151 | inputChar = pc.getc(); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 152 | } |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 153 | } |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 154 | |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 155 | void AnalogOutTest() |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 156 | { |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 157 | AnalogOut AnalogOutPin(p18); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 158 | |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 159 | char firstNum; |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 160 | char secondNum; |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 161 | unsigned short analogOut; |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 162 | |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 163 | pc.printf("\r\nEnter the voltage percentage, press q to quit"); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 164 | while(firstNum != 'q' || firstNum != 'q') |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 165 | { |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 166 | pc.printf("\r\nEnter Voltage Percentage:"); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 167 | firstNum = pc.getc(); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 168 | secondNum = pc.getc(); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 169 | |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 170 | // convert to integer and set the analog out |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 171 | analogOut = (firstNum - '0')*10 + (secondNum - '0'); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 172 | |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 173 | AnalogOutPin.write_u16(analogOut); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 174 | } |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 175 | } |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 176 | |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 177 | void PwmOutTest() |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 178 | { |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 179 | PwmOut PwmP21(p21); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 180 | |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 181 | float y, T; |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 182 | T=0.001; |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 183 | |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 184 | PwmP21.period(T); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 185 | pc.printf("\n\rEnter on-time for PwmP21 followed by enter: "); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 186 | pc.scanf("%f",&y); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 187 | pc.printf("\n\n\rPwm period = %f, Pwm on-time = %f", T, y); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 188 | PwmP21.pulsewidth(y); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 189 | } |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 190 | |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 191 | void TimerIntInit() |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 192 | { |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 193 | Ticker PeriodicInt; |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 194 | char x; |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 195 | |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 196 | pc.printf("\r\nPeiodic interrupts toggles LED2"); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 197 | //PeriodicInt.attach(&TimerISR, 0.0625); // ISR Address, int interval |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 198 | |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 199 | do x=pc.getc(); while (x!='q'); // Wait for interrupts |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 200 | |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 201 | } |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 202 | |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 203 | void TimerISR() |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 204 | { |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 205 | //led2=1; |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 206 | //led2 = !led2; |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 207 | } |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 208 | |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 209 | void ExternalIntInit() |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 210 | { |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 211 | } |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 212 | |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 213 | void LinearOpticalArrayTest() |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 214 | { |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 215 | } |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 216 | |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 217 | void BluetoothTest() |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 218 | { |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 219 | Serial pc(USBTX, USBRX); // tx, rx |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 220 | Serial BluetoothSerial(p28, p27); // tx, rx |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 221 | |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 222 | char x; |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 223 | BluetoothSerial.baud(9600); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 224 | do |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 225 | { |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 226 | if (pc.readable()) |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 227 | { |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 228 | x=pc.getc(); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 229 | // Receive keyboard entry and send to Bluetooth channel |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 230 | BluetoothSerial.putc(x); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 231 | pc.putc(x); //Echo keyboard entry |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 232 | } |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 233 | } |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 234 | while (x!='q'); |
| IanTheMBEDMaster | 0:205c4d6ab7f4 | 235 | } |