ECE 4333 / ECE4333Lab2

Dependencies:   mbed

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?

UserRevisionLine numberNew 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 }