Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Revision 13:9b6578fa1669, committed 2019-06-08
- Comitter:
- dagon
- Date:
- Sat Jun 08 08:51:07 2019 +0000
- Parent:
- 12:09932ddcb089
- Commit message:
- strat antoine
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Sat Jun 08 02:29:30 2019 +0000 +++ b/main.cpp Sat Jun 08 08:51:07 2019 +0000 @@ -18,7 +18,7 @@ DigitalOut led1 (PA_5); DigitalOut led2 (PD_2); - +Timer timer; double x, y, theta, vG, vD; @@ -48,15 +48,14 @@ void movement_linear(int speed, int relative_distance_mm) { double starting_traveled_distance = motor.getTraveledDistance_mm(); - + if (relative_distance_mm > 0.0f) { while (motor.getTraveledDistance_mm() - starting_traveled_distance < relative_distance_mm) { motor.setSpeed(speed,speed); motor.getPosition (&x,&y, &theta); motor.getSpeed (&vG, &vD); } - } - else { + } else { while (motor.getTraveledDistance_mm() - starting_traveled_distance > relative_distance_mm) { motor.setSpeed(-speed,-speed); motor.getPosition (&x,&y, &theta); @@ -70,7 +69,8 @@ //speed entre 0 et 1300 //L'acceleration et la decelleration ne sont indispensab le qu'a partir des vitesses superieur a 300 //calcul de la distance parcourue lors de l'acceleration: (speed/100)*acceleration_distance_mm [en mm] -void movement_acceleration(int speed, int acceleration_distance_mm) { +void movement_acceleration(int speed, int acceleration_distance_mm) +{ int acceleration_steps = speed / 100.0f; for (int i = 0; i < acceleration_steps ; i++) { movement_linear(100*(i+1), acceleration_distance_mm); @@ -78,59 +78,132 @@ } //speed entre 0 et 1300 -void movement_deceleration(int speed, int deceleration_distance_mm) { +void movement_deceleration(int speed, int deceleration_distance_mm) +{ int acceleration_steps = speed / 100.0f; for (int i = acceleration_steps; i > 0 ; i--) { movement_linear(100*i, deceleration_distance_mm); } } -void automate_evitemment(int speed, int seuil_face, int seuil_cote) { +void end_game() +{ + motor.setSpeed(0, 0); + while (1) { + led1 = 1; + led2 = 0; + wait(0.3); + led1 = 0; + led2 = 1; + wait(0.3); + } +} + +void automate_evitemment(int speed, int seuil_face, int seuil_cote) +{ motor.setSpeed(speed, speed); - + double val_us_gauche = 0, val_us_face = 0, val_us_droite = 0; while (1) { + if (timer.read() > 80.0f) + end_game(); + if (UltraSon.isUSGReady()) val_us_gauche = UltraSon.readUSG(); if (UltraSon.isUSBReady()) val_us_face = UltraSon.readUSB(); if (UltraSon.isUSDReady()) val_us_droite = UltraSon.readUSD(); - + if (val_us_face < seuil_face) { movement_rotate(speed, 80); - } - else if (val_us_gauche < seuil_cote) { + } else if (val_us_gauche < seuil_cote) { movement_rotate(speed, -40); - } - else if (val_us_droite < seuil_cote) { + } else if (val_us_droite < seuil_cote) { movement_rotate(speed, 40); } - + motor.setSpeed(speed, speed); wait(0.005); } } + + + main () { + timer.start(); + motor.resetPosition(); - automate_evitemment(400, 50, 40); - while (1); + /*movement_acceleration(1000, 100); + movement_linear(1000, 1850 - 100*10 - 100*10); //bas + movement_deceleration(1000, 100);*/ - /*while (1) { - movement_acceleration(1300, 50); - movement_linear(1300, 1000); - movement_deceleration(1300, 30); - wait(0.5); - - movement_linear(300, 100); - - movement_rotate(200, 90); - wait(0.5); - - movement_acceleration(1300, -50); - movement_linear(1300, -1000); - movement_deceleration(1300, -30); - wait(0.5); - }*/ + movement_linear(300, 1850); //bas + wait(0.5); + + movement_rotate(200, -90); + wait(0.5); + + movement_linear(300, 2275); //mid + wait(0.5); + + /*movement_rotate(100, -47.5); + wait(0.5); + + movement_linear(300, 2950); //mid + wait(0.5);*/ + + movement_rotate(100, -30); + wait(0.5); + + movement_linear(300, 75); // riz + wait(0.25); + + movement_rotate(100, 60); + wait(0.25); + + movement_rotate(100, -60); + wait(0.25); + + movement_linear(300, 75); // riz + wait(0.25); + + movement_rotate(100, 60); + wait(0.25); + + movement_rotate(100, -60); + wait(0.25); + + movement_linear(300, 75); // riz + wait(0.25); + + movement_rotate(100, 60); + wait(0.25); + + movement_rotate(100, -60); + wait(0.25); + + movement_linear(300, 75); // riz + wait(0.25); + + movement_rotate(100, 60); + wait(0.25); + + movement_rotate(100, -60); + wait(0.25); + + movement_linear(300, 75); // riz + wait(0.25); + + movement_rotate(100, 60); + wait(0.25); + + movement_rotate(100, -30); + wait(0.25); + + automate_evitemment(400, 50, 40); + + while (1); + } \ No newline at end of file