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
Diff: main.cpp
- Revision:
- 13:9b6578fa1669
- Parent:
- 12:09932ddcb089
diff -r 09932ddcb089 -r 9b6578fa1669 main.cpp
--- 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