TP_presa

Dependencies:   SRF08 Servo mbed

Committer:
Remi95
Date:
Mon Jun 26 09:58:11 2017 +0000
Revision:
7:7d3c6326cbc3
Parent:
6:d61052f4ab1e
Child:
8:ea8db9aacdfb
trkl;

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 not 'o':
Remi95 7:7d3c6326cbc3 60 bState = 0;
Remi95 7:7d3c6326cbc3 61 case 'o':
Remi95 7:7d3c6326cbc3 62 bState = !bState;
Remi95 7:7d3c6326cbc3 63 if (not bState) {
Remi95 7:7d3c6326cbc3 64 bth.printf("stop\n\r");
Remi95 7:7d3c6326cbc3 65 robot.arreter();
Remi95 7:7d3c6326cbc3 66 }
Remi95 7:7d3c6326cbc3 67 break;
Remi95 7:7d3c6326cbc3 68 }
Remi95 7:7d3c6326cbc3 69 action='0';
Remi95 7:7d3c6326cbc3 70 }
Remi95 7:7d3c6326cbc3 71
Remi95 7:7d3c6326cbc3 72
Remi95 7:7d3c6326cbc3 73 ////////////////////////////////////////////
Remi95 7:7d3c6326cbc3 74
Remi95 7:7d3c6326cbc3 75 int main()
Remi95 7:7d3c6326cbc3 76 {
Remi95 7:7d3c6326cbc3 77 S2=0;
Remi95 7:7d3c6326cbc3 78 int visu;
Remi95 7:7d3c6326cbc3 79 bth.baud(57600);
Remi95 7:7d3c6326cbc3 80 bth.attach(&act);
Remi95 7:7d3c6326cbc3 81
Remi95 7:7d3c6326cbc3 82 servo.period(0.02);
Remi95 7:7d3c6326cbc3 83 while(1) {
Remi95 7:7d3c6326cbc3 84 bState = 1;
Remi95 7:7d3c6326cbc3 85 if (bState) {
Remi95 7:7d3c6326cbc3 86 switch (iState) {
Remi95 7:7d3c6326cbc3 87
Remi95 7:7d3c6326cbc3 88 case 0:
Remi95 7:7d3c6326cbc3 89
Remi95 7:7d3c6326cbc3 90 if (srf08.read() <60 and srf08.read() >0 ) {
Remi95 7:7d3c6326cbc3 91 iState = 1;
Remi95 7:7d3c6326cbc3 92 bth.printf("stop\n\r");
Remi95 7:7d3c6326cbc3 93 robot.arreter();
Remi95 7:7d3c6326cbc3 94 } else {
Remi95 7:7d3c6326cbc3 95 servo.write(0.08);
Remi95 7:7d3c6326cbc3 96 bth.printf("avancer\n\r");
Remi95 7:7d3c6326cbc3 97 robot.avancer(50);
Remi95 7:7d3c6326cbc3 98 }
Remi95 6:d61052f4ab1e 99 break;
Remi95 7:7d3c6326cbc3 100
Remi95 7:7d3c6326cbc3 101 case 1 :
Remi95 7:7d3c6326cbc3 102 servo.write(0.05);
Remi95 7:7d3c6326cbc3 103 wait (0.2);
Remi95 7:7d3c6326cbc3 104 aMes[1] = srf08.read();
Remi95 7:7d3c6326cbc3 105
Remi95 7:7d3c6326cbc3 106 servo.write(0.1);
Remi95 7:7d3c6326cbc3 107 wait (0.2);
Remi95 7:7d3c6326cbc3 108 aMes[2]= srf08.read();
Remi95 7:7d3c6326cbc3 109
Remi95 7:7d3c6326cbc3 110 servo.write(0.08);
Remi95 7:7d3c6326cbc3 111
Remi95 7:7d3c6326cbc3 112 if (aMes[1] <100 and aMes[1] >0) {
Remi95 7:7d3c6326cbc3 113 action = 'g';
Remi95 7:7d3c6326cbc3 114 bth.printf("gauche\n\r");
Remi95 7:7d3c6326cbc3 115 robot.tourner_gauche(70);
Remi95 7:7d3c6326cbc3 116 } else if (aMes[2] <100 and aMes[2] >0) {
Remi95 7:7d3c6326cbc3 117 bth.printf("droite\n\r");
Remi95 7:7d3c6326cbc3 118 robot.tourner_droite(70);
Remi95 7:7d3c6326cbc3 119 } else {
Remi95 7:7d3c6326cbc3 120 bth.printf("demi tour horaire\n\r");
Remi95 7:7d3c6326cbc3 121 robot.demi_tour_droite(100);
Remi95 7:7d3c6326cbc3 122 }
Remi95 7:7d3c6326cbc3 123 iState = 0;
Remi95 6:d61052f4ab1e 124 break;
Remi95 6:d61052f4ab1e 125 }
Remi95 6:d61052f4ab1e 126 }
Remi95 7:7d3c6326cbc3 127 visu=opt.read_u16();
Remi95 7:7d3c6326cbc3 128 visu=422006/(visu-3475);
Remi95 7:7d3c6326cbc3 129 bth.printf("Measured range : %.2f cm\n",srf08.read());
Remi95 6:d61052f4ab1e 130 }
Remi95 7:7d3c6326cbc3 131 }
Remi95 7:7d3c6326cbc3 132