First program to demonstrate a working robot. crude and ugly, basicly a smoke test.

Dependencies:   mbed Motordriver Servo GP2xx

Committer:
littlexc
Date:
Wed Dec 01 21:20:04 2010 +0000
Revision:
0:0bc8408a55f8
purely a test software to show that the system can do something

Who changed what in which revision?

UserRevisionLine numberNew contents of line
littlexc 0:0bc8408a55f8 1 #include <mbed.h>
littlexc 0:0bc8408a55f8 2 #include <motordriver.h>
littlexc 0:0bc8408a55f8 3 #include <Servo.h>
littlexc 0:0bc8408a55f8 4 #include <GP2xx.h>
littlexc 0:0bc8408a55f8 5 //pc interface
littlexc 0:0bc8408a55f8 6 Serial pc(USBTX, USBRX); // tx, rx
littlexc 0:0bc8408a55f8 7 //servos
littlexc 0:0bc8408a55f8 8 Servo LeftServo(p24);
littlexc 0:0bc8408a55f8 9 Servo RightServo(p23);
littlexc 0:0bc8408a55f8 10 //motors, left and right side
littlexc 0:0bc8408a55f8 11 Motor leftM(p22, p6, p5, 1); // pwm, fwd, rev, can break
littlexc 0:0bc8408a55f8 12 Motor rightM(p21, p7, p8, 1); // pwm, fwd, rev, can break
littlexc 0:0bc8408a55f8 13 //range finders, left and right side, and left and right front
littlexc 0:0bc8408a55f8 14 IRRangeFinder LS(p18,1);
littlexc 0:0bc8408a55f8 15 IRRangeFinder LF(p17,1);
littlexc 0:0bc8408a55f8 16 IRRangeFinder RF(p16,1);
littlexc 0:0bc8408a55f8 17 IRRangeFinder RS(p15,1);
littlexc 0:0bc8408a55f8 18 //debug leds.
littlexc 0:0bc8408a55f8 19 DigitalOut led1 (LED1);
littlexc 0:0bc8408a55f8 20 DigitalOut led2 (LED2);
littlexc 0:0bc8408a55f8 21 DigitalOut led3 (LED3);
littlexc 0:0bc8408a55f8 22 DigitalOut led4 (LED4);
littlexc 0:0bc8408a55f8 23 DigitalOut ledleft (p14);
littlexc 0:0bc8408a55f8 24 DigitalOut ledright (p13);
littlexc 0:0bc8408a55f8 25 DigitalOut ledfront (p12);
littlexc 0:0bc8408a55f8 26
littlexc 0:0bc8408a55f8 27 int quickfirstprog() {//initalisation
littlexc 0:0bc8408a55f8 28 led1 = led2 = led3 = led4 = 1;//lights
littlexc 0:0bc8408a55f8 29 leftM.speed(0.5);
littlexc 0:0bc8408a55f8 30 rightM.speed(-0.5);//shows that it works.
littlexc 0:0bc8408a55f8 31 wait(1);
littlexc 0:0bc8408a55f8 32 while (1) {//infinate loop to drive around
littlexc 0:0bc8408a55f8 33 switch ( RS.read() ) {//ugly horrible switch statements that implement a crude attempt at object avoidance
littlexc 0:0bc8408a55f8 34 case 4://really this exists to prove that the system drives, and the IR rangefinders have some sane values.
littlexc 0:0bc8408a55f8 35 leftM.speed(-0.9);
littlexc 0:0bc8408a55f8 36 break;
littlexc 0:0bc8408a55f8 37 case 5:
littlexc 0:0bc8408a55f8 38 leftM.speed(-0.8);
littlexc 0:0bc8408a55f8 39 break;
littlexc 0:0bc8408a55f8 40 case 7:
littlexc 0:0bc8408a55f8 41 leftM.speed(-0.7);
littlexc 0:0bc8408a55f8 42 break;
littlexc 0:0bc8408a55f8 43 case 8:
littlexc 0:0bc8408a55f8 44 leftM.speed(-0.6);
littlexc 0:0bc8408a55f8 45 break;
littlexc 0:0bc8408a55f8 46 case 10:
littlexc 0:0bc8408a55f8 47 leftM.speed(-0.4);
littlexc 0:0bc8408a55f8 48 break;
littlexc 0:0bc8408a55f8 49 case 12:
littlexc 0:0bc8408a55f8 50 leftM.speed(-0.2);
littlexc 0:0bc8408a55f8 51 break;
littlexc 0:0bc8408a55f8 52 case 14:
littlexc 0:0bc8408a55f8 53 leftM.speed(0.0);
littlexc 0:0bc8408a55f8 54 break;
littlexc 0:0bc8408a55f8 55 case 20:
littlexc 0:0bc8408a55f8 56 leftM.speed(0.4);
littlexc 0:0bc8408a55f8 57 break;
littlexc 0:0bc8408a55f8 58 case 25:
littlexc 0:0bc8408a55f8 59 leftM.speed(0.6);
littlexc 0:0bc8408a55f8 60 break;
littlexc 0:0bc8408a55f8 61 case 30:
littlexc 0:0bc8408a55f8 62 leftM.speed(0.8);
littlexc 0:0bc8408a55f8 63 break;
littlexc 0:0bc8408a55f8 64 }
littlexc 0:0bc8408a55f8 65 switch ( LF.read() ) {
littlexc 0:0bc8408a55f8 66 case 4:
littlexc 0:0bc8408a55f8 67 rightM.speed(-1);
littlexc 0:0bc8408a55f8 68 break;
littlexc 0:0bc8408a55f8 69 case 5:
littlexc 0:0bc8408a55f8 70 rightM.speed(-0.9);
littlexc 0:0bc8408a55f8 71 break;
littlexc 0:0bc8408a55f8 72 case 7:
littlexc 0:0bc8408a55f8 73 rightM.speed(-0.8);
littlexc 0:0bc8408a55f8 74 break;
littlexc 0:0bc8408a55f8 75 case 8:
littlexc 0:0bc8408a55f8 76 rightM.speed(-0.7);
littlexc 0:0bc8408a55f8 77 break;
littlexc 0:0bc8408a55f8 78 case 10:
littlexc 0:0bc8408a55f8 79 rightM.speed(-0.6);
littlexc 0:0bc8408a55f8 80 break;
littlexc 0:0bc8408a55f8 81 case 12:
littlexc 0:0bc8408a55f8 82 rightM.speed(-0.4);
littlexc 0:0bc8408a55f8 83 break;
littlexc 0:0bc8408a55f8 84 case 14:
littlexc 0:0bc8408a55f8 85 rightM.speed(0.0);
littlexc 0:0bc8408a55f8 86 break;
littlexc 0:0bc8408a55f8 87 case 20:
littlexc 0:0bc8408a55f8 88 rightM.speed(0.4);
littlexc 0:0bc8408a55f8 89 break;
littlexc 0:0bc8408a55f8 90 case 25:
littlexc 0:0bc8408a55f8 91 rightM.speed(0.6);
littlexc 0:0bc8408a55f8 92 break;
littlexc 0:0bc8408a55f8 93 case 30:
littlexc 0:0bc8408a55f8 94 rightM.speed(0.8);
littlexc 0:0bc8408a55f8 95 break;
littlexc 0:0bc8408a55f8 96 }
littlexc 0:0bc8408a55f8 97 wait(0.1);
littlexc 0:0bc8408a55f8 98 }//end of infinate loop to drive around
littlexc 0:0bc8408a55f8 99 }