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@7:3ad02c0c93a9, 2016-01-28 (annotated)
- Committer:
- JordanWisdom
- Date:
- Thu Jan 28 21:56:41 2016 +0000
- Revision:
- 7:3ad02c0c93a9
- Parent:
- 6:2db8f8299773
- Child:
- 8:31dfba068a15
1. Now compiles without warnings.; 2. PWMout Updated to use mbed's string-to-int functionality; 3. Must be tested on Friday
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 | 6:2db8f8299773 | 36 | printf("\n\r Keypress = "); |
A_Sterner | 5:6f51a96a5094 | 37 | Key=0x7F & pc.getc(); |
A_Sterner | 6:2db8f8299773 | 38 | wait_ms(100); |
A_Sterner | 5:6f51a96a5094 | 39 | printf("\n\r-------------------------------------"); |
JordanWisdom | 7:3ad02c0c93a9 | 40 | printf("\r\n Pressed Key = %c",Key); |
A_Sterner | 5:6f51a96a5094 | 41 | printf("\n\r-------------------------------------"); |
A_Sterner | 5:6f51a96a5094 | 42 | return(Key); |
JordanWisdom | 0:93a3065ac203 | 43 | } |
JordanWisdom | 1:127190419363 | 44 | |
A_Sterner | 5:6f51a96a5094 | 45 | int SimpleIO(){ |
A_Sterner | 5:6f51a96a5094 | 46 | bool z; |
A_Sterner | 5:6f51a96a5094 | 47 | z = Sw1; |
A_Sterner | 5:6f51a96a5094 | 48 | DOut1 = z; |
A_Sterner | 5:6f51a96a5094 | 49 | printf("\r\n Logic Value = %x",z); |
A_Sterner | 5:6f51a96a5094 | 50 | DOut1 = Sw1; |
JordanWisdom | 7:3ad02c0c93a9 | 51 | return 0; |
JordanWisdom | 1:127190419363 | 52 | } |
JordanWisdom | 1:127190419363 | 53 | |
A_Sterner | 5:6f51a96a5094 | 54 | int AOut(){ |
A_Sterner | 5:6f51a96a5094 | 55 | char Key; |
A_Sterner | 5:6f51a96a5094 | 56 | printf("\n\rEnter a value"); |
A_Sterner | 5:6f51a96a5094 | 57 | printf("\n\r Keypress = "); |
A_Sterner | 5:6f51a96a5094 | 58 | Key=0x7F & pc.getc(); |
A_Sterner | 5:6f51a96a5094 | 59 | printf("\n\r-------------------------------------"); |
JordanWisdom | 7:3ad02c0c93a9 | 60 | printf("\r\n Pressed Key = %c",Key); |
A_Sterner | 5:6f51a96a5094 | 61 | printf("\n\r-------------------------------------"); |
A_Sterner | 5:6f51a96a5094 | 62 | AOutput.write(Key); |
JordanWisdom | 7:3ad02c0c93a9 | 63 | return 0; |
A_Sterner | 5:6f51a96a5094 | 64 | } |
JordanWisdom | 1:127190419363 | 65 | |
A_Sterner | 5:6f51a96a5094 | 66 | int fAnalogIn(){ |
A_Sterner | 5:6f51a96a5094 | 67 | AOutput.write(AnaInput1.read()); |
A_Sterner | 5:6f51a96a5094 | 68 | printf("\n\r Analog Output = %1.4f volts\n", AnaInput1.read() * 3.3f); |
A_Sterner | 5:6f51a96a5094 | 69 | printf("\n\r Analog Input = %1.4f volts\n", AnaInput2.read() * 3.3f); |
JordanWisdom | 7:3ad02c0c93a9 | 70 | return 0; |
A_Sterner | 5:6f51a96a5094 | 71 | } |
JordanWisdom | 1:127190419363 | 72 | |
A_Sterner | 5:6f51a96a5094 | 73 | int PWMOut(){ |
A_Sterner | 5:6f51a96a5094 | 74 | |
A_Sterner | 5:6f51a96a5094 | 75 | //Specify Period First |
JordanWisdom | 7:3ad02c0c93a9 | 76 | char T[4] = "500"; |
JordanWisdom | 7:3ad02c0c93a9 | 77 | char PW[4] = "250"; |
A_Sterner | 6:2db8f8299773 | 78 | printf("\n\r\n\r-----Robotics PWM Options-----"); |
JordanWisdom | 7:3ad02c0c93a9 | 79 | printf("\n\rEnter a Period in milliSeconds (max 999):"); |
JordanWisdom | 7:3ad02c0c93a9 | 80 | pc.gets(T,4); |
JordanWisdom | 7:3ad02c0c93a9 | 81 | long int P = strtol(PW,NULL,10); |
JordanWisdom | 7:3ad02c0c93a9 | 82 | PWM.period_ms(P); |
JordanWisdom | 7:3ad02c0c93a9 | 83 | printf("\n\rEnter a Pulse Width in milliSeconds (max 999):"); |
JordanWisdom | 7:3ad02c0c93a9 | 84 | pc.scanf(PW,4); |
JordanWisdom | 7:3ad02c0c93a9 | 85 | long int W = strtol(PW,NULL,10); |
JordanWisdom | 7:3ad02c0c93a9 | 86 | PWM.pulsewidth_ms(W); |
JordanWisdom | 7:3ad02c0c93a9 | 87 | printf("\n\rPeriod in Seconds: %i", P); |
JordanWisdom | 7:3ad02c0c93a9 | 88 | printf("\n\rPulse Width in Seconds: %i", W); |
A_Sterner | 6:2db8f8299773 | 89 | |
A_Sterner | 6:2db8f8299773 | 90 | |
JordanWisdom | 7:3ad02c0c93a9 | 91 | return 0; |
A_Sterner | 5:6f51a96a5094 | 92 | } |
JordanWisdom | 1:127190419363 | 93 | |
JordanWisdom | 1:127190419363 | 94 | int ExternalIntInit(){//initialize an external interrupt that causes an LED to toggle its state each |
JordanWisdom | 1:127190419363 | 95 | //time an external interrupt is detected. |
JordanWisdom | 7:3ad02c0c93a9 | 96 | return 0; |
JordanWisdom | 1:127190419363 | 97 | } |
JordanWisdom | 1:127190419363 | 98 | |
JordanWisdom | 1:127190419363 | 99 | int TimerIntInit() |
JordanWisdom | 1:127190419363 | 100 | { |
JordanWisdom | 1:127190419363 | 101 | |
JordanWisdom | 7:3ad02c0c93a9 | 102 | return 0; |
JordanWisdom | 1:127190419363 | 103 | } |
JordanWisdom | 1:127190419363 | 104 | |
JordanWisdom | 1:127190419363 | 105 | int LinearOpticalArrayTest(){//repeatedly generates scans of the TSL1401 with a fixed delay between scans |
JordanWisdom | 1:127190419363 | 106 | int i; |
JordanWisdom | 1:127190419363 | 107 | do { |
JordanWisdom | 1:127190419363 | 108 | //scan(ScanData); // Dummy scan |
JordanWisdom | 1:127190419363 | 109 | //wait_us(IntegrationTime); |
JordanWisdom | 1:127190419363 | 110 | //scan(ScanData); |
JordanWisdom | 1:127190419363 | 111 | if (pc.readable()){ |
JordanWisdom | 1:127190419363 | 112 | char x=pc.getc(); |
JordanWisdom | 1:127190419363 | 113 | if (x=='q') break; |
JordanWisdom | 1:127190419363 | 114 | else if (x=='i') |
JordanWisdom | 1:127190419363 | 115 | { |
JordanWisdom | 1:127190419363 | 116 | |
JordanWisdom | 1:127190419363 | 117 | |
JordanWisdom | 1:127190419363 | 118 | } |
JordanWisdom | 1:127190419363 | 119 | else if(x=='l') |
JordanWisdom | 1:127190419363 | 120 | { |
JordanWisdom | 1:127190419363 | 121 | //Display pixel values at the terminal |
JordanWisdom | 1:127190419363 | 122 | } |
JordanWisdom | 1:127190419363 | 123 | for(i=0; i<128; i=i+1) pc.printf("\n\n\r%d"/*, ScanData[i]*/); |
JordanWisdom | 1:127190419363 | 124 | } |
JordanWisdom | 1:127190419363 | 125 | }while(1); |
JordanWisdom | 1:127190419363 | 126 | pc.printf("\n\n\rTerminating clocking sequence for linear optical array.\n\r"); |
JordanWisdom | 7:3ad02c0c93a9 | 127 | return 0; |
JordanWisdom | 1:127190419363 | 128 | } |
JordanWisdom | 1:127190419363 | 129 | |
JordanWisdom | 1:127190419363 | 130 | int BlueToothTest(){// The objective is to create the hardware and software interface illustrated |
JordanWisdom | 1:127190419363 | 131 | //in the figure below. Serial channel, Comm B, and the serial loopback path through the MBED |
JordanWisdom | 1:127190419363 | 132 | //processor will be used to initialize and configure the Parani/Promi Bluetooth module. Once |
JordanWisdom | 1:127190419363 | 133 | //configured, the objective is to enter keystrokes at Terminal A and have them displayed at Terminal |
JordanWisdom | 1:127190419363 | 134 | //B; and to have keystrokes entered at Terminal A displayed at Terminal B. |
JordanWisdom | 1:127190419363 | 135 | |
JordanWisdom | 7:3ad02c0c93a9 | 136 | return 0; |
JordanWisdom | 1:127190419363 | 137 | } |
JordanWisdom | 1:127190419363 | 138 | |
JordanWisdom | 1:127190419363 | 139 | void scan(short ScanData[]) { |
JordanWisdom | 1:127190419363 | 140 | int j; |
JordanWisdom | 1:127190419363 | 141 | //LoaSI=1; |
JordanWisdom | 1:127190419363 | 142 | //LoaCLK=1; |
JordanWisdom | 1:127190419363 | 143 | //LoaSI=0; |
JordanWisdom | 1:127190419363 | 144 | for(j=0;j<128;j=j+1){ |
JordanWisdom | 1:127190419363 | 145 | //ScanData[j]=LoaAnalogIn.read_u16(); |
JordanWisdom | 1:127190419363 | 146 | //LoaCLK=0; //delay_us(1); |
JordanWisdom | 1:127190419363 | 147 | //LoaCLK=1; |
JordanWisdom | 1:127190419363 | 148 | } |
JordanWisdom | 1:127190419363 | 149 | //LoaCLK=0; |
JordanWisdom | 1:127190419363 | 150 | } |
JordanWisdom | 1:127190419363 | 151 | |
JordanWisdom | 7:3ad02c0c93a9 | 152 | int main() { |
JordanWisdom | 1:127190419363 | 153 | char Key; |
JordanWisdom | 1:127190419363 | 154 | //Initialize(); |
A_Sterner | 5:6f51a96a5094 | 155 | while(1) { |
JordanWisdom | 1:127190419363 | 156 | Key=DisplayMenu(); |
JordanWisdom | 1:127190419363 | 157 | if(Key=='1') SimpleIO(); //LAB 2.2 |
A_Sterner | 6:2db8f8299773 | 158 | else if(Key=='2') AOut(); //LAB 2.3 |
JordanWisdom | 4:535e67099871 | 159 | else if(Key=='3') fAnalogIn(); //LAB 2.4 |
A_Sterner | 5:6f51a96a5094 | 160 | else if(Key=='4') PWMOut(); //LAB 2.5 |
JordanWisdom | 1:127190419363 | 161 | else if(Key=='5') TimerIntInit(); //LAB 2.6 |
JordanWisdom | 1:127190419363 | 162 | else if(Key=='6') ExternalIntInit(); //LAB 2.7 |
JordanWisdom | 1:127190419363 | 163 | else if(Key=='7') LinearOpticalArrayTest(); //LAB 2.8 |
JordanWisdom | 1:127190419363 | 164 | else if(Key=='8') BlueToothTest(); //LAB 2.9 |
JordanWisdom | 1:127190419363 | 165 | else printf("\r\nInvalid keypress entry.\r\n"); |
JordanWisdom | 1:127190419363 | 166 | } |
A_Sterner | 5:6f51a96a5094 | 167 | } |