Stap 3: Programing
de codering die ik gebruikte is ene
Jesper Birk
autonome auto
Gemaakt door Jesper Birk - 2014
int motorPin1 = 6; motor draad aangesloten op digital pin 5
int motorPin2 = 5; motor draad aangesloten op digital pin 6
int motorPin3 = 7; stuurinrichting motor draad aangesloten op digital pin 7
int motorPin4 = 8; stuurinrichting motor draad aangesloten op digital pin 8
int steeringMotorSpeed = 150; Stel standaard macht om te sturen naar de motor sturing
int avoidDistance = 25;
int endAvoidDistance = 30;
int goToReverseDistance = 45;
int reverseTime = 2000;
int fullTrottleMinDistance = 150;
int fullTrottleSpeed = 220;
int cruiseSpeed = 160;
int avoidSpeed = 120;
int reverseSpeed = 130;
int sensorDelay = 100; //
lange randNumber;
int avoidDirection = 1;
int avoidCirclesBeforeDirectionChange = 10;
int countDown = 1;
int distanceCountDown = 1;
#include "Ultrasonic.h"
Ultrasone ultrasonic(12,13);
int afstand = (ultrasone. Ranging(cm));
De Setup-methode wordt uitgevoerd zodra, wanneer de schets begint
VOID Setup {}
Initialiseer seriële communicatie met 9600 bits per seconde:
Serial.begin(9600);
randomSeed(analogRead(0));
Initialiseer de digitale pinnen als uitgang:
pinMode (motorPin1, OUTPUT);
pinMode (motorPin2, OUTPUT);
pinMode (motorPin3, OUTPUT);
pinMode (motorPin4, OUTPUT);
}
//////////// LOOP ////////////
void loop
{
Serial.println ("start lus");
Serial.println (ultrasone. Ranging(cm));
choseMode();
afstand = (ultrasone. Ranging(cm));
OMGEKEERDE MODUS / / /
Als (afstand < = goToReverseDistance) {}
avoidDirection = avoidDirection * -1;
while(Distance < avoidDistance) {}
Serial.println ("start omgekeerde");
if(avoidDirection == 1) {/ / schakelen unidirectioneel
analogWrite (motorPin3, steeringMotorSpeed);
digitalWrite (motorPin4, laag);
} else {/ /... of de andere manier
analogWrite (motorPin4, steeringMotorSpeed);
digitalWrite (motorPin3, laag);
}
analogWrite (motorPin2, reverseSpeed); motor - roteert achterwaarts
digitalWrite (motorPin1, laag);
delay(reverseTime); voor tijd instellen in reverseTime
delay(sensorDelay);
afstand = (ultrasone. Ranging(cm));
// }
digitalWrite (motorPin2, laag); Stop motoren
digitalWrite (motorPin3, laag);
digitalWrite (motorPin4, laag);
avoidDirection = avoidDirection * -1; switch sturen richting
afstand = (ultrasone. Ranging(cm));
}
///////////////////////////////////////////////
VERMIJD MODUS / / /
afstand = (ultrasone. Ranging(cm));
if(Distance < avoidDistance) {}
Serial.println ("start Vermijd");
afstand = (ultrasone. Ranging(cm));
countDown = avoidCirclesBeforeDirectionChange;
distanceCountDown = afstand;
terwijl (afstand < = endAvoidDistance & & afstand > goToReverseDistance) {}
if(avoidDirection == 1) {}
analogWrite (motorPin3, steeringMotorSpeed); Draai unidirectioneel
digitalWrite (motorPin4, laag);
} else {}
analogWrite (motorPin4, steeringMotorSpeed); of draai de andere kant
digitalWrite (motorPin3, laag);
}
analogWrite (motorPin1, avoidSpeed); motor draait
digitalWrite (motorPin2, laag); instellen van de Pin motorPin2 lage
delay(sensorDelay);
afstand = (ultrasone. Ranging(cm));
if(Distance < distanceCountDown) {countDown--;} / / als obstakel wordt steeds dichterbij - graaf tot het veranderen van richting
Als (countDown < 1) {}
avoidDirection = avoidDirection * -1; switch sturen richting
countDown = avoidCirclesBeforeDirectionChange;
distanceCountDown = afstand;
}
Serial.println(distance);
Serial.println(avoidDirection);
} / / end terwijl (Vermijd)
digitalWrite (motorPin3, laag);
digitalWrite (motorPin4, laag);
}
///////////////////////////////
CRUISE MODE / / /
afstand = (ultrasone. Ranging(cm));
terwijl (afstand > avoidDistance & & afstand < fullTrottleMinDistance) {}
analogWrite (motorPin1, cruiseSpeed); motor draait
digitalWrite (motorPin2, laag); instellen van de Pin motorPin2 lage
delay(sensorDelay);
afstand = (ultrasone. Ranging(cm));
Serial.println("Cruise");
Serial.println(distance);
} / / end terwijl
VOLLE SNELHEID MODUS / / /
afstand = (ultrasone. Ranging(cm));
while(Distance > fullTrottleMinDistance) {}
analogWrite (motorPin1, fullTrottleSpeed); motor draait
digitalWrite (motorPin2, laag); instellen van de Pin motorPin2 lage
delay(sensorDelay);
afstand = (ultrasone. Ranging(cm));
Serial.println("Full");
Serial.println(distance);
} / / end terwijl
Serial.println ("herstart lus");
Serial.println(distance);
}