Ketan Keskar
/
Pick_and_place_robot
A program to control a pick and place robot with 2 driving motors and 3 servo motors
BT.cpp@0:6593a6faef38, 2017-04-02 (annotated)
- Committer:
- keskarketan
- Date:
- Sun Apr 02 17:43:54 2017 +0000
- Revision:
- 0:6593a6faef38
Program for controlling a pick and place robot
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
keskarketan | 0:6593a6faef38 | 1 | #include "mbed.h" |
keskarketan | 0:6593a6faef38 | 2 | #include "Servo.h" |
keskarketan | 0:6593a6faef38 | 3 | |
keskarketan | 0:6593a6faef38 | 4 | //Serial pc(USBTX, USBRX); |
keskarketan | 0:6593a6faef38 | 5 | Serial blue(PTC15, PTC14); // RX, TX |
keskarketan | 0:6593a6faef38 | 6 | DigitalOut fwdA(PTD2);//right - |
keskarketan | 0:6593a6faef38 | 7 | DigitalOut fwdB(PTD0);//right + |
keskarketan | 0:6593a6faef38 | 8 | DigitalOut fwdc(PTD1);//left - |
keskarketan | 0:6593a6faef38 | 9 | DigitalOut fwdd(PTD3);//left + |
keskarketan | 0:6593a6faef38 | 10 | |
keskarketan | 0:6593a6faef38 | 11 | Servo s1(D5); //pwm pin for bottom servo |
keskarketan | 0:6593a6faef38 | 12 | Servo s2(D6); //pwm pin for middle servo |
keskarketan | 0:6593a6faef38 | 13 | Servo s3(D7); //pwm pin for top servo |
keskarketan | 0:6593a6faef38 | 14 | |
keskarketan | 0:6593a6faef38 | 15 | float p1 = 0.5; //initial position for bottom servo |
keskarketan | 0:6593a6faef38 | 16 | float p2 = 0.5; //initial position for middle servo |
keskarketan | 0:6593a6faef38 | 17 | float p3 = 0.5; //initial position for top servo |
keskarketan | 0:6593a6faef38 | 18 | |
keskarketan | 0:6593a6faef38 | 19 | int state=0; //variable for switch-case |
keskarketan | 0:6593a6faef38 | 20 | |
keskarketan | 0:6593a6faef38 | 21 | int main() //main function |
keskarketan | 0:6593a6faef38 | 22 | { |
keskarketan | 0:6593a6faef38 | 23 | |
keskarketan | 0:6593a6faef38 | 24 | while(1) { |
keskarketan | 0:6593a6faef38 | 25 | |
keskarketan | 0:6593a6faef38 | 26 | if(blue.readable()>0) { // if data is available at serial port |
keskarketan | 0:6593a6faef38 | 27 | state = blue.getc(); // assign the character at serial port to 'state' |
keskarketan | 0:6593a6faef38 | 28 | |
keskarketan | 0:6593a6faef38 | 29 | } |
keskarketan | 0:6593a6faef38 | 30 | |
keskarketan | 0:6593a6faef38 | 31 | switch(state) { |
keskarketan | 0:6593a6faef38 | 32 | |
keskarketan | 0:6593a6faef38 | 33 | case 'w': //forward |
keskarketan | 0:6593a6faef38 | 34 | fwdA=1; |
keskarketan | 0:6593a6faef38 | 35 | fwdB=0; |
keskarketan | 0:6593a6faef38 | 36 | fwdc=1; |
keskarketan | 0:6593a6faef38 | 37 | fwdd=0; |
keskarketan | 0:6593a6faef38 | 38 | break; |
keskarketan | 0:6593a6faef38 | 39 | |
keskarketan | 0:6593a6faef38 | 40 | case 's': //reverse |
keskarketan | 0:6593a6faef38 | 41 | |
keskarketan | 0:6593a6faef38 | 42 | fwdA=0; |
keskarketan | 0:6593a6faef38 | 43 | fwdB=1; |
keskarketan | 0:6593a6faef38 | 44 | fwdc=0; |
keskarketan | 0:6593a6faef38 | 45 | fwdd=1; |
keskarketan | 0:6593a6faef38 | 46 | |
keskarketan | 0:6593a6faef38 | 47 | break; |
keskarketan | 0:6593a6faef38 | 48 | |
keskarketan | 0:6593a6faef38 | 49 | |
keskarketan | 0:6593a6faef38 | 50 | case 'b': //brake |
keskarketan | 0:6593a6faef38 | 51 | fwdA=0; |
keskarketan | 0:6593a6faef38 | 52 | fwdB=0; |
keskarketan | 0:6593a6faef38 | 53 | fwdc=0; |
keskarketan | 0:6593a6faef38 | 54 | fwdd=0; |
keskarketan | 0:6593a6faef38 | 55 | break; |
keskarketan | 0:6593a6faef38 | 56 | |
keskarketan | 0:6593a6faef38 | 57 | case 'a': // left turn |
keskarketan | 0:6593a6faef38 | 58 | fwdA=1; |
keskarketan | 0:6593a6faef38 | 59 | fwdB=0; |
keskarketan | 0:6593a6faef38 | 60 | fwdc=0; |
keskarketan | 0:6593a6faef38 | 61 | wait(1); |
keskarketan | 0:6593a6faef38 | 62 | fwdc = 1; |
keskarketan | 0:6593a6faef38 | 63 | fwdd=0; |
keskarketan | 0:6593a6faef38 | 64 | |
keskarketan | 0:6593a6faef38 | 65 | |
keskarketan | 0:6593a6faef38 | 66 | break; |
keskarketan | 0:6593a6faef38 | 67 | |
keskarketan | 0:6593a6faef38 | 68 | case 'd': //right turn |
keskarketan | 0:6593a6faef38 | 69 | fwdA=0; |
keskarketan | 0:6593a6faef38 | 70 | fwdB=0; |
keskarketan | 0:6593a6faef38 | 71 | fwdc=1; |
keskarketan | 0:6593a6faef38 | 72 | fwdd=0; |
keskarketan | 0:6593a6faef38 | 73 | break; |
keskarketan | 0:6593a6faef38 | 74 | |
keskarketan | 0:6593a6faef38 | 75 | //Servo 1 |
keskarketan | 0:6593a6faef38 | 76 | |
keskarketan | 0:6593a6faef38 | 77 | case '1': |
keskarketan | 0:6593a6faef38 | 78 | p1 = 0; |
keskarketan | 0:6593a6faef38 | 79 | wait(1); |
keskarketan | 0:6593a6faef38 | 80 | break; |
keskarketan | 0:6593a6faef38 | 81 | case '2': |
keskarketan | 0:6593a6faef38 | 82 | p1 = 0.5; |
keskarketan | 0:6593a6faef38 | 83 | wait(1); |
keskarketan | 0:6593a6faef38 | 84 | break; |
keskarketan | 0:6593a6faef38 | 85 | case '3': |
keskarketan | 0:6593a6faef38 | 86 | p1 = 1; |
keskarketan | 0:6593a6faef38 | 87 | wait(1); |
keskarketan | 0:6593a6faef38 | 88 | break; |
keskarketan | 0:6593a6faef38 | 89 | //Servo 2 |
keskarketan | 0:6593a6faef38 | 90 | case '4': |
keskarketan | 0:6593a6faef38 | 91 | p2 = p2 + 0.1; |
keskarketan | 0:6593a6faef38 | 92 | wait(1); |
keskarketan | 0:6593a6faef38 | 93 | break; |
keskarketan | 0:6593a6faef38 | 94 | case '5': |
keskarketan | 0:6593a6faef38 | 95 | p2 = 0.5; |
keskarketan | 0:6593a6faef38 | 96 | wait(1); |
keskarketan | 0:6593a6faef38 | 97 | break; |
keskarketan | 0:6593a6faef38 | 98 | case '6': |
keskarketan | 0:6593a6faef38 | 99 | p2 =p2 - 0.1; |
keskarketan | 0:6593a6faef38 | 100 | wait(1); |
keskarketan | 0:6593a6faef38 | 101 | break; |
keskarketan | 0:6593a6faef38 | 102 | |
keskarketan | 0:6593a6faef38 | 103 | //Servo 3 |
keskarketan | 0:6593a6faef38 | 104 | case '7': |
keskarketan | 0:6593a6faef38 | 105 | p3 = 0; |
keskarketan | 0:6593a6faef38 | 106 | wait(1); |
keskarketan | 0:6593a6faef38 | 107 | break; |
keskarketan | 0:6593a6faef38 | 108 | case '8': |
keskarketan | 0:6593a6faef38 | 109 | p3 = 0.5; |
keskarketan | 0:6593a6faef38 | 110 | wait(1); |
keskarketan | 0:6593a6faef38 | 111 | break; |
keskarketan | 0:6593a6faef38 | 112 | case '9': |
keskarketan | 0:6593a6faef38 | 113 | p3 = 1; |
keskarketan | 0:6593a6faef38 | 114 | wait(1); |
keskarketan | 0:6593a6faef38 | 115 | break; |
keskarketan | 0:6593a6faef38 | 116 | |
keskarketan | 0:6593a6faef38 | 117 | } |
keskarketan | 0:6593a6faef38 | 118 | |
keskarketan | 0:6593a6faef38 | 119 | s1 = p1; |
keskarketan | 0:6593a6faef38 | 120 | s2 = p2; |
keskarketan | 0:6593a6faef38 | 121 | s3= p3; |
keskarketan | 0:6593a6faef38 | 122 | |
keskarketan | 0:6593a6faef38 | 123 | } |
keskarketan | 0:6593a6faef38 | 124 | } |