From 6f5da496ef46c8bd04db31c14923aaf1c53399b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Fri, 15 Nov 2019 00:46:35 +0100 Subject: Implement key to stop car at end of track --- Kod/bilbana/yc4/do_car.m | 14 ++++++++++++++ Kod/bilbana/yc4/main.m | 11 +++++++++++ 2 files changed, 25 insertions(+) diff --git a/Kod/bilbana/yc4/do_car.m b/Kod/bilbana/yc4/do_car.m index ce3d76c..5063e1d 100644 --- a/Kod/bilbana/yc4/do_car.m +++ b/Kod/bilbana/yc4/do_car.m @@ -33,6 +33,10 @@ if car.running == true end end +if car.stopped == true + return +end + %% READ INPUT FROM TRACK if car.running == true if car.lap ~= 0 @@ -66,6 +70,16 @@ if car.running == true end end + if car.stopping == true + % CHECK IF CAR IS AT THE END OF TRACK + if car.position > 19 % TODO idk + set_car_speed(car.num, 0); + car.stopped = true; + return + end + end + + %% CHECK POINT if car.new_check_point == true if car.new_lap == false % choose_position krachar vid nytt varv (seg 10) diff --git a/Kod/bilbana/yc4/main.m b/Kod/bilbana/yc4/main.m index 8ee18b2..6bd889c 100644 --- a/Kod/bilbana/yc4/main.m +++ b/Kod/bilbana/yc4/main.m @@ -35,6 +35,8 @@ car1 = struct; car1.num = 1; car1.running = false; car1.automatic = true; +car1.stopping = false; +car1.stopped = false; car1.segment = 1; car1.lap = 0; car1.lap_times = []; @@ -49,6 +51,8 @@ car2 = struct; car2.num = 2; car2.running = false; car2.automatic = true; +car2.stopping = false; +car2.stopped = false; car2.segment = 1; car2.lap = 0; car2.lap_times = []; @@ -103,6 +107,9 @@ while 1 if strcmp(get(hf,'currentcharacter'),'q') close(hf) break + elseif strcmp(get(hf, 'currentcharacter'), 's') + car1.stopping = true; + car2.stopping = true; end figure(hf) @@ -120,6 +127,10 @@ while 1 break; end + if car1.stopped == true && car2.stopped == true + break; + end + %% END OF LOOP while 1 %Whileloop med paus som k�rs till pausen �verskridit 0.07 sekunder % DISPLAY -- cgit v1.2.1 From 26277010960a2cb6aa11fb124c7502d6500dffc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Fri, 15 Nov 2019 10:42:42 +0100 Subject: add safety margins --- Kod/bilbana/yc4/do_car.m | 4 +++- Kod/bilbana/yc4/main.m | 8 ++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/Kod/bilbana/yc4/do_car.m b/Kod/bilbana/yc4/do_car.m index 5063e1d..ed8de89 100644 --- a/Kod/bilbana/yc4/do_car.m +++ b/Kod/bilbana/yc4/do_car.m @@ -72,7 +72,9 @@ if car.running == true if car.stopping == true % CHECK IF CAR IS AT THE END OF TRACK - if car.position > 19 % TODO idk + if car.position > (car.map(80, 1) / 100) - 0.8 % 80cm + disp(car.position) + disp((car.map(80, 1) / 100) - 300) set_car_speed(car.num, 0); car.stopped = true; return diff --git a/Kod/bilbana/yc4/main.m b/Kod/bilbana/yc4/main.m index 6bd889c..fcff963 100644 --- a/Kod/bilbana/yc4/main.m +++ b/Kod/bilbana/yc4/main.m @@ -121,13 +121,13 @@ while 1 if car1.stop == true disp('stopped by car 1'); break; - end - if car2.stop == true + end + if car2.stop == true disp('stopped by car 2'); break; - end + end - if car1.stopped == true && car2.stopped == true + if (~car2.running && car1.stopped) || (~car1.running && car2.stopped) || (car1.stopped && car2.stopped) break; end -- cgit v1.2.1