Object Avoidance Program

Dependencies:   4DGL-uLCD-SE Motordriver mbed

Committer:
rokash000
Date:
Tue Apr 29 21:05:19 2014 +0000
Revision:
0:eb26279eeb24
Child:
1:ab45b552644b
Problems with sensors. Code should work but chassis not moving

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rokash000 0:eb26279eeb24 1
rokash000 0:eb26279eeb24 2 #include "mbed.h"
rokash000 0:eb26279eeb24 3 #include "motordriver.h"
rokash000 0:eb26279eeb24 4 //#include "SHARPIR.h"
rokash000 0:eb26279eeb24 5 #include "uLCD_4DGL.h"
rokash000 0:eb26279eeb24 6
rokash000 0:eb26279eeb24 7 Motor mA(p22, p6, p5, 1); // pwm, fwd, rev
rokash000 0:eb26279eeb24 8 Motor mB(p23, p8, p7, 1); // pwm, fwd, rev
rokash000 0:eb26279eeb24 9
rokash000 0:eb26279eeb24 10
rokash000 0:eb26279eeb24 11 Serial pc(USBTX, USBRX); // tx, rx
rokash000 0:eb26279eeb24 12 DigitalOut led_back(p16); // test led for Back_sensor
rokash000 0:eb26279eeb24 13 DigitalOut led_left(p15); // test led for Back_sensor
rokash000 0:eb26279eeb24 14 DigitalOut led_right(p14); // test led for Back_sensor
rokash000 0:eb26279eeb24 15 DigitalOut led_front(p13); // test led for Back_sensor
rokash000 0:eb26279eeb24 16
rokash000 0:eb26279eeb24 17 AnalogIn irBack_ain(p18);
rokash000 0:eb26279eeb24 18 AnalogIn irFront_ain(p17);
rokash000 0:eb26279eeb24 19 AnalogIn irLeft_ain(p20);
rokash000 0:eb26279eeb24 20 AnalogIn irRight_ain(p19);
rokash000 0:eb26279eeb24 21
rokash000 0:eb26279eeb24 22 //SHARPIR sensor_back(p18); //the output of the sharpIR sensor is connected to the MBEDs pin 10.
rokash000 0:eb26279eeb24 23
rokash000 0:eb26279eeb24 24 //uLCD_4DGL uLCD(p28, p27, p29); // create a global lcd object
rokash000 0:eb26279eeb24 25
rokash000 0:eb26279eeb24 26 //speed => 1 = forward, -1 = reverse ... range from -1 to 1
rokash000 0:eb26279eeb24 27
rokash000 0:eb26279eeb24 28 int main() {
rokash000 0:eb26279eeb24 29 //uLCD.cls();
rokash000 0:eb26279eeb24 30 float backsensor = 0.0;
rokash000 0:eb26279eeb24 31 float frontsensor = 0.0;
rokash000 0:eb26279eeb24 32 float leftsensor = 0.0;
rokash000 0:eb26279eeb24 33 float rightsensor = 0.0;
rokash000 0:eb26279eeb24 34 int sensor = 0;
rokash000 0:eb26279eeb24 35 while(1){
rokash000 0:eb26279eeb24 36
rokash000 0:eb26279eeb24 37
rokash000 0:eb26279eeb24 38
rokash000 0:eb26279eeb24 39
rokash000 0:eb26279eeb24 40
rokash000 0:eb26279eeb24 41 //float backsensor = sensor_back.cm();
rokash000 0:eb26279eeb24 42
rokash000 0:eb26279eeb24 43 backsensor = irBack_ain * 100;
rokash000 0:eb26279eeb24 44 // pc.printf("FRONT Sensor is: %f \n", backsensor);
rokash000 0:eb26279eeb24 45 frontsensor = irFront_ain * 100;
rokash000 0:eb26279eeb24 46 leftsensor = irLeft_ain * 100;
rokash000 0:eb26279eeb24 47 rightsensor = irRight_ain * 100;
rokash000 0:eb26279eeb24 48 //pc.printf("Front Sensor is: %f \n", frontsensor);
rokash000 0:eb26279eeb24 49 // pc.printf("Left Sensor is: %f \n", leftsensor);
rokash000 0:eb26279eeb24 50 // pc.printf("Right Sensor is: %f \n", rightsensor);
rokash000 0:eb26279eeb24 51 //
rokash000 0:eb26279eeb24 52 if((frontsensor > 52)&&(frontsensor < 100)){
rokash000 0:eb26279eeb24 53 sensor = 2;}
rokash000 0:eb26279eeb24 54 else if((backsensor > 52)&&(backsensor < 100)){
rokash000 0:eb26279eeb24 55 sensor = 3;}
rokash000 0:eb26279eeb24 56 else if((leftsensor > 52)&&(leftsensor < 100)){
rokash000 0:eb26279eeb24 57 sensor = 1;}
rokash000 0:eb26279eeb24 58 else if((rightsensor > 52)&&(rightsensor < 100)){
rokash000 0:eb26279eeb24 59 sensor = 0;}
rokash000 0:eb26279eeb24 60
rokash000 0:eb26279eeb24 61
rokash000 0:eb26279eeb24 62 switch(sensor)
rokash000 0:eb26279eeb24 63 {
rokash000 0:eb26279eeb24 64 case 0: //Right
rokash000 0:eb26279eeb24 65 mA.speed(.6);
rokash000 0:eb26279eeb24 66 mB.speed(.9);
rokash000 0:eb26279eeb24 67 led_right = 1;
rokash000 0:eb26279eeb24 68 break;
rokash000 0:eb26279eeb24 69 case 1: // Left
rokash000 0:eb26279eeb24 70 mA.speed(.9);
rokash000 0:eb26279eeb24 71 mB.speed(.6);
rokash000 0:eb26279eeb24 72 led_left = 1;
rokash000 0:eb26279eeb24 73 break;
rokash000 0:eb26279eeb24 74 case 2: // Front
rokash000 0:eb26279eeb24 75 mA.stop(0.5);
rokash000 0:eb26279eeb24 76 mB.stop(0.5);
rokash000 0:eb26279eeb24 77 mA.speed(-.6);
rokash000 0:eb26279eeb24 78 mB.speed(-.8);
rokash000 0:eb26279eeb24 79 led_front = 1;
rokash000 0:eb26279eeb24 80 mA.stop(0.5);
rokash000 0:eb26279eeb24 81 mB.stop(0.5);
rokash000 0:eb26279eeb24 82
rokash000 0:eb26279eeb24 83 mA.speed(.2);
rokash000 0:eb26279eeb24 84 mB.speed(.2);
rokash000 0:eb26279eeb24 85 wait(0.5);
rokash000 0:eb26279eeb24 86 break;
rokash000 0:eb26279eeb24 87 case 3: // Back
rokash000 0:eb26279eeb24 88 mA.speed(.4);
rokash000 0:eb26279eeb24 89 mB.speed(.4);
rokash000 0:eb26279eeb24 90 wait(0.5);
rokash000 0:eb26279eeb24 91 mA.stop(0.5);
rokash000 0:eb26279eeb24 92 mB.stop(0.5);
rokash000 0:eb26279eeb24 93 mA.speed(.8);
rokash000 0:eb26279eeb24 94 mB.speed(.8);
rokash000 0:eb26279eeb24 95 led_back = 1;
rokash000 0:eb26279eeb24 96 break;
rokash000 0:eb26279eeb24 97 default ://
rokash000 0:eb26279eeb24 98 // mA.speed(.5);
rokash000 0:eb26279eeb24 99 // mB.speed(.5);
rokash000 0:eb26279eeb24 100 // wait(0.5);
rokash000 0:eb26279eeb24 101 // mA.stop(0.3);
rokash000 0:eb26279eeb24 102 // mB.stop(0.3);
rokash000 0:eb26279eeb24 103 mA.speed(0.9);
rokash000 0:eb26279eeb24 104 mB.speed(0.9);
rokash000 0:eb26279eeb24 105 led_left = 0;
rokash000 0:eb26279eeb24 106 led_back = 0;
rokash000 0:eb26279eeb24 107 led_front = 0;
rokash000 0:eb26279eeb24 108 led_right = 0;
rokash000 0:eb26279eeb24 109 break;
rokash000 0:eb26279eeb24 110 }
rokash000 0:eb26279eeb24 111 led_left = 0;
rokash000 0:eb26279eeb24 112 led_back = 0;
rokash000 0:eb26279eeb24 113 led_front = 0;
rokash000 0:eb26279eeb24 114 led_right = 0;
rokash000 0:eb26279eeb24 115 sensor = 4; //DEFAULT CONDITION
rokash000 0:eb26279eeb24 116 // Back Sensor
rokash000 0:eb26279eeb24 117 // if((backsensor > 52)&&(backsensor < 100)){
rokash000 0:eb26279eeb24 118 // mA.speed(.8);
rokash000 0:eb26279eeb24 119 // mB.speed(.8);
rokash000 0:eb26279eeb24 120 // led_back = 1;
rokash000 0:eb26279eeb24 121 //
rokash000 0:eb26279eeb24 122 // }
rokash000 0:eb26279eeb24 123 // // front Sensor
rokash000 0:eb26279eeb24 124 // else if((frontsensor > 52)&&(frontsensor < 100)){
rokash000 0:eb26279eeb24 125 // mA.speed(-1);
rokash000 0:eb26279eeb24 126 // mB.speed(-1);
rokash000 0:eb26279eeb24 127 // led_front = 1;
rokash000 0:eb26279eeb24 128 //
rokash000 0:eb26279eeb24 129 // }else
rokash000 0:eb26279eeb24 130 // // right Sensor
rokash000 0:eb26279eeb24 131 // if((rightsensor > 52)&&(rightsensor < 100)){
rokash000 0:eb26279eeb24 132 // mA.speed(.4);
rokash000 0:eb26279eeb24 133 // mB.speed(.6);
rokash000 0:eb26279eeb24 134 // led_right = 1;
rokash000 0:eb26279eeb24 135 //
rokash000 0:eb26279eeb24 136 // }else // Left Sensor
rokash000 0:eb26279eeb24 137 // if((leftsensor > 52)&&(leftsensor < 100)){
rokash000 0:eb26279eeb24 138 // mA.speed(.6);
rokash000 0:eb26279eeb24 139 // mB.speed(.4);
rokash000 0:eb26279eeb24 140 // led_left = 1;
rokash000 0:eb26279eeb24 141 //
rokash000 0:eb26279eeb24 142 // }else{
rokash000 0:eb26279eeb24 143 // mA.speed(1);
rokash000 0:eb26279eeb24 144 // mB.speed(1);
rokash000 0:eb26279eeb24 145 // led_left = 0;
rokash000 0:eb26279eeb24 146 // led_back = 0;
rokash000 0:eb26279eeb24 147 // led_front = 0;
rokash000 0:eb26279eeb24 148 // led_right = 0;
rokash000 0:eb26279eeb24 149 // }
rokash000 0:eb26279eeb24 150
rokash000 0:eb26279eeb24 151
rokash000 0:eb26279eeb24 152 wait(0.1);
rokash000 0:eb26279eeb24 153 }
rokash000 0:eb26279eeb24 154 }