added doku

This commit is contained in:
Fenoglio 2018-09-12 16:35:18 +02:00
parent a1470a2b21
commit 1f2df893be
13 changed files with 61 additions and 14 deletions

Binary file not shown.

BIN
Doku/Coderace.pptx Normal file

Binary file not shown.

BIN
Doku/blink_esp32.JPG Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

BIN
Doku/coderace.docx Normal file

Binary file not shown.

BIN
Doku/coderace.pdf Normal file

Binary file not shown.

BIN
Doku/coderace2.docx Normal file

Binary file not shown.

BIN
Doku/coderace2.pdf Normal file

Binary file not shown.

BIN
Doku/coderace3.pdf Normal file

Binary file not shown.

BIN
Doku/coderace4.docx Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
esp32_coderacer.zip Normal file

Binary file not shown.

View file

@ -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;
} }
} }