Étape 6: Arduino Code
Vous devez tout d’abord centrer vos servos de rotation continue. En centrant leur, je veux dire pour les empêcher de tourner librement tout le temps. Tapez le code ci-dessous et de le transférer à votre arduino. Maintenant, deux choses vont se passer. Les deux servos tournera pas, ce qui signifie qu’ils sont déjà centrés ou ils tournera à une vitesse. Si elles tournent, vous devez faire quelque chose. Servos continus ont une vis sur le côté où sont leurs câbles. Prendre le tournevis et tandis que le servo tourne vis ou dévisser la vis un peu jusqu'à ce que le servo s’arrête. C’est comment vous Centrez. Le frein (Centre) est à 90, pleins gaz gauche est 0 et pleins gaz droite sont 180.
#include
Servo leftMotor ;
Servo rightMotor ;
void setup() {}
rightMotor.attach(11) ;
leftMotor.attach(10) ;
}
void loop() {}
rightMotor.write(90) ;
leftMotor.write(90) ;
}
Vous êtes maintenant prêt de programmer votre robot arduino ! Obtenir ce code et transférez-le sur votre Arrduino!! J’espère que tout va fonctionner parfaitement !
#include bibliothèque de servo //include
#define trigPin 7 //the trig broche du capteur de distance
#define echoPin 4 broches d’echo //the de capteur de distance
const int RForward = 120 ; la vitesse du servo, la vitesse maximale est de 180
const int RBackward = 60 ;
const int LForward = 60 ;
const int LBackward = 120 ;
const int RNeutral = 90 ; position centrée
const int LNeutral = 90 ;
const int RightLightSensor = 0 ; déclarer les broches analogiques pour les photo-résistances
const int LeftLightSensor = 2 ;
const int collisionThresh = 15 ; seuil d’obstacles (en cm)
int SensorLeft ;
int SensorRight ;
int SensorDifference ;
int leftDistance, rightDistance ; distance de chaque côté
Servo panMotor ; micro servo avec le capteur de distance à ce sujet
Servo leftMotor ; déclarer des moteurs
Servo rightMotor ;
longue durée ; temps nécessaire pour recevoir PING))) signal
void setup() {}
rightMotor.attach(11) ; fixer les moteurs aux broches appropriées
leftMotor.attach(10) ;
panMotor.attach(6) ;
panMotor.write(90) ; Centre du servo de pan
pinMode (trigPin, sortie) ;
pinMode (echoPin, entrée) ;
pinMode (entrée, LeftLightSensor) ;
pinMode (entrée, RightLightSensor) ;
}
void loop() {}
distance de l’int = ping() ; appelez la fonction ping pour obtenir la distance devant le robot
SensorLeft = 1023 - analogRead(LeftLightSensor) ; lire les photo-résistances
Delay(1) ;
SensorRight = 1023 - analogRead(RightLightSensor) ;
Delay(1) ;
SensorDifference = abs (SensorLeft - SensorRight) ;
Si (distance > collisionThresh) //if chemin est clairement être guidé par la lumière
{
Si (SensorLeft > SensorRight & & SensorDifference > 75) {//left
leftMotor.write(LBackward) ;
rightMotor.write(RForward) ;
Delay(250) ;
}
Si (SensorLeft < SensorRight & & SensorDifference > 75) {//right
leftMotor.write(LForward) ;
rightMotor.write(RBackward) ;
Delay(250) ;
}
ElseIf (SensorDifference < 75) {//forward
leftMotor.write(LForward) ;
rightMotor.write(RForward) ;
Delay(500) ;
}
}
d’autre //if chemin est bloqué {}
leftMotor.write(LNeutral) ;
rightMotor.write(RNeutral) ;
panMotor.write(0) ;
Delay(500) ;
rightDistance = ping() ; Scan vers la droite
Delay(500) ;
panMotor.write(180) ;
Delay(700) ;
leftDistance = ping() ; numérisation vers la gauche
Delay(500) ;
panMotor.write(90) ; retourner au centre
Delay(100) ;
compareDistance() ;
}
}
void compareDistance() {}
Si (leftDistance > rightDistance) //if gauche est moins obstruée
{
leftMotor.write(LBackward) ;
rightMotor.write(RForward) ; tourner à gauche
Delay(500) ;
}
ElseIf (rightDistance > leftDistance) //if droit est moins obstruée
{
leftMotor.write(LForward) ;
rightMotor.write(RBackward) ; tourner à droite
Delay(500) ;
}
d’autre //if qu'ils sont tout aussi obstrués
{
leftMotor.write(LForward) ;
rightMotor.write(RForward) ; virage de 180 degrés
Delay(1000) ;
}
}
long ping() {/ / envoyer des PING))) signal d’impulsion
digitalWrite (trigPin, basse) ;
delayMicroseconds(2) ;
digitalWrite (trigPin, HIGH) ;
delayMicroseconds(5) ;
digitalWrite (trigPin, basse) ;
Obtenir la durée qu’il faut pour recevoir l’écho
durée = pulseIn (echoPin, HIGH) ;
Convertir la durée en distance
durée de retour / 29 / 2 ;
}