|
@@ -1,10 +1,10 @@
|
1
|
1
|
#include <Arduino.h>
|
2
|
2
|
#line 1 "c:\\Users\\Carolin\\Downloads\\VSCode\\Zumo32U4\\Zumo32U4\\Hauptprojekt\\Hauptprojekt.ino"
|
3
|
3
|
#line 1 "c:\\Users\\Carolin\\Downloads\\VSCode\\Zumo32U4\\Zumo32U4\\Hauptprojekt\\Hauptprojekt.ino"
|
4
|
|
-//Verfassser: Felix Stange 4056379 MET2016
|
5
|
|
-//Datum: 19.07.2017 erstellt, 01.02.2018 zuletzt geändert
|
6
|
|
-//Projekt: Der Zumo fährt automatisch zwischen 2 Linien ohne diese zu überfahren mithilfe der
|
7
|
|
-//Liniensensoren (3), ähnlich einer Spurhalteautomatik (heller Belag und dunkle Streifen).
|
|
4
|
+//Verfassser: Felix Stange, 4056379, MET2016
|
|
5
|
+//Datum: erstellt am 19.07.2017, zuletzt geändert am 06.02.2018
|
|
6
|
+//Projektbeschreibung: Der Zumo fährt automatisch zwischen 2 Linien ohne diese zu überfahren mithilfe
|
|
7
|
+//der Liniensensoren (3), ähnlich einer Spurhalteautomatik (heller Belag und dunkle Streifen).
|
8
|
8
|
//Außerdem werden Kollisionen verhindert durch Nutzung der vorderen Abstandssensoren. Kommt es
|
9
|
9
|
//dennoch zu einer Kollision, wird diese durch die Beschleunigungssensoren (LSM303) erkannt.
|
10
|
10
|
//Für den Überholvorgang werden die seitlichen Abstandssensoren und der Drehbewegungssensor (L3G)
|
|
@@ -49,7 +49,7 @@ uint16_t CycleTime = 0; //Zykluszeit
|
49
|
49
|
int maxSpeed = 200; //Maximale Geschwindigkeit (möglich 400)
|
50
|
50
|
char dir; //Fahrtrichtung, Ereignis
|
51
|
51
|
char report[200]; //Ausgabe
|
52
|
|
-int warning = 0; //1 zeigt Überhol-/Abbiegevorgang an
|
|
52
|
+String btData;
|
53
|
53
|
|
54
|
54
|
/*-----------------------------------------------------------------*/
|
55
|
55
|
|
|
@@ -80,13 +80,13 @@ void EncoderUpdate();
|
80
|
80
|
void Kollisionserkennung();
|
81
|
81
|
#line 238 "c:\\Users\\Carolin\\Downloads\\VSCode\\Zumo32U4\\Zumo32U4\\Hauptprojekt\\Hauptprojekt.ino"
|
82
|
82
|
void Hindernisumfahren();
|
83
|
|
-#line 321 "c:\\Users\\Carolin\\Downloads\\VSCode\\Zumo32U4\\Zumo32U4\\Hauptprojekt\\Hauptprojekt.ino"
|
|
83
|
+#line 320 "c:\\Users\\Carolin\\Downloads\\VSCode\\Zumo32U4\\Zumo32U4\\Hauptprojekt\\Hauptprojekt.ino"
|
84
|
84
|
void Abbiegen();
|
85
|
|
-#line 398 "c:\\Users\\Carolin\\Downloads\\VSCode\\Zumo32U4\\Zumo32U4\\Hauptprojekt\\Hauptprojekt.ino"
|
|
85
|
+#line 396 "c:\\Users\\Carolin\\Downloads\\VSCode\\Zumo32U4\\Zumo32U4\\Hauptprojekt\\Hauptprojekt.ino"
|
86
|
86
|
void Spurhalten();
|
87
|
|
-#line 445 "c:\\Users\\Carolin\\Downloads\\VSCode\\Zumo32U4\\Zumo32U4\\Hauptprojekt\\Hauptprojekt.ino"
|
|
87
|
+#line 443 "c:\\Users\\Carolin\\Downloads\\VSCode\\Zumo32U4\\Zumo32U4\\Hauptprojekt\\Hauptprojekt.ino"
|
88
|
88
|
void SerialOutput();
|
89
|
|
-#line 457 "c:\\Users\\Carolin\\Downloads\\VSCode\\Zumo32U4\\Zumo32U4\\Hauptprojekt\\Hauptprojekt.ino"
|
|
89
|
+#line 455 "c:\\Users\\Carolin\\Downloads\\VSCode\\Zumo32U4\\Zumo32U4\\Hauptprojekt\\Hauptprojekt.ino"
|
90
|
90
|
void loop();
|
91
|
91
|
#line 54 "c:\\Users\\Carolin\\Downloads\\VSCode\\Zumo32U4\\Zumo32U4\\Hauptprojekt\\Hauptprojekt.ino"
|
92
|
92
|
void LineSetup()
|
|
@@ -260,9 +260,9 @@ void EncoderUpdate()
|
260
|
260
|
void Kollisionserkennung()
|
261
|
261
|
{
|
262
|
262
|
dir = 'X';
|
263
|
|
- Serial1.println("Kollision erkannt");
|
264
|
|
- Serial1.println("1");
|
|
263
|
+ Serial1.println("Kollision");
|
265
|
264
|
ledRed(1);
|
|
265
|
+
|
266
|
266
|
motors.setSpeeds(0, 0);
|
267
|
267
|
delay(500);
|
268
|
268
|
while(lineValue[0] < 300 && lineValue[2] < 300)
|
|
@@ -276,8 +276,7 @@ void Kollisionserkennung()
|
276
|
276
|
void Hindernisumfahren()
|
277
|
277
|
{
|
278
|
278
|
dir = 'U';
|
279
|
|
- Serial1.println("Hindernis umfahren");
|
280
|
|
- Serial1.println("1");
|
|
279
|
+ Serial1.println("Hindernisumfahren");
|
281
|
280
|
ledYellow(1);
|
282
|
281
|
|
283
|
282
|
//Schritt 1: Spurwechsel links
|
|
@@ -361,7 +360,6 @@ void Abbiegen()
|
361
|
360
|
dir = 'A';
|
362
|
361
|
ledYellow(1);
|
363
|
362
|
Serial1.println("Abbiegen");
|
364
|
|
- Serial1.println("1");
|
365
|
363
|
|
366
|
364
|
//Kodierung analysieren
|
367
|
365
|
bool leftCode; //links => 1
|
|
@@ -507,15 +505,17 @@ void loop()
|
507
|
505
|
EncoderUpdate();
|
508
|
506
|
|
509
|
507
|
//Funktionsauswahl
|
510
|
|
- warning = Serial1.read();
|
511
|
|
- if(warning == 1) //verfügbare Funktionen bei laufenden Manövern
|
|
508
|
+ btData = Serial1.readString();
|
|
509
|
+ //verfügbare Funktionen bei laufenden Manövern
|
|
510
|
+ if(btData == "Abbiegen" || btData == "Hindernisumfahren" || btData == "Kollision")
|
512
|
511
|
{
|
513
|
512
|
maxSpeed = 100;
|
514
|
513
|
if(moveRate > 1000 || proxValue[1] > 4 || proxValue[2] > 4 || lineValue[0] > 1000 ||
|
515
|
514
|
lineValue[2] > 1000) motors.setSpeeds(0, 0);
|
516
|
515
|
else Spurhalten();
|
517
|
516
|
}
|
518
|
|
- else //verfügbare Funktionen im Normalfall
|
|
517
|
+ //verfügbare Funktionen im Normalfall
|
|
518
|
+ else
|
519
|
519
|
{
|
520
|
520
|
if(moveRate > 1000) Kollisionserkennung();
|
521
|
521
|
else if(proxValue[1] == 6 || proxValue[2] == 6) motors.setSpeeds(0, 0);
|