Etape 11 : Écriture d’un code
Ici, le code est très simple !
A robot vous pouvez faire de nombreuses fonctions, comme aller de l’avant, déplacement vers l’arrière, rotation, etc. Vous pouvez trouver les fonctions.
Nous faisons ici un obstacle éviter er à l’aide de capteurs ultrasons. Nous; ll utilisation la bibliothèque servo dans le présent.
CODE :
---------------------
#include < servo.h >
const int RForward = 0 ; const int RBackward = 180 ; const int LForward = RBackward ; const int LBackward = RForward ; const int RNeutral = 90 ; const int LNeutral = 90 ; constantes pour moteur vitesse const int pingPin = 7 ; const int irPin = 0 ; Capteur infrarouge Sharp broche const int dangerThresh = 10 ; seuil d’obstacles (en cm) int leftDistance, rightDistance ; distances d’atterrissage sur chaque côté Servo panMotor ; Servo leftMotor ; Servo rightMotor ; déclarer la longue durée de moteurs ; temps nécessaire pour recevoir PING))) signal
void setup() {rightMotor.attach(11) ; leftMotor.attach(10) ; panMotor.attach(6) ; //attach moteurs à épingles correcte panMotor.write(90) ; //set PING))) pan au centre}
void loop() {int distanceFwd = ping() ; if (distanceFwd > dangerThresh) résulte //if chemin {leftMotor.write(LForward) ; rightMotor.write(RForward) ; //move avant} else //if chemin est bloqué {leftMotor.write(LNeutral) ; rightMotor.write(RNeutral) ; panMotor.write(0) ; delay(500) ; rightDistance = ping() ; panMotor.write(180) ; delay(700) ; //scan à la delay(500) droite, leftDistance = //scan à la delay(500) gauche ; panMotor.write(90) ; //return au centre delay(100), ping() ; compareDistance();}} void compareDistance() {si (leftDistance > rightDistance) //if gauche est moins obstruée {leftMotor.write(LBackward) ; rightMotor.write(RForward) ; //turn delay(500) gauche;} d’autre Si (rightDistance > leftDistance) //if droit est moins obstruée {leftMotor.write(LForward) ; rightMotor.write(RBackward) ; //turn delay(500) droite;} //if d’autre ils sont tout aussi entravé {leftMotor.write(LForward) ; rightMotor.write(RBackward) ; delay(1000) de //turn de 180 degrés;}}
long ping() {/ / envoyer des PING))) signal pulse pinMode (pingPin, sortie) ; digitalWrite (pingPin, basse) ; delayMicroseconds(2) ; digitalWrite (pingPin, HIGH) ; delayMicroseconds(5) ; digitalWrite (pingPin, basse) ; Obtenir la durée qu’il faut pour recevoir l’écho pinMode (pingPin, entrée) ; durée = pulseIn (pingPin, HIGH) ; Convertir la durée en durée retour distance / 29 / 2 ; }
------------