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.
Dependencies: mbed
main.cpp@5:6f51a96a5094, 2016-01-28 (annotated)
- Committer:
- A_Sterner
- Date:
- Thu Jan 28 17:45:01 2016 +0000
- Revision:
- 5:6f51a96a5094
- Parent:
- 4:535e67099871
- Child:
- 6:2db8f8299773
Thursday January 28th Changes
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
JordanWisdom | 0:93a3065ac203 | 1 | #include "mbed.h" |
JordanWisdom | 1:127190419363 | 2 | //#include "InterruptIn.h" |
JordanWisdom | 1:127190419363 | 3 | //#include "Serial.h" |
JordanWisdom | 0:93a3065ac203 | 4 | |
JordanWisdom | 2:5f6ac2ea5870 | 5 | //DECLARATIONS |
JordanWisdom | 1:127190419363 | 6 | Serial pc(USBTX, USBRX); |
A_Sterner | 5:6f51a96a5094 | 7 | |
JordanWisdom | 1:127190419363 | 8 | //Digital Inputs |
A_Sterner | 5:6f51a96a5094 | 9 | DigitalIn Sw1(p24); |
A_Sterner | 5:6f51a96a5094 | 10 | |
JordanWisdom | 1:127190419363 | 11 | //Digital Outputs |
A_Sterner | 5:6f51a96a5094 | 12 | DigitalOut DOut1(p25); |
A_Sterner | 5:6f51a96a5094 | 13 | |
JordanWisdom | 2:5f6ac2ea5870 | 14 | //Analog Inputs |
A_Sterner | 5:6f51a96a5094 | 15 | AnalogIn AnaInput1(p15); |
A_Sterner | 5:6f51a96a5094 | 16 | AnalogIn AnaInput2(p16); |
A_Sterner | 5:6f51a96a5094 | 17 | |
JordanWisdom | 2:5f6ac2ea5870 | 18 | //Analog Outputs |
A_Sterner | 5:6f51a96a5094 | 19 | AnalogOut AOutput(p18); |
A_Sterner | 5:6f51a96a5094 | 20 | |
JordanWisdom | 4:535e67099871 | 21 | //PWM Outs |
A_Sterner | 5:6f51a96a5094 | 22 | PwmOut PWM(p21); |
JordanWisdom | 1:127190419363 | 23 | |
JordanWisdom | 0:93a3065ac203 | 24 | char DisplayMenu(void){ |
JordanWisdom | 0:93a3065ac203 | 25 | char Key; |
A_Sterner | 5:6f51a96a5094 | 26 | printf("\n\r-----Robotics Test Program -----\n"); |
A_Sterner | 5:6f51a96a5094 | 27 | printf("\n\r Type number followed by enter:"); |
A_Sterner | 5:6f51a96a5094 | 28 | printf("\n\r 1: Read digital value at XX and write to YY."); |
A_Sterner | 5:6f51a96a5094 | 29 | printf("\n\r 2: Write analog output at XX."); |
A_Sterner | 5:6f51a96a5094 | 30 | printf("\n\r 3: Read analog input at YY and ZZ."); |
A_Sterner | 5:6f51a96a5094 | 31 | printf("\n\r 4: PWM output at XX."); |
A_Sterner | 5:6f51a96a5094 | 32 | printf("\n\r 5: Timer interrupt generation."); |
A_Sterner | 5:6f51a96a5094 | 33 | printf("\n\r 6: External interrupt generation."); |
A_Sterner | 5:6f51a96a5094 | 34 | printf("\n\r 7: Linear optical array test."); |
A_Sterner | 5:6f51a96a5094 | 35 | printf("\n\r 8: Bluetooth communication."); |
A_Sterner | 5:6f51a96a5094 | 36 | printf("\n\r Keypress = "); |
A_Sterner | 5:6f51a96a5094 | 37 | Key=0x7F & pc.getc(); |
A_Sterner | 5:6f51a96a5094 | 38 | printf("\n\r-------------------------------------"); |
A_Sterner | 5:6f51a96a5094 | 39 | printf("\r\n Pressed Key = %C",Key); |
A_Sterner | 5:6f51a96a5094 | 40 | printf("\n\r-------------------------------------"); |
A_Sterner | 5:6f51a96a5094 | 41 | return(Key); |
JordanWisdom | 0:93a3065ac203 | 42 | } |
JordanWisdom | 1:127190419363 | 43 | |
A_Sterner | 5:6f51a96a5094 | 44 | int SimpleIO(){ |
A_Sterner | 5:6f51a96a5094 | 45 | bool z; |
A_Sterner | 5:6f51a96a5094 | 46 | z = Sw1; |
A_Sterner | 5:6f51a96a5094 | 47 | DOut1 = z; |
A_Sterner | 5:6f51a96a5094 | 48 | printf("\r\n Logic Value = %x",z); |
A_Sterner | 5:6f51a96a5094 | 49 | DOut1 = Sw1; |
JordanWisdom | 1:127190419363 | 50 | } |
JordanWisdom | 1:127190419363 | 51 | |
A_Sterner | 5:6f51a96a5094 | 52 | int AOut(){ |
A_Sterner | 5:6f51a96a5094 | 53 | char Key; |
A_Sterner | 5:6f51a96a5094 | 54 | printf("\n\rEnter a value"); |
A_Sterner | 5:6f51a96a5094 | 55 | printf("\n\r Keypress = "); |
A_Sterner | 5:6f51a96a5094 | 56 | Key=0x7F & pc.getc(); |
A_Sterner | 5:6f51a96a5094 | 57 | printf("\n\r-------------------------------------"); |
A_Sterner | 5:6f51a96a5094 | 58 | printf("\r\n Pressed Key = %C",Key); |
A_Sterner | 5:6f51a96a5094 | 59 | printf("\n\r-------------------------------------"); |
A_Sterner | 5:6f51a96a5094 | 60 | AOutput.write(Key); |
A_Sterner | 5:6f51a96a5094 | 61 | } |
JordanWisdom | 1:127190419363 | 62 | |
A_Sterner | 5:6f51a96a5094 | 63 | int fAnalogIn(){ |
A_Sterner | 5:6f51a96a5094 | 64 | AOutput.write(AnaInput1.read()); |
A_Sterner | 5:6f51a96a5094 | 65 | printf("\n\r Analog Output = %1.4f volts\n", AnaInput1.read() * 3.3f); |
A_Sterner | 5:6f51a96a5094 | 66 | printf("\n\r Analog Input = %1.4f volts\n", AnaInput2.read() * 3.3f); |
A_Sterner | 5:6f51a96a5094 | 67 | } |
JordanWisdom | 1:127190419363 | 68 | |
A_Sterner | 5:6f51a96a5094 | 69 | int PWMOut(){ |
A_Sterner | 5:6f51a96a5094 | 70 | |
A_Sterner | 5:6f51a96a5094 | 71 | //Specify Period First |
A_Sterner | 5:6f51a96a5094 | 72 | |
A_Sterner | 5:6f51a96a5094 | 73 | float T; |
A_Sterner | 5:6f51a96a5094 | 74 | float PW; |
A_Sterner | 5:6f51a96a5094 | 75 | printf("\n\r\n\r-----Robotics PWM Options-----\n\n\r"); |
A_Sterner | 5:6f51a96a5094 | 76 | printf("Type the period in seconds:"); |
A_Sterner | 5:6f51a96a5094 | 77 | printf("\n\rKeypress = "); |
A_Sterner | 5:6f51a96a5094 | 78 | T =0x7F & pc.getc(); |
A_Sterner | 5:6f51a96a5094 | 79 | PWM.period(T); |
A_Sterner | 5:6f51a96a5094 | 80 | printf("\n\r Enter the pulse width in milliseconds."); |
A_Sterner | 5:6f51a96a5094 | 81 | PW=0x7F & pc.getc(); |
A_Sterner | 5:6f51a96a5094 | 82 | PWM.pulsewidth(PW); |
A_Sterner | 5:6f51a96a5094 | 83 | } |
JordanWisdom | 1:127190419363 | 84 | |
JordanWisdom | 1:127190419363 | 85 | int ExternalIntInit(){//initialize an external interrupt that causes an LED to toggle its state each |
JordanWisdom | 1:127190419363 | 86 | //time an external interrupt is detected. |
JordanWisdom | 1:127190419363 | 87 | } |
JordanWisdom | 1:127190419363 | 88 | |
JordanWisdom | 1:127190419363 | 89 | int TimerIntInit() |
JordanWisdom | 1:127190419363 | 90 | { |
JordanWisdom | 1:127190419363 | 91 | |
JordanWisdom | 1:127190419363 | 92 | |
JordanWisdom | 1:127190419363 | 93 | } |
JordanWisdom | 1:127190419363 | 94 | |
JordanWisdom | 1:127190419363 | 95 | int LinearOpticalArrayTest(){//repeatedly generates scans of the TSL1401 with a fixed delay between scans |
JordanWisdom | 1:127190419363 | 96 | int i; |
JordanWisdom | 1:127190419363 | 97 | do { |
JordanWisdom | 1:127190419363 | 98 | //scan(ScanData); // Dummy scan |
JordanWisdom | 1:127190419363 | 99 | //wait_us(IntegrationTime); |
JordanWisdom | 1:127190419363 | 100 | //scan(ScanData); |
JordanWisdom | 1:127190419363 | 101 | if (pc.readable()){ |
JordanWisdom | 1:127190419363 | 102 | char x=pc.getc(); |
JordanWisdom | 1:127190419363 | 103 | if (x=='q') break; |
JordanWisdom | 1:127190419363 | 104 | else if (x=='i') |
JordanWisdom | 1:127190419363 | 105 | { |
JordanWisdom | 1:127190419363 | 106 | |
JordanWisdom | 1:127190419363 | 107 | |
JordanWisdom | 1:127190419363 | 108 | } |
JordanWisdom | 1:127190419363 | 109 | else if(x=='l') |
JordanWisdom | 1:127190419363 | 110 | { |
JordanWisdom | 1:127190419363 | 111 | //Display pixel values at the terminal |
JordanWisdom | 1:127190419363 | 112 | } |
JordanWisdom | 1:127190419363 | 113 | for(i=0; i<128; i=i+1) pc.printf("\n\n\r%d"/*, ScanData[i]*/); |
JordanWisdom | 1:127190419363 | 114 | } |
JordanWisdom | 1:127190419363 | 115 | }while(1); |
JordanWisdom | 1:127190419363 | 116 | pc.printf("\n\n\rTerminating clocking sequence for linear optical array.\n\r"); |
JordanWisdom | 1:127190419363 | 117 | } |
JordanWisdom | 1:127190419363 | 118 | |
JordanWisdom | 1:127190419363 | 119 | int BlueToothTest(){// The objective is to create the hardware and software interface illustrated |
JordanWisdom | 1:127190419363 | 120 | //in the figure below. Serial channel, Comm B, and the serial loopback path through the MBED |
JordanWisdom | 1:127190419363 | 121 | //processor will be used to initialize and configure the Parani/Promi Bluetooth module. Once |
JordanWisdom | 1:127190419363 | 122 | //configured, the objective is to enter keystrokes at Terminal A and have them displayed at Terminal |
JordanWisdom | 1:127190419363 | 123 | //B; and to have keystrokes entered at Terminal A displayed at Terminal B. |
JordanWisdom | 1:127190419363 | 124 | |
JordanWisdom | 1:127190419363 | 125 | |
JordanWisdom | 1:127190419363 | 126 | } |
JordanWisdom | 1:127190419363 | 127 | |
JordanWisdom | 1:127190419363 | 128 | void scan(short ScanData[]) { |
JordanWisdom | 1:127190419363 | 129 | int j; |
JordanWisdom | 1:127190419363 | 130 | //LoaSI=1; |
JordanWisdom | 1:127190419363 | 131 | //LoaCLK=1; |
JordanWisdom | 1:127190419363 | 132 | //LoaSI=0; |
JordanWisdom | 1:127190419363 | 133 | for(j=0;j<128;j=j+1){ |
JordanWisdom | 1:127190419363 | 134 | //ScanData[j]=LoaAnalogIn.read_u16(); |
JordanWisdom | 1:127190419363 | 135 | //LoaCLK=0; //delay_us(1); |
JordanWisdom | 1:127190419363 | 136 | //LoaCLK=1; |
JordanWisdom | 1:127190419363 | 137 | } |
JordanWisdom | 1:127190419363 | 138 | //LoaCLK=0; |
JordanWisdom | 1:127190419363 | 139 | } |
JordanWisdom | 1:127190419363 | 140 | |
A_Sterner | 5:6f51a96a5094 | 141 | void main(void) { |
JordanWisdom | 1:127190419363 | 142 | char Key; |
JordanWisdom | 1:127190419363 | 143 | //Initialize(); |
A_Sterner | 5:6f51a96a5094 | 144 | while(1) { |
JordanWisdom | 1:127190419363 | 145 | Key=DisplayMenu(); |
JordanWisdom | 1:127190419363 | 146 | if(Key=='1') SimpleIO(); //LAB 2.2 |
A_Sterner | 5:6f51a96a5094 | 147 | else if(Key=='2') AOut(); //LAB 2.3 |
JordanWisdom | 4:535e67099871 | 148 | else if(Key=='3') fAnalogIn(); //LAB 2.4 |
A_Sterner | 5:6f51a96a5094 | 149 | else if(Key=='4') PWMOut(); //LAB 2.5 |
JordanWisdom | 1:127190419363 | 150 | else if(Key=='5') TimerIntInit(); //LAB 2.6 |
JordanWisdom | 1:127190419363 | 151 | else if(Key=='6') ExternalIntInit(); //LAB 2.7 |
JordanWisdom | 1:127190419363 | 152 | else if(Key=='7') LinearOpticalArrayTest(); //LAB 2.8 |
JordanWisdom | 1:127190419363 | 153 | else if(Key=='8') BlueToothTest(); //LAB 2.9 |
JordanWisdom | 1:127190419363 | 154 | else printf("\r\nInvalid keypress entry.\r\n"); |
JordanWisdom | 1:127190419363 | 155 | } |
A_Sterner | 5:6f51a96a5094 | 156 | } |