
The Program for our autonomous vehicle which we built for our course project
Dependencies: mbed
Fork of Moon_Buggy_Light by
main.cpp
- Committer:
- JamieGibson
- Date:
- 2015-12-10
- Revision:
- 0:773f692587e0
File content as of revision 0:773f692587e0:
#include "mbed.h" Serial pc(USBTX, USBRX); Serial async_port(p9, p10); //set up TX and RX on pins 9 and 10 PwmOut PWM1(p25); //create a PWM output called PWM1 on pin 25 PwmOut PWM2(p26); AnalogIn LDR_Fin(p17); //Front LDR In AnalogIn LDR_Rin(p18); //Right LDR In AnalogIn LDR_Bin(p19); //Back LDR In AnalogIn LDR_Lin(p20); //Left LDR In AnalogIn LDR_5in(p16); //LDR_5 DigitalOut LED_F(p5); DigitalOut LED_R(p6); DigitalOut LED_B(p7); DigitalOut LED_L(p8); DigitalOut LED5_hi(p21); //LED5_hi DigitalOut LED5_lo(p22); //LED5_lo DigitalOut LED5_run(p23); //LED5_run char switch_word ; //the word we will send char recd_val; //the received value float LDR_Fdata; float LDR_Rdata; float LDR_Bdata; float LDR_Ldata; float LDR_5data; int F; int R; int B; int L; int LDR5_hi; int LDR5_lo; int LDR5_run; int main() { async_port.baud(9600); //set baud rate to 9600 (ie default) accept default format, of 8 bits, no parity while(1) { LDR_Fdata=LDR_Fin*3.3; //Convert Ain to Voltage value LDR_Rdata=LDR_Rin*3.3; LDR_Bdata=LDR_Bin*3.3; LDR_Ldata=LDR_Lin*3.3; LDR_5data=LDR_5in*3.3; switch_word=0xf0; if(LDR_5data>3) { LDR5_hi=1; LDR5_lo=0; LDR5_run=0; } else if(LDR_5data<1.5) { LDR5_hi=0; LDR5_lo=1; LDR5_run=0; } else { LDR5_hi=0; LDR5_lo=0; LDR5_run=1; } if(LDR5_hi==1) { LED_F=0; LED_R=0; LED_B=0; LED_L=0; LED5_hi=1; LED5_lo=0; LED5_run=0; switch_word=switch_word|0x09; async_port.putc(switch_word); wait(1); PWM1=0.12; PWM2=0.12; } if(LDR5_lo==1) { LED_F=0; LED_R=0; LED_B=0; LED_L=0; LED5_hi=0; LED5_lo=1; LED5_run=0; switch_word=switch_word|0x00; async_port.putc(switch_word); PWM1=0.03; PWM2=0.026; } if(LDR5_run==1) { recd_val=0; LED5_hi=0; LED5_lo=0; LED5_run=1; PWM1=0.03; PWM2=0.026; if(LDR_Fdata>LDR_Bdata) //Block 1 - Check between F&B, L&R and set flags { F=1; B=0; } else if(LDR_Fdata<LDR_Bdata) { F=0; B=1; } if(LDR_Rdata>LDR_Ldata) { R=1; L=0; } else if(LDR_Rdata<LDR_Ldata) { R=0; L=1; } //Block 1 - Finished if(F==1 && R==1) //Block 2 - Check according to flags and set LEDs/transmit direction { if(LDR_Fdata>LDR_Rdata) { LED_F=1; LED_R=0; LED_B=0; LED_L=0; switch_word=switch_word|0x01; async_port.putc(switch_word); } else if(LDR_Fdata<LDR_Rdata) { LED_F=0; LED_R=1; LED_B=0; LED_L=0; switch_word=switch_word|0x03; async_port.putc(switch_word); } else { LED_F=1; LED_R=1; LED_B=0; LED_L=0; switch_word=switch_word|0x02; async_port.putc(switch_word); } } if(F==1 && L==1) { if(LDR_Fdata>LDR_Ldata) { LED_F=1; LED_R=0; LED_B=0; LED_L=0; switch_word=switch_word|0x01; async_port.putc(switch_word); } else if(LDR_Fdata<LDR_Ldata) { LED_F=0; LED_R=0; LED_B=0; LED_L=1; switch_word=switch_word|0x07; async_port.putc(switch_word); } else { LED_F=1; LED_R=0; LED_B=0; LED_L=1; switch_word=switch_word|0x08; async_port.putc(switch_word); } } if(B==1 && R==1) { if(LDR_Bdata>LDR_Rdata) { LED_F=0; LED_R=0; LED_B=1; LED_L=0; switch_word=switch_word|0x05; async_port.putc(switch_word); } else if(LDR_Bdata<LDR_Rdata) { LED_F=0; LED_R=1; LED_B=0; LED_L=0; switch_word=switch_word|0x03; async_port.putc(switch_word); } else { LED_F=0; LED_R=1; LED_B=1; LED_L=0; switch_word=switch_word|0x04; async_port.putc(switch_word); } } if(B==1 && L==1) { if(LDR_Bdata>LDR_Ldata) { LED_F=0; LED_R=0; LED_B=1; LED_L=0; switch_word=switch_word|0x05; async_port.putc(switch_word); } else if(LDR_Bdata<LDR_Ldata) { LED_F=0; LED_R=0; LED_B=0; LED_L=1; switch_word=switch_word|0x07; async_port.putc(switch_word); } else { LED_F=0; LED_R=0; LED_B=1; LED_L=1; switch_word=switch_word|0x06; async_port.putc(switch_word); } } //Block 2 - Finished } } }