TP_presa

Dependencies:   SRF08 Servo mbed

Committer:
Remi95
Date:
Mon Jul 03 09:06:53 2017 +0000
Revision:
9:53a6a4e0db9f
Parent:
8:ea8db9aacdfb
Child:
10:cf2719d4b93f
Switch auto OK

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Remi95 0:99cb324a2329 1 #include "mbed.h"
Remi95 6:d61052f4ab1e 2 #include "CAR.h"
Remi95 5:8c2101d3ecef 3 #include "SRF08.h"
Remi95 7:7d3c6326cbc3 4 #include "Servo.h"
Remi95 0:99cb324a2329 5
Remi95 7:7d3c6326cbc3 6 DigitalOut S2 (p11);
Remi95 7:7d3c6326cbc3 7 AnalogIn opt (p15);
Remi95 6:d61052f4ab1e 8 Serial bth(p13,p14);
Remi95 7:7d3c6326cbc3 9 //Serial sbt(p9, p10); // tx, rx
Remi95 7:7d3c6326cbc3 10 SRF08 srf08(p28, p27, 0xE0);
Remi95 7:7d3c6326cbc3 11 //Servo myservo(p26);
Remi95 7:7d3c6326cbc3 12
Remi95 7:7d3c6326cbc3 13 float aMes[]= {0,0,0};
Remi95 7:7d3c6326cbc3 14 PwmOut servo(p26);
Remi95 7:7d3c6326cbc3 15 int iState = 1;
Remi95 7:7d3c6326cbc3 16 bool bState =0;
Remi95 7:7d3c6326cbc3 17
Remi95 7:7d3c6326cbc3 18 char Adress = 128;
Remi95 7:7d3c6326cbc3 19 char action;
Remi95 6:d61052f4ab1e 20 CAR robot(p9,p10);
Remi95 6:d61052f4ab1e 21 //CAR robot;
Remi95 4:aafb0016ed84 22
Remi95 7:7d3c6326cbc3 23 void act()
Remi95 7:7d3c6326cbc3 24 {
Remi95 7:7d3c6326cbc3 25 action=bth.getc();
Remi95 7:7d3c6326cbc3 26 switch(action) {
Remi95 7:7d3c6326cbc3 27 case 'a':
Remi95 7:7d3c6326cbc3 28 bth.printf("avancer\n\r");
Remi95 7:7d3c6326cbc3 29 robot.avancer(70);
Remi95 7:7d3c6326cbc3 30 break;
Remi95 7:7d3c6326cbc3 31 case 's':
Remi95 7:7d3c6326cbc3 32 bth.printf("stop\n\r");
Remi95 7:7d3c6326cbc3 33 robot.arreter();
Remi95 7:7d3c6326cbc3 34 break;
Remi95 7:7d3c6326cbc3 35 case 'u':
Remi95 7:7d3c6326cbc3 36 bth.printf("arret\n\r");
Remi95 7:7d3c6326cbc3 37 robot.arreter();
Remi95 7:7d3c6326cbc3 38 break;
Remi95 7:7d3c6326cbc3 39 case 'r':
Remi95 7:7d3c6326cbc3 40 bth.printf("reculer\n\r");
Remi95 7:7d3c6326cbc3 41 robot.reculer(70);
Remi95 7:7d3c6326cbc3 42 break;
Remi95 7:7d3c6326cbc3 43 case 'd':
Remi95 7:7d3c6326cbc3 44 bth.printf("droite\n\r");
Remi95 7:7d3c6326cbc3 45 robot.tourner_droite(70);
Remi95 7:7d3c6326cbc3 46 break;
Remi95 7:7d3c6326cbc3 47 case 'g':
Remi95 7:7d3c6326cbc3 48 bth.printf("gauche\n\r");
Remi95 7:7d3c6326cbc3 49 robot.tourner_gauche(70);
Remi95 7:7d3c6326cbc3 50 break;
Remi95 7:7d3c6326cbc3 51 case 'h':
Remi95 7:7d3c6326cbc3 52 bth.printf("demi tour horaire\n\r");
Remi95 7:7d3c6326cbc3 53 robot.demi_tour_droite(100);
Remi95 7:7d3c6326cbc3 54 break;
Remi95 7:7d3c6326cbc3 55 case'l':
Remi95 7:7d3c6326cbc3 56 bth.printf("demi tour left\n\r");
Remi95 7:7d3c6326cbc3 57 robot.demi_tour_gauche(100);
Remi95 7:7d3c6326cbc3 58 break;
Remi95 7:7d3c6326cbc3 59 case 'o':
Remi95 7:7d3c6326cbc3 60 bState = !bState;
Remi95 9:53a6a4e0db9f 61 //iState = 0;
Remi95 7:7d3c6326cbc3 62 break;
Remi95 7:7d3c6326cbc3 63 }
Remi95 7:7d3c6326cbc3 64 action='0';
Remi95 7:7d3c6326cbc3 65 }
Remi95 7:7d3c6326cbc3 66
Remi95 7:7d3c6326cbc3 67
Remi95 7:7d3c6326cbc3 68 ////////////////////////////////////////////
Remi95 7:7d3c6326cbc3 69
Remi95 7:7d3c6326cbc3 70 int main()
Remi95 7:7d3c6326cbc3 71 {
Remi95 7:7d3c6326cbc3 72 S2=0;
Remi95 7:7d3c6326cbc3 73 int visu;
Remi95 7:7d3c6326cbc3 74 bth.baud(57600);
Remi95 7:7d3c6326cbc3 75 bth.attach(&act);
Remi95 8:ea8db9aacdfb 76 bState = 1;
Remi95 7:7d3c6326cbc3 77 servo.period(0.02);
Remi95 7:7d3c6326cbc3 78 while(1) {
Remi95 7:7d3c6326cbc3 79 if (bState) {
Remi95 7:7d3c6326cbc3 80 switch (iState) {
Remi95 7:7d3c6326cbc3 81
Remi95 7:7d3c6326cbc3 82 case 0:
Remi95 7:7d3c6326cbc3 83
Remi95 8:ea8db9aacdfb 84 if (srf08.read() <40 and srf08.read() >0 ) {
Remi95 7:7d3c6326cbc3 85 iState = 1;
Remi95 7:7d3c6326cbc3 86 bth.printf("stop\n\r");
Remi95 7:7d3c6326cbc3 87 robot.arreter();
Remi95 7:7d3c6326cbc3 88 } else {
Remi95 7:7d3c6326cbc3 89 servo.write(0.08);
Remi95 7:7d3c6326cbc3 90 bth.printf("avancer\n\r");
Remi95 7:7d3c6326cbc3 91 robot.avancer(50);
Remi95 7:7d3c6326cbc3 92 }
Remi95 6:d61052f4ab1e 93 break;
Remi95 7:7d3c6326cbc3 94
Remi95 7:7d3c6326cbc3 95 case 1 :
Remi95 7:7d3c6326cbc3 96 servo.write(0.05);
Remi95 8:ea8db9aacdfb 97 wait (0.4);
Remi95 7:7d3c6326cbc3 98 aMes[1] = srf08.read();
Remi95 7:7d3c6326cbc3 99
Remi95 8:ea8db9aacdfb 100 servo.write(0.095);
Remi95 8:ea8db9aacdfb 101 wait (0.4);
Remi95 7:7d3c6326cbc3 102 aMes[2]= srf08.read();
Remi95 7:7d3c6326cbc3 103
Remi95 7:7d3c6326cbc3 104 servo.write(0.08);
Remi95 8:ea8db9aacdfb 105
Remi95 8:ea8db9aacdfb 106 bth.printf("capt 1 : %.2f capt 2 : %.2f",aMes[1], aMes[2]);
Remi95 8:ea8db9aacdfb 107 //if (aMes[1] <80 and aMes[1] >0)
Remi95 8:ea8db9aacdfb 108 if (aMes[2]>40) {
Remi95 7:7d3c6326cbc3 109 action = 'g';
Remi95 7:7d3c6326cbc3 110 bth.printf("gauche\n\r");
Remi95 7:7d3c6326cbc3 111 robot.tourner_gauche(70);
Remi95 8:ea8db9aacdfb 112 //} else if (aMes[2] <80 and aMes[2] >0) {
Remi95 8:ea8db9aacdfb 113 } else if (aMes[1]>40) {
Remi95 7:7d3c6326cbc3 114 bth.printf("droite\n\r");
Remi95 7:7d3c6326cbc3 115 robot.tourner_droite(70);
Remi95 7:7d3c6326cbc3 116 } else {
Remi95 7:7d3c6326cbc3 117 bth.printf("demi tour horaire\n\r");
Remi95 7:7d3c6326cbc3 118 robot.demi_tour_droite(100);
Remi95 7:7d3c6326cbc3 119 }
Remi95 7:7d3c6326cbc3 120 iState = 0;
Remi95 6:d61052f4ab1e 121 break;
Remi95 6:d61052f4ab1e 122 }
Remi95 6:d61052f4ab1e 123 }
Remi95 7:7d3c6326cbc3 124 visu=opt.read_u16();
Remi95 7:7d3c6326cbc3 125 visu=422006/(visu-3475);
Remi95 7:7d3c6326cbc3 126 bth.printf("Measured range : %.2f cm\n",srf08.read());
Remi95 6:d61052f4ab1e 127 }
Remi95 7:7d3c6326cbc3 128 }
Remi95 7:7d3c6326cbc3 129