A program to control a pick and place robot with 2 driving motors and 3 servo motors

Dependencies:   Servo mbed

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?

UserRevisionLine numberNew 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 }