ECE 4333 / ECE4333Lab2

Dependencies:   mbed

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?

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