added doku
This commit is contained in:
parent
a1470a2b21
commit
1f2df893be
13 changed files with 61 additions and 14 deletions
BIN
Doku/CodeRacer_Rechnung_114378.pdf
Normal file
BIN
Doku/CodeRacer_Rechnung_114378.pdf
Normal file
Binary file not shown.
BIN
Doku/Coderace.pptx
Normal file
BIN
Doku/Coderace.pptx
Normal file
Binary file not shown.
BIN
Doku/blink_esp32.JPG
Normal file
BIN
Doku/blink_esp32.JPG
Normal file
Binary file not shown.
After Width: | Height: | Size: 65 KiB |
BIN
Doku/coderace.docx
Normal file
BIN
Doku/coderace.docx
Normal file
Binary file not shown.
BIN
Doku/coderace.pdf
Normal file
BIN
Doku/coderace.pdf
Normal file
Binary file not shown.
BIN
Doku/coderace2.docx
Normal file
BIN
Doku/coderace2.docx
Normal file
Binary file not shown.
BIN
Doku/coderace2.pdf
Normal file
BIN
Doku/coderace2.pdf
Normal file
Binary file not shown.
BIN
Doku/coderace3.pdf
Normal file
BIN
Doku/coderace3.pdf
Normal file
Binary file not shown.
BIN
Doku/coderace4.docx
Normal file
BIN
Doku/coderace4.docx
Normal file
Binary file not shown.
BIN
Doku/coderace_background.pdf
Normal file
BIN
Doku/coderace_background.pdf
Normal file
Binary file not shown.
Binary file not shown.
BIN
esp32_coderacer.zip
Normal file
BIN
esp32_coderacer.zip
Normal file
Binary file not shown.
|
@ -4,11 +4,15 @@
|
||||||
#include "esp32-hal-ledc.h"
|
#include "esp32-hal-ledc.h"
|
||||||
|
|
||||||
//----- Werte für den Ultraschallsensor -----
|
//----- Werte für den Ultraschallsensor -----
|
||||||
#define US_STOP_ABSTAND_CM 15 // Wenn der gemessene Abstand kleiner ist, hält der CodeRacer an
|
#define US_STOP_ABSTAND_CM 20 // Wenn der gemessene Abstand kleiner ist, hält der CodeRacer an
|
||||||
|
#define US_MIN_ABSTAND_LI_RE 8 // Wenn der Unterschied zwischen linkem und und rechtem Abstand kleiner ist, dann drehe in dieselbe Richtugn wie vorher weiter
|
||||||
|
#define MAX_ANZAHL_DREHUNGEN 10 // Wenn der Coderacer sich schon so oft gedreht hat ohne eine Stelle zu finden, wo es Platz gibt - fahren wir mal ein Stück rückwärts ...
|
||||||
|
|
||||||
//----- Variablen, die wir brauchen um uns Werte zu merken ----
|
//----- Variablen, die wir brauchen um uns Werte zu merken ----
|
||||||
long abstand_vorn_cm, abstand_links_cm, abstand_rechts_cm;
|
long abstand_vorn_cm, abstand_links_cm, abstand_rechts_cm;
|
||||||
|
enum drehrichtung {links=0, rechts};
|
||||||
|
drehrichtung drehung = links;
|
||||||
|
unsigned int anzahl_drehung = 0;
|
||||||
CodeRacer coderacer;
|
CodeRacer coderacer;
|
||||||
|
|
||||||
//---- Hier startet der Code zum Einstellen aller wichtigen Dinge. Setup() wird einmal ausgeführt. ----
|
//---- Hier startet der Code zum Einstellen aller wichtigen Dinge. Setup() wird einmal ausgeführt. ----
|
||||||
|
@ -24,6 +28,9 @@ void setup() {
|
||||||
coderacer.servo_rechts();
|
coderacer.servo_rechts();
|
||||||
delay(10);
|
delay(10);
|
||||||
coderacer.servo_mitte();
|
coderacer.servo_mitte();
|
||||||
|
|
||||||
|
anzahl_drehung = 0;
|
||||||
|
drehung = links;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -53,26 +60,66 @@ void loop() {
|
||||||
coderacer.servo_rechts();
|
coderacer.servo_rechts();
|
||||||
// Abstand messen und merken.
|
// Abstand messen und merken.
|
||||||
abstand_rechts_cm = coderacer.abstand_messen();
|
abstand_rechts_cm = coderacer.abstand_messen();
|
||||||
|
|
||||||
// Welcher Abstand ist größer?
|
|
||||||
if(abstand_links_cm > abstand_rechts_cm){
|
// Ist der Abstand links oder rechts groß genug genug?
|
||||||
// Links ist mehr Platz!
|
// Wenn nicht - wenn der Racer sich bisher noch nicht gedreht hat - fahre ein Stück rückwarts. Wenn der Racer sich gerade schon gedreht hat, drehe in dieselbe Richtung wie vorher.
|
||||||
coderacer.links();
|
if((abstand_links_cm < US_MIN_ABSTAND_LI_RE) && (abstand_rechts_cm < US_MIN_ABSTAND_LI_RE)){
|
||||||
// Servo in die Mitte Stellen
|
if(anzahl_drehung == 0){
|
||||||
coderacer.servo_mitte();
|
coderacer.rueckwaerts();
|
||||||
|
delay(300);
|
||||||
|
coderacer.anhalten();
|
||||||
|
//noch mal Abstand messen ...
|
||||||
|
coderacer.servo_links();
|
||||||
|
// Abstand messen und merken.
|
||||||
|
abstand_links_cm = coderacer.abstand_messen();
|
||||||
|
// Nach rechts schauen!
|
||||||
|
coderacer.servo_rechts();
|
||||||
|
// Abstand messen und merken.
|
||||||
|
abstand_rechts_cm = coderacer.abstand_messen();
|
||||||
|
}
|
||||||
|
if( anzahl_drehung > MAX_ANZAHL_DREHUNGEN ){
|
||||||
|
anzahl_drehung = 0;
|
||||||
|
} else {
|
||||||
|
anzahl_drehung ++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else{
|
|
||||||
// Rechts ist mehr Platz!
|
// wenn der Racer sich noch nicht gedreht hat (anzahl_drehung == 0) - oder gerade rückwärts gefahren ist (anzahl_drehung == 1) drehe jetzt dahin wo mehr Platz ist;
|
||||||
coderacer.rechts();
|
if(anzahl_drehung <= 1){
|
||||||
// Servo in die Mitte Stellen
|
// Welcher Abstand ist größer?
|
||||||
coderacer.servo_mitte();
|
if(abstand_links_cm > abstand_rechts_cm){
|
||||||
|
// Links ist mehr Platz!
|
||||||
|
drehung = links;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
// Rechts ist mehr Platz!
|
||||||
|
drehung = rechts;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
switch(drehung){
|
||||||
|
case links:
|
||||||
|
coderacer.links();
|
||||||
|
coderacer.servo_mitte();
|
||||||
|
break;
|
||||||
|
case rechts:
|
||||||
|
coderacer.links();
|
||||||
|
coderacer.servo_mitte();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
// Ja! Die Bahn ist frei
|
// Ja! Die Bahn ist frei
|
||||||
|
// Wenn die Bahn richtig frei ist, dann können wir den Zähler fürs drehen auf 0 setzen ...
|
||||||
|
if( abstand_vorn_cm > (US_STOP_ABSTAND_CM + US_MIN_ABSTAND_LI_RE)){
|
||||||
|
anzahl_drehung = 0;
|
||||||
|
}
|
||||||
coderacer.vorwaerts();
|
coderacer.vorwaerts();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
anzahl_drehung = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue