Stap 5: sensoren
Hier zijn een paar functies die ik heb gedefinieerd voor de PING-sensor:
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
niet-ondertekende lange duur, inch, cm, dir; duur meet de tijd tussen PINGs
lange minsafe = 15; minimale veiligheidsafstand tegenover robot
int count; gebruikt om te helpen identificeren wanneer de robot in een hoek is
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
unsigned long PING() {//triggers de sensor van de ping eenmaal en retourneert de waarde
pinMode (pingPin, OUTPUT); Maken van de Pingpin voor de uitvoer van
digitalWrite (pingPin, laag); Stuur een lage puls
delayMicroseconds(2); Wacht twee microseconden
digitalWrite (pingPin, hoge); Stuur een hoge pols
delayMicroseconds(5); wacht 5 micro seconden
digitalWrite (pingPin, laag); Stuur een lage puls
pinMode(pingPin,INPUT); Schakel de Pingpin in te voeren
duur = pulseIn (pingPin, hoge); luisteren voor de echo
/ * Micro seconden omzetten in Inches
*/
duim = microsecondsToInches(duration);
cm = microsecondsToCentimeters(duration);
Serial.Print (cm);
Serial.Print ("CM");
Serial.println ();
retourneren cm;
}
lange microsecondsToInches(long microseconds) {}
retourneren van microseconden / 74 / 2;
}
lange microsecondsToCentimeters(long microseconds) {}
retourneren van microseconden / 29 / 2;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
unsigned long leftping () {//records afstand aan de linkerkant van de robot en wordt hersteld naar het midden
int links; gebruikt voor het registreren van de afstand gemeten door de PING)
LINKS ();
vertraging (420);
STOPPEN ();
delay(10);
Serial.Print ("links:");
links = PING ();
vertraging (420);
RECHTS ();
vertraging (420);
STOPPEN ();
terug links;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
unsigned long rightping () {//records afstand tot het recht van de robot en wordt hersteld naar het midden
int recht;
RECHTS ();
vertraging (420);
STOPPEN ();
vertraging (10);
Serial.Print ("recht:");
rechts = PING ();
vertraging (420);
LINKS ();
vertraging (420);
STOP();
terug gelijk te hebben;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
unsigned long forwardping () {//essentiallhy PING
int midden;
STOPPEN ();
vertraging (10);
Serial.Print ("Midden:");
Midden = PING ();
keren midden;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
niet-ondertekende lang kiezen () {//used om te kiezen tussen onze twee ping functies
leftping();
forwardping();
rightping();
if(leftping > rightping)
Als (leftping > forwardping)
LINKS ();
vertraging (420);
STOP();
dir = forwardping ();
Als (rightping > leftping)
Als (rightping > forwardping) {}
RECHTS ();
vertraging (420);
STOP();
dir = forwardping ();
} else
STOPPEN ();
dir = forwardping ();
}
/////////////////////////////////////////////////////////////////////////////////////////////////////