Étape 5: capteurs
Voici quelques fonctions que j’ai défini pour le capteur de PING :
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
unsigned longue durée, pouces, cm, dir ; durée mesure le temps entre les PINGs
minsafe long = 15 ; distance de sécurité minimale devant robot
int count ; utilisé pour aider à identifier lorsque le robot est dans un coin
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
unsigned long PING() {//triggers une fois le capteur de ping et retourne la valeur
pinMode (pingPin, sortie) ; Faire la Pingpin à la sortie
digitalWrite (pingPin, basse) ; Envoyer une impulsion faible
delayMicroseconds(2) ; attendez deux microsecondes
digitalWrite (pingPin, HIGH) ; Envoyer une impulsion de haute
delayMicroseconds(5) ; attendez 5 secondes micro
digitalWrite (pingPin, basse) ; Envoyer une impulsion faible
pinMode(pingPin,INPUT) ; passer la Pingpin à l’entrée
durée = pulseIn (pingPin, HIGH) ; Ecoute pour echo
/ * Convertir micro secondes en pouces
*/
po = microsecondsToInches(duration) ;
cm = microsecondsToCentimeters(duration) ;
Serial.Print (cm) ;
Serial.Print ("CM") ;
Serial.println () ;
retour cm ;
}
{microsecondsToInches(long microseconds) long
retourner les microsecondes / 74 / 2 ;
}
{microsecondsToCentimeters(long microseconds) long
retourner les microsecondes / 29 / 2 ;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
unsigned long leftping () {//records distance vers la gauche du robot et le renvoie vers le centre
int gauche ; utilisé pour enregistrer la distance mesurée par le PING ()
(DE GAUCHE) ;
retard (420) ;
STOP () ;
Delay(10) ;
Serial.Print ("gauche:") ;
gauche = PING () ;
retard (420) ;
(DE DROITE) ;
retard (420) ;
STOP () ;
retour gauche ;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
unsigned long rightping () {//records distance à la droite du robot et le renvoie vers le centre
droit int ;
(DE DROITE) ;
retard (420) ;
STOP () ;
retard (10) ;
Serial.Print ("droit:") ;
droite = PING () ;
retard (420) ;
(DE GAUCHE) ;
retard (420) ;
STOP() ;
retourner à droite ;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
unsigned long forwardping () {//essentiallhy PING
int moyen ;
STOP () ;
retard (10) ;
Serial.Print ("moyenne:") ;
moyenne = PING () ;
retour moyen ;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
unsigned long choisi () {//used à choisir entre nos fonctions deux ping
leftping() ;
forwardping() ;
rightping() ;
if(leftping > rightping)
Si (leftping > forwardping)
(DE GAUCHE) ;
retard (420) ;
STOP() ;
dir = forwardping () ;
Si (rightping > leftping)
Si (rightping > forwardping) {}
(DE DROITE) ;
retard (420) ;
STOP() ;
dir = forwardping () ;
} else
STOP () ;
dir = forwardping () ;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////