2018-08-22 10:47:45 +02:00
# include <CodeRacer.h>
2018-07-10 15:50:17 +02:00
# include <ESP32Servo.h>
2018-08-16 12:31:50 +02:00
# include "esp32-hal-ledc.h"
2018-07-10 15:50:17 +02:00
//----- Werte für den Ultraschallsensor -----
2018-08-16 12:31:50 +02:00
# define US_STOP_ABSTAND_CM 15 // Wenn der gemessene Abstand kleiner ist, hält der CodeRacer an
2018-07-10 15:50:17 +02:00
//----- Variablen, die wir brauchen um uns Werte zu merken ----
long abstand_vorn_cm , abstand_links_cm , abstand_rechts_cm ;
2018-08-22 10:47:45 +02:00
CodeRacer coderacer ;
2018-07-10 15:50:17 +02:00
//---- Hier startet der Code zum Einstellen aller wichtigen Dinge. Setup() wird einmal ausgeführt. ----
void setup ( ) {
// Monitor
Serial . begin ( 115200 ) ; // Serial Monitor aktivieren. Mit dem Monitor kann man sich Werte und Meldungen anzeigen lassen.
2018-08-22 10:47:45 +02:00
// CodeRacer initialisieren
coderacer . begin ( ) ;
2018-07-10 15:50:17 +02:00
2018-08-22 10:47:45 +02:00
coderacer . servo_links ( ) ;
delay ( 10 ) ;
coderacer . servo_rechts ( ) ;
delay ( 10 ) ;
coderacer . servo_mitte ( ) ;
2018-07-10 15:50:17 +02:00
}
//---- Hier startet unsere endlose Schleife - die immer wieder von vorn angefangen wird, wenn wir am Ende angekommen sind. Da ist unser "Fahr"Code drin, der den CodeRacer steuert
void loop ( ) {
2018-08-16 12:31:50 +02:00
2018-08-22 10:47:45 +02:00
// Abstand messen -> nach vorn ... um zu sehen, ob was passiert messen wir immer ... auch wenn der Racer nicht fahren soll
abstand_vorn_cm = coderacer . abstand_messen ( ) ;
// Abfragen ob der Racer fahren soll oder nicht ...
if ( true = = coderacer . start_stop ( ) ) {
2018-08-16 12:31:50 +02:00
// Abstandssensor schon verstellen ... dann hat er das bis zur nächsten Messung auch geschafft
2018-08-22 10:47:45 +02:00
coderacer . servo_schwenk ( ) ;
2018-08-16 12:31:50 +02:00
// Ist die Bahn frei?
if ( abstand_vorn_cm < US_STOP_ABSTAND_CM ) {
// Nein! Der Abstand nach vorn ist kleiner als erlaubt!
// Racer anhalten
2018-08-22 10:47:45 +02:00
coderacer . anhalten ( ) ;
2018-08-16 12:31:50 +02:00
// Nach links schauen!
2018-08-22 10:47:45 +02:00
coderacer . servo_links ( ) ;
2018-08-16 12:31:50 +02:00
// Abstand messen und merken.
2018-08-22 10:47:45 +02:00
abstand_links_cm = coderacer . abstand_messen ( ) ;
2018-08-16 12:31:50 +02:00
// Nach rechts schauen!
2018-08-22 10:47:45 +02:00
coderacer . servo_rechts ( ) ;
2018-08-16 12:31:50 +02:00
// Abstand messen und merken.
2018-08-22 10:47:45 +02:00
abstand_rechts_cm = coderacer . abstand_messen ( ) ;
2018-08-16 12:31:50 +02:00
// Welcher Abstand ist größer?
if ( abstand_links_cm > abstand_rechts_cm ) {
// Links ist mehr Platz!
2018-08-22 10:47:45 +02:00
coderacer . links ( ) ;
2018-08-16 12:31:50 +02:00
// Servo in die Mitte Stellen
2018-08-22 10:47:45 +02:00
coderacer . servo_mitte ( ) ;
2018-08-16 12:31:50 +02:00
}
else {
// Rechts ist mehr Platz!
2018-08-22 10:47:45 +02:00
coderacer . rechts ( ) ;
2018-08-16 12:31:50 +02:00
// Servo in die Mitte Stellen
2018-08-22 10:47:45 +02:00
coderacer . servo_mitte ( ) ;
2018-08-16 12:31:50 +02:00
}
2018-07-10 15:50:17 +02:00
}
else {
2018-08-16 12:31:50 +02:00
// Ja! Die Bahn ist frei
2018-08-22 10:47:45 +02:00
coderacer . vorwaerts ( ) ;
2018-07-10 15:50:17 +02:00
}
2018-08-22 10:47:45 +02:00
2018-07-10 15:50:17 +02:00
}
}