The Program for our autonomous vehicle which we built for our course project

Dependencies:   mbed

Fork of Moon_Buggy_Light by Jamie Gibson

Committer:
JamieGibson
Date:
Thu Dec 10 15:11:42 2015 +0000
Revision:
0:773f692587e0
Moon Buggy Light Sensing Code

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JamieGibson 0:773f692587e0 1 #include "mbed.h"
JamieGibson 0:773f692587e0 2
JamieGibson 0:773f692587e0 3 Serial pc(USBTX, USBRX);
JamieGibson 0:773f692587e0 4 Serial async_port(p9, p10); //set up TX and RX on pins 9 and 10
JamieGibson 0:773f692587e0 5 PwmOut PWM1(p25); //create a PWM output called PWM1 on pin 25
JamieGibson 0:773f692587e0 6 PwmOut PWM2(p26);
JamieGibson 0:773f692587e0 7 AnalogIn LDR_Fin(p17); //Front LDR In
JamieGibson 0:773f692587e0 8 AnalogIn LDR_Rin(p18); //Right LDR In
JamieGibson 0:773f692587e0 9 AnalogIn LDR_Bin(p19); //Back LDR In
JamieGibson 0:773f692587e0 10 AnalogIn LDR_Lin(p20); //Left LDR In
JamieGibson 0:773f692587e0 11 AnalogIn LDR_5in(p16); //LDR_5
JamieGibson 0:773f692587e0 12
JamieGibson 0:773f692587e0 13 DigitalOut LED_F(p5);
JamieGibson 0:773f692587e0 14 DigitalOut LED_R(p6);
JamieGibson 0:773f692587e0 15 DigitalOut LED_B(p7);
JamieGibson 0:773f692587e0 16 DigitalOut LED_L(p8);
JamieGibson 0:773f692587e0 17 DigitalOut LED5_hi(p21); //LED5_hi
JamieGibson 0:773f692587e0 18 DigitalOut LED5_lo(p22); //LED5_lo
JamieGibson 0:773f692587e0 19 DigitalOut LED5_run(p23); //LED5_run
JamieGibson 0:773f692587e0 20
JamieGibson 0:773f692587e0 21 char switch_word ; //the word we will send
JamieGibson 0:773f692587e0 22 char recd_val; //the received value
JamieGibson 0:773f692587e0 23
JamieGibson 0:773f692587e0 24 float LDR_Fdata;
JamieGibson 0:773f692587e0 25 float LDR_Rdata;
JamieGibson 0:773f692587e0 26 float LDR_Bdata;
JamieGibson 0:773f692587e0 27 float LDR_Ldata;
JamieGibson 0:773f692587e0 28 float LDR_5data;
JamieGibson 0:773f692587e0 29
JamieGibson 0:773f692587e0 30 int F;
JamieGibson 0:773f692587e0 31 int R;
JamieGibson 0:773f692587e0 32 int B;
JamieGibson 0:773f692587e0 33 int L;
JamieGibson 0:773f692587e0 34 int LDR5_hi;
JamieGibson 0:773f692587e0 35 int LDR5_lo;
JamieGibson 0:773f692587e0 36 int LDR5_run;
JamieGibson 0:773f692587e0 37
JamieGibson 0:773f692587e0 38 int main()
JamieGibson 0:773f692587e0 39 {
JamieGibson 0:773f692587e0 40 async_port.baud(9600); //set baud rate to 9600 (ie default) accept default format, of 8 bits, no parity
JamieGibson 0:773f692587e0 41 while(1)
JamieGibson 0:773f692587e0 42 {
JamieGibson 0:773f692587e0 43 LDR_Fdata=LDR_Fin*3.3; //Convert Ain to Voltage value
JamieGibson 0:773f692587e0 44 LDR_Rdata=LDR_Rin*3.3;
JamieGibson 0:773f692587e0 45 LDR_Bdata=LDR_Bin*3.3;
JamieGibson 0:773f692587e0 46 LDR_Ldata=LDR_Lin*3.3;
JamieGibson 0:773f692587e0 47 LDR_5data=LDR_5in*3.3;
JamieGibson 0:773f692587e0 48 switch_word=0xf0;
JamieGibson 0:773f692587e0 49 if(LDR_5data>3)
JamieGibson 0:773f692587e0 50 {
JamieGibson 0:773f692587e0 51 LDR5_hi=1;
JamieGibson 0:773f692587e0 52 LDR5_lo=0;
JamieGibson 0:773f692587e0 53 LDR5_run=0;
JamieGibson 0:773f692587e0 54 }
JamieGibson 0:773f692587e0 55 else if(LDR_5data<1.5)
JamieGibson 0:773f692587e0 56 {
JamieGibson 0:773f692587e0 57 LDR5_hi=0;
JamieGibson 0:773f692587e0 58 LDR5_lo=1;
JamieGibson 0:773f692587e0 59 LDR5_run=0;
JamieGibson 0:773f692587e0 60 }
JamieGibson 0:773f692587e0 61 else
JamieGibson 0:773f692587e0 62 {
JamieGibson 0:773f692587e0 63 LDR5_hi=0;
JamieGibson 0:773f692587e0 64 LDR5_lo=0;
JamieGibson 0:773f692587e0 65 LDR5_run=1;
JamieGibson 0:773f692587e0 66 }
JamieGibson 0:773f692587e0 67 if(LDR5_hi==1)
JamieGibson 0:773f692587e0 68 {
JamieGibson 0:773f692587e0 69 LED_F=0;
JamieGibson 0:773f692587e0 70 LED_R=0;
JamieGibson 0:773f692587e0 71 LED_B=0;
JamieGibson 0:773f692587e0 72 LED_L=0;
JamieGibson 0:773f692587e0 73 LED5_hi=1;
JamieGibson 0:773f692587e0 74 LED5_lo=0;
JamieGibson 0:773f692587e0 75 LED5_run=0;
JamieGibson 0:773f692587e0 76 switch_word=switch_word|0x09;
JamieGibson 0:773f692587e0 77 async_port.putc(switch_word);
JamieGibson 0:773f692587e0 78 wait(1);
JamieGibson 0:773f692587e0 79 PWM1=0.12;
JamieGibson 0:773f692587e0 80 PWM2=0.12;
JamieGibson 0:773f692587e0 81 }
JamieGibson 0:773f692587e0 82 if(LDR5_lo==1)
JamieGibson 0:773f692587e0 83 {
JamieGibson 0:773f692587e0 84 LED_F=0;
JamieGibson 0:773f692587e0 85 LED_R=0;
JamieGibson 0:773f692587e0 86 LED_B=0;
JamieGibson 0:773f692587e0 87 LED_L=0;
JamieGibson 0:773f692587e0 88 LED5_hi=0;
JamieGibson 0:773f692587e0 89 LED5_lo=1;
JamieGibson 0:773f692587e0 90 LED5_run=0;
JamieGibson 0:773f692587e0 91 switch_word=switch_word|0x00;
JamieGibson 0:773f692587e0 92 async_port.putc(switch_word);
JamieGibson 0:773f692587e0 93 PWM1=0.03;
JamieGibson 0:773f692587e0 94 PWM2=0.026;
JamieGibson 0:773f692587e0 95 }
JamieGibson 0:773f692587e0 96 if(LDR5_run==1)
JamieGibson 0:773f692587e0 97 {
JamieGibson 0:773f692587e0 98 recd_val=0;
JamieGibson 0:773f692587e0 99 LED5_hi=0;
JamieGibson 0:773f692587e0 100 LED5_lo=0;
JamieGibson 0:773f692587e0 101 LED5_run=1;
JamieGibson 0:773f692587e0 102 PWM1=0.03;
JamieGibson 0:773f692587e0 103 PWM2=0.026;
JamieGibson 0:773f692587e0 104 if(LDR_Fdata>LDR_Bdata) //Block 1 - Check between F&B, L&R and set flags
JamieGibson 0:773f692587e0 105 {
JamieGibson 0:773f692587e0 106 F=1;
JamieGibson 0:773f692587e0 107 B=0;
JamieGibson 0:773f692587e0 108 }
JamieGibson 0:773f692587e0 109 else if(LDR_Fdata<LDR_Bdata)
JamieGibson 0:773f692587e0 110 {
JamieGibson 0:773f692587e0 111 F=0;
JamieGibson 0:773f692587e0 112 B=1;
JamieGibson 0:773f692587e0 113 }
JamieGibson 0:773f692587e0 114 if(LDR_Rdata>LDR_Ldata)
JamieGibson 0:773f692587e0 115 {
JamieGibson 0:773f692587e0 116 R=1;
JamieGibson 0:773f692587e0 117 L=0;
JamieGibson 0:773f692587e0 118 }
JamieGibson 0:773f692587e0 119 else if(LDR_Rdata<LDR_Ldata)
JamieGibson 0:773f692587e0 120 {
JamieGibson 0:773f692587e0 121 R=0;
JamieGibson 0:773f692587e0 122 L=1;
JamieGibson 0:773f692587e0 123 } //Block 1 - Finished
JamieGibson 0:773f692587e0 124
JamieGibson 0:773f692587e0 125 if(F==1 && R==1) //Block 2 - Check according to flags and set LEDs/transmit direction
JamieGibson 0:773f692587e0 126 {
JamieGibson 0:773f692587e0 127 if(LDR_Fdata>LDR_Rdata)
JamieGibson 0:773f692587e0 128 {
JamieGibson 0:773f692587e0 129 LED_F=1;
JamieGibson 0:773f692587e0 130 LED_R=0;
JamieGibson 0:773f692587e0 131 LED_B=0;
JamieGibson 0:773f692587e0 132 LED_L=0;
JamieGibson 0:773f692587e0 133 switch_word=switch_word|0x01;
JamieGibson 0:773f692587e0 134 async_port.putc(switch_word);
JamieGibson 0:773f692587e0 135 }
JamieGibson 0:773f692587e0 136 else if(LDR_Fdata<LDR_Rdata)
JamieGibson 0:773f692587e0 137 {
JamieGibson 0:773f692587e0 138 LED_F=0;
JamieGibson 0:773f692587e0 139 LED_R=1;
JamieGibson 0:773f692587e0 140 LED_B=0;
JamieGibson 0:773f692587e0 141 LED_L=0;
JamieGibson 0:773f692587e0 142 switch_word=switch_word|0x03;
JamieGibson 0:773f692587e0 143 async_port.putc(switch_word);
JamieGibson 0:773f692587e0 144 }
JamieGibson 0:773f692587e0 145 else
JamieGibson 0:773f692587e0 146 {
JamieGibson 0:773f692587e0 147 LED_F=1;
JamieGibson 0:773f692587e0 148 LED_R=1;
JamieGibson 0:773f692587e0 149 LED_B=0;
JamieGibson 0:773f692587e0 150 LED_L=0;
JamieGibson 0:773f692587e0 151 switch_word=switch_word|0x02;
JamieGibson 0:773f692587e0 152 async_port.putc(switch_word);
JamieGibson 0:773f692587e0 153 }
JamieGibson 0:773f692587e0 154 }
JamieGibson 0:773f692587e0 155 if(F==1 && L==1)
JamieGibson 0:773f692587e0 156 {
JamieGibson 0:773f692587e0 157 if(LDR_Fdata>LDR_Ldata)
JamieGibson 0:773f692587e0 158 {
JamieGibson 0:773f692587e0 159 LED_F=1;
JamieGibson 0:773f692587e0 160 LED_R=0;
JamieGibson 0:773f692587e0 161 LED_B=0;
JamieGibson 0:773f692587e0 162 LED_L=0;
JamieGibson 0:773f692587e0 163 switch_word=switch_word|0x01;
JamieGibson 0:773f692587e0 164 async_port.putc(switch_word);
JamieGibson 0:773f692587e0 165 }
JamieGibson 0:773f692587e0 166 else if(LDR_Fdata<LDR_Ldata)
JamieGibson 0:773f692587e0 167 {
JamieGibson 0:773f692587e0 168 LED_F=0;
JamieGibson 0:773f692587e0 169 LED_R=0;
JamieGibson 0:773f692587e0 170 LED_B=0;
JamieGibson 0:773f692587e0 171 LED_L=1;
JamieGibson 0:773f692587e0 172 switch_word=switch_word|0x07;
JamieGibson 0:773f692587e0 173 async_port.putc(switch_word);
JamieGibson 0:773f692587e0 174 }
JamieGibson 0:773f692587e0 175 else
JamieGibson 0:773f692587e0 176 {
JamieGibson 0:773f692587e0 177 LED_F=1;
JamieGibson 0:773f692587e0 178 LED_R=0;
JamieGibson 0:773f692587e0 179 LED_B=0;
JamieGibson 0:773f692587e0 180 LED_L=1;
JamieGibson 0:773f692587e0 181 switch_word=switch_word|0x08;
JamieGibson 0:773f692587e0 182 async_port.putc(switch_word);
JamieGibson 0:773f692587e0 183 }
JamieGibson 0:773f692587e0 184 }
JamieGibson 0:773f692587e0 185 if(B==1 && R==1)
JamieGibson 0:773f692587e0 186 {
JamieGibson 0:773f692587e0 187 if(LDR_Bdata>LDR_Rdata)
JamieGibson 0:773f692587e0 188 {
JamieGibson 0:773f692587e0 189 LED_F=0;
JamieGibson 0:773f692587e0 190 LED_R=0;
JamieGibson 0:773f692587e0 191 LED_B=1;
JamieGibson 0:773f692587e0 192 LED_L=0;
JamieGibson 0:773f692587e0 193 switch_word=switch_word|0x05;
JamieGibson 0:773f692587e0 194 async_port.putc(switch_word);
JamieGibson 0:773f692587e0 195 }
JamieGibson 0:773f692587e0 196 else if(LDR_Bdata<LDR_Rdata)
JamieGibson 0:773f692587e0 197 {
JamieGibson 0:773f692587e0 198 LED_F=0;
JamieGibson 0:773f692587e0 199 LED_R=1;
JamieGibson 0:773f692587e0 200 LED_B=0;
JamieGibson 0:773f692587e0 201 LED_L=0;
JamieGibson 0:773f692587e0 202 switch_word=switch_word|0x03;
JamieGibson 0:773f692587e0 203 async_port.putc(switch_word);
JamieGibson 0:773f692587e0 204 }
JamieGibson 0:773f692587e0 205 else
JamieGibson 0:773f692587e0 206 {
JamieGibson 0:773f692587e0 207 LED_F=0;
JamieGibson 0:773f692587e0 208 LED_R=1;
JamieGibson 0:773f692587e0 209 LED_B=1;
JamieGibson 0:773f692587e0 210 LED_L=0;
JamieGibson 0:773f692587e0 211 switch_word=switch_word|0x04;
JamieGibson 0:773f692587e0 212 async_port.putc(switch_word);
JamieGibson 0:773f692587e0 213 }
JamieGibson 0:773f692587e0 214 }
JamieGibson 0:773f692587e0 215 if(B==1 && L==1)
JamieGibson 0:773f692587e0 216 {
JamieGibson 0:773f692587e0 217 if(LDR_Bdata>LDR_Ldata)
JamieGibson 0:773f692587e0 218 {
JamieGibson 0:773f692587e0 219 LED_F=0;
JamieGibson 0:773f692587e0 220 LED_R=0;
JamieGibson 0:773f692587e0 221 LED_B=1;
JamieGibson 0:773f692587e0 222 LED_L=0;
JamieGibson 0:773f692587e0 223 switch_word=switch_word|0x05;
JamieGibson 0:773f692587e0 224 async_port.putc(switch_word);
JamieGibson 0:773f692587e0 225 }
JamieGibson 0:773f692587e0 226 else if(LDR_Bdata<LDR_Ldata)
JamieGibson 0:773f692587e0 227 {
JamieGibson 0:773f692587e0 228 LED_F=0;
JamieGibson 0:773f692587e0 229 LED_R=0;
JamieGibson 0:773f692587e0 230 LED_B=0;
JamieGibson 0:773f692587e0 231 LED_L=1;
JamieGibson 0:773f692587e0 232 switch_word=switch_word|0x07;
JamieGibson 0:773f692587e0 233 async_port.putc(switch_word);
JamieGibson 0:773f692587e0 234 }
JamieGibson 0:773f692587e0 235 else
JamieGibson 0:773f692587e0 236 {
JamieGibson 0:773f692587e0 237 LED_F=0;
JamieGibson 0:773f692587e0 238 LED_R=0;
JamieGibson 0:773f692587e0 239 LED_B=1;
JamieGibson 0:773f692587e0 240 LED_L=1;
JamieGibson 0:773f692587e0 241 switch_word=switch_word|0x06;
JamieGibson 0:773f692587e0 242 async_port.putc(switch_word);
JamieGibson 0:773f692587e0 243 }
JamieGibson 0:773f692587e0 244 } //Block 2 - Finished
JamieGibson 0:773f692587e0 245 }
JamieGibson 0:773f692587e0 246 }
JamieGibson 0:773f692587e0 247 }