Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int echo = 10; //Sensor Pins
- int trigger = 7;
- int zeit = 0; //Variablen für die spätere berechnung der Zeit/Entfernung
- int strecke = 0;
- int mR = 13; // Motoren
- int mL = 12;
- int gR = 11; // Geschwindigkeit motoren
- int gL = 3;
- int bR = 8; // Bremsen
- int bL = 9;
- void setup() {
- pinMode(mR, OUTPUT); // Hier im Setup werden die Pin Modes für alle Nötigen Komponenten gewählt
- pinMode(mL, OUTPUT);
- pinMode(gR, OUTPUT);
- pinMode(gL, OUTPUT);
- pinMode(bR, OUTPUT);
- pinMode(bL, OUTPUT);
- pinMode(trigger, INPUT);
- pinMode(echo, OUTPUT);
- digitalWrite(trigger,LOW); //Reset des sensors um Fehler zu vermeiden
- }
- void loop() {
- digitalWrite(echo,HIGH); // Ultraschallwelle los senden
- delay(10);
- digitalWrite(echo,LOW); // Senden der UW stoppen
- zeit = pulseIn(trigger,HIGH); // Zeit bis der Schall zurück kommt speichern
- strecke = (zeit/2) * 0.03432; // Entfernung zu Hindernis berechnen
- if (strecke > 20) { // Wenn kein Hindernis in 20cm -> fahr
- digitalWrite(bL, LOW);
- digitalWrite(bR, LOW);
- digitalWrite(mR,HIGH);
- digitalWrite(mL,HIGH);
- analogWrite(gL, 255); // (Geschwindigkeit wird festgelegt)
- analogWrite(gR, 255);
- if (strecke <= 10) { // Wenn der Messwert kleiner als 10 cm ist -> halt an
- Serial.println("bremsung");
- digitalWrite(bL, HIGH); // hält an
- digitalWrite(bR, HIGH);
- digitalWrite(bL, LOW);
- digitalWrite(bR, LOW);
- digitalWrite(mL, HIGH);
- digitalWrite(mR, LOW); // 90 grad nach rechts drehen um zu prüfen ob es in diese Richtung weiter geht
- delay(285); // hier Zeit die für 90 grad drehung benötigt wird
- digitalWrite(bL, HIGH);
- digitalWrite(bR, HIGH);
- if (strecke > 30) { // Wenn es Weitergeht, fahr Los
- digitalWrite(bL, LOW);
- digitalWrite(bR, LOW);
- digitalWrite(mL,HIGH);
- digitalWrite(mR,HIGH);
- else {
- digitalWrite(bL, LOW); // Wenn es nicht weitergeht, 180 grad drehen und in diese Richtung fahren
- digitalWrite(bR, LOW);
- digitalWrite(mR,HIGH);
- digitalWrite(mL,LOW);
- delay(525); // Zeit für 180 drehung
- digitalWrite(bL, HIGH);
- digitalWrite(bR, HIGH);
- delay(100); // Kurze Bremsung nach der Drehung um zu weites Drehen zu vermeiden
- digitalWrite(bL, LOW);
- digitalWrite(bR, LOW);
- digitalWrite(mR, HIGH);
- digitalWrite(mL, HIGH);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement