ArduBot (5 / 8 steg)
Steg 5: sensorer
Här är ett par funktioner som jag definierade för PING-sensor:
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
osignerade långa varaktighet, tum, cm, dir; längd mäter tiden mellan pingar
lång minsafe = 15. minsta säkerhetsavstånd framför robot
int antal; används för att identifiera när roboten är i ett hörn
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
osignerade långa PING() {//triggers ping sensorn en gång och returnerar värdet
pinMode (pingPin, produktionen); Göra Pingpin att mata
digitalWrite (pingPin, låg); Skicka en låg puls
delayMicroseconds(2); vänta två mikrosekunder
digitalWrite (pingPin, hög); Skicka en hög puls
delayMicroseconds(5); vänta i 5 sekunder för mikro
digitalWrite (pingPin, låg); Skicka en låg puls
pinMode(pingPin,INPUT); Växla Pingpin att mata in
längd = pulseIn (pingPin, hög); lyssna efter echo
/ * Konvertera mikro sekunder till Inches
*/
tum = microsecondsToInches(duration);
cm = microsecondsToCentimeters(duration);
Serial.Print (cm);
Serial.Print ("CM");
Serial.println ();
returnera cm;
}
lång microsecondsToInches(long microseconds) {
återvända mikrosekunder / 74 / 2;
}
lång microsecondsToCentimeters(long microseconds) {
återvända mikrosekunder / 29 / 2;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
osignerade långa leftping () {//records avstånd till vänster om roboten och returnerar det till mitten
int kvar; används för att registrera avståndet mätt med PING)
(VÄNSTER);
fördröjning (420);
STOPPA ();
Delay(10);
Serial.Print ("vänster:");
vänster = PING ();
fördröjning (420);
(RÄTT);
fördröjning (420);
STOPPA ();
returnera vänster;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
osignerade långa rightping () {//records avstånd till höger om roboten och returnerar det till mitten
int rätt;
(RÄTT);
fördröjning (420);
STOPPA ();
fördröjning (10).
Serial.Print ("rätten:");
höger = PING ();
fördröjning (420);
(VÄNSTER);
fördröjning (420);
STOP();
returnera rätt;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
osignerade långa forwardping () {//essentiallhy PING
int mitten;
STOPPA ();
fördröjning (10).
Serial.Print ("mellersta:");
mittersta = PING ();
returnera mellersta;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
osignerade långa Välj () {//used att välja mellan våra två ping-funktioner
leftping();
forwardping();
rightping();
IF(leftping > rightping)
om (leftping > forwardping)
(VÄNSTER);
fördröjning (420);
STOP();
dir = forwardping ();
om (rightping > leftping)
om (rightping > forwardping) {
(RÄTT);
fördröjning (420);
STOP();
dir = forwardping ();
} annat
STOPPA ();
dir = forwardping ();
}
/////////////////////////////////////////////////////////////////////////////////////////////////////