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

Dependencies:   Servo mbed

Fork of Moon_Buggy_Locomotion by Jamie Gibson

Committer:
JamieGibson
Date:
Thu Dec 10 15:13:29 2015 +0000
Revision:
0:bd3be923d5fa
Moon Buggy Locomotion Code

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JamieGibson 0:bd3be923d5fa 1 #include "mbed.h"
JamieGibson 0:bd3be923d5fa 2 #include "Servo.h"
JamieGibson 0:bd3be923d5fa 3
JamieGibson 0:bd3be923d5fa 4 I2CSlave slave(p9, p10); //Configure I2C slave
JamieGibson 0:bd3be923d5fa 5 PwmOut steering (p21);// Define PWM Output to wheels servo
JamieGibson 0:bd3be923d5fa 6 Servo motor (p22); // Define PWM Output to the ESC
JamieGibson 0:bd3be923d5fa 7 DigitalOut forward(LED1);
JamieGibson 0:bd3be923d5fa 8 DigitalOut back(LED2);
JamieGibson 0:bd3be923d5fa 9 DigitalOut stop(LED3);
JamieGibson 0:bd3be923d5fa 10 DigitalOut led1(p13); // Indicator Light for center turn
JamieGibson 0:bd3be923d5fa 11 DigitalOut led2(p15); // Indicator Light for left turn
JamieGibson 0:bd3be923d5fa 12 DigitalOut led3(p17);// Indicator Light for right turn
JamieGibson 0:bd3be923d5fa 13 char switch_word ; //word we will send
JamieGibson 0:bd3be923d5fa 14 char recd_val; //value received from master
JamieGibson 0:bd3be923d5fa 15
JamieGibson 0:bd3be923d5fa 16 int main() //start of main programme
JamieGibson 0:bd3be923d5fa 17 {
JamieGibson 0:bd3be923d5fa 18 slave.address(0x52); // The slave is addressed
JamieGibson 0:bd3be923d5fa 19 while(1)
JamieGibson 0:bd3be923d5fa 20 {
JamieGibson 0:bd3be923d5fa 21 led1=0;
JamieGibson 0:bd3be923d5fa 22 led2=0;
JamieGibson 0:bd3be923d5fa 23 led3=0;
JamieGibson 0:bd3be923d5fa 24 forward=0;
JamieGibson 0:bd3be923d5fa 25 back=0;
JamieGibson 0:bd3be923d5fa 26 stop=0;
JamieGibson 0:bd3be923d5fa 27 switch_word=0xa0; //set up a recognisable output pattern
JamieGibson 0:bd3be923d5fa 28 slave.write(switch_word); //load up word to send
JamieGibson 0:bd3be923d5fa 29 /*test for I2C, and act accordingly*/
JamieGibson 0:bd3be923d5fa 30 int i = slave.receive();
JamieGibson 0:bd3be923d5fa 31 if (i == 3) //slave is addressed, Master will write
JamieGibson 0:bd3be923d5fa 32 {
JamieGibson 0:bd3be923d5fa 33 recd_val= slave.read();
JamieGibson 0:bd3be923d5fa 34 recd_val=recd_val&0x0F; // AND out unwatnted LSB bits
JamieGibson 0:bd3be923d5fa 35 /*Locomotion and Sterring Control based on received Value*/
JamieGibson 0:bd3be923d5fa 36 if (recd_val==1)
JamieGibson 0:bd3be923d5fa 37 {
JamieGibson 0:bd3be923d5fa 38 led1=1;
JamieGibson 0:bd3be923d5fa 39 forward=1;
JamieGibson 0:bd3be923d5fa 40 steering.pulsewidth (0.0015); //centre
JamieGibson 0:bd3be923d5fa 41 wait(0.2);
JamieGibson 0:bd3be923d5fa 42 motor.write(0.3); //full forward
JamieGibson 0:bd3be923d5fa 43 wait(1);
JamieGibson 0:bd3be923d5fa 44 }
JamieGibson 0:bd3be923d5fa 45 /*
JamieGibson 0:bd3be923d5fa 46 if (recd_val==2)
JamieGibson 0:bd3be923d5fa 47 {
JamieGibson 0:bd3be923d5fa 48 led3=1;
JamieGibson 0:bd3be923d5fa 49 forward=1;
JamieGibson 0:bd3be923d5fa 50 steering.pulsewidth (0.0009);//right
JamieGibson 0:bd3be923d5fa 51 wait(0.2);
JamieGibson 0:bd3be923d5fa 52 motor.write(0.3); //full forward
JamieGibson 0:bd3be923d5fa 53 wait(1);
JamieGibson 0:bd3be923d5fa 54 }
JamieGibson 0:bd3be923d5fa 55 */
JamieGibson 0:bd3be923d5fa 56 if (recd_val==3)
JamieGibson 0:bd3be923d5fa 57 {
JamieGibson 0:bd3be923d5fa 58 led3=1;
JamieGibson 0:bd3be923d5fa 59 forward=1;
JamieGibson 0:bd3be923d5fa 60 steering.pulsewidth (0.0009);//right
JamieGibson 0:bd3be923d5fa 61 wait(0.2);
JamieGibson 0:bd3be923d5fa 62 motor.write(0.3);//forward
JamieGibson 0:bd3be923d5fa 63 wait(1);
JamieGibson 0:bd3be923d5fa 64 }
JamieGibson 0:bd3be923d5fa 65 /*
JamieGibson 0:bd3be923d5fa 66 if(recd_val==4)
JamieGibson 0:bd3be923d5fa 67 {
JamieGibson 0:bd3be923d5fa 68 led3=1;
JamieGibson 0:bd3be923d5fa 69 back=1;
JamieGibson 0:bd3be923d5fa 70 steering.pulsewidth (0.0009);//right
JamieGibson 0:bd3be923d5fa 71 wait(0.2);
JamieGibson 0:bd3be923d5fa 72 motor.write(0.6); //full backwards
JamieGibson 0:bd3be923d5fa 73 wait(1);
JamieGibson 0:bd3be923d5fa 74 }*/
JamieGibson 0:bd3be923d5fa 75 if (recd_val==5)
JamieGibson 0:bd3be923d5fa 76 {
JamieGibson 0:bd3be923d5fa 77 led1=1;
JamieGibson 0:bd3be923d5fa 78 back=1;
JamieGibson 0:bd3be923d5fa 79 steering.pulsewidth (0.0015);//center
JamieGibson 0:bd3be923d5fa 80 motor.write(0.6); //full backwards
JamieGibson 0:bd3be923d5fa 81 wait(1);
JamieGibson 0:bd3be923d5fa 82 }
JamieGibson 0:bd3be923d5fa 83 /*
JamieGibson 0:bd3be923d5fa 84 if(recd_val==6)
JamieGibson 0:bd3be923d5fa 85 {
JamieGibson 0:bd3be923d5fa 86 led2=1;
JamieGibson 0:bd3be923d5fa 87 back=1;
JamieGibson 0:bd3be923d5fa 88 steering.pulsewidth (0.0021);//LEFT
JamieGibson 0:bd3be923d5fa 89 wait(0.2);
JamieGibson 0:bd3be923d5fa 90 motor.write(0.6); //full backwards
JamieGibson 0:bd3be923d5fa 91 wait(1);
JamieGibson 0:bd3be923d5fa 92 }
JamieGibson 0:bd3be923d5fa 93 */
JamieGibson 0:bd3be923d5fa 94 if (recd_val==7)
JamieGibson 0:bd3be923d5fa 95 {
JamieGibson 0:bd3be923d5fa 96 led2=1;
JamieGibson 0:bd3be923d5fa 97 forward=1;
JamieGibson 0:bd3be923d5fa 98 steering.pulsewidth (0.0021);//LEFT
JamieGibson 0:bd3be923d5fa 99 wait(0.2);
JamieGibson 0:bd3be923d5fa 100 motor.write(0.3); //full forward
JamieGibson 0:bd3be923d5fa 101 wait(1);
JamieGibson 0:bd3be923d5fa 102 led1=0;
JamieGibson 0:bd3be923d5fa 103 led2=0;
JamieGibson 0:bd3be923d5fa 104 led3=0;
JamieGibson 0:bd3be923d5fa 105 }
JamieGibson 0:bd3be923d5fa 106 /*
JamieGibson 0:bd3be923d5fa 107 if (recd_val==8)
JamieGibson 0:bd3be923d5fa 108 {
JamieGibson 0:bd3be923d5fa 109 led2=1;
JamieGibson 0:bd3be923d5fa 110 forward=1;
JamieGibson 0:bd3be923d5fa 111 steering.pulsewidth (0.0021);//LEFT
JamieGibson 0:bd3be923d5fa 112 wait(0.2);
JamieGibson 0:bd3be923d5fa 113 motor.write(0.3); //full FORWARD
JamieGibson 0:bd3be923d5fa 114 wait(1);
JamieGibson 0:bd3be923d5fa 115 }
JamieGibson 0:bd3be923d5fa 116 */
JamieGibson 0:bd3be923d5fa 117 if (recd_val==9)
JamieGibson 0:bd3be923d5fa 118 {
JamieGibson 0:bd3be923d5fa 119 stop=1;
JamieGibson 0:bd3be923d5fa 120 steering.pulsewidth(0.0015);//stop
JamieGibson 0:bd3be923d5fa 121 wait(0.2);
JamieGibson 0:bd3be923d5fa 122 motor.write(0.5);//stop
JamieGibson 0:bd3be923d5fa 123 wait(1);
JamieGibson 0:bd3be923d5fa 124 }
JamieGibson 0:bd3be923d5fa 125 if (recd_val==0)
JamieGibson 0:bd3be923d5fa 126 {
JamieGibson 0:bd3be923d5fa 127 stop=1;
JamieGibson 0:bd3be923d5fa 128 steering.pulsewidth(0.0015);//stop
JamieGibson 0:bd3be923d5fa 129 wait(0.2);
JamieGibson 0:bd3be923d5fa 130 motor.write(0.5);//stop
JamieGibson 0:bd3be923d5fa 131 wait(1);
JamieGibson 0:bd3be923d5fa 132 }
JamieGibson 0:bd3be923d5fa 133 }
JamieGibson 0:bd3be923d5fa 134 }
JamieGibson 0:bd3be923d5fa 135 }