![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
TP_presa
Dependencies: SRF08 Servo mbed
main.cpp@7:7d3c6326cbc3, 2017-06-26 (annotated)
- 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?
User | Revision | Line number | New 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 |