Paso 6: Código de Arduino
En primer lugar usted necesita centrar sus servos de rotación continua. Centrando los, me refiero a dejar de girar libremente todo el tiempo. Escriba el código abajo y subirlo a tu arduino. Ahora dos cosas van a suceder. No se girará o los servos, que significa que ya están centrados, o que gira a cierta velocidad. Si gira debe hacer algo. Servos continuo tienen un tornillo en el lado donde están los cables. Tomar el destornillador y mientras que el servo gira tornillo o Desenroscar el tornillo poco a poco hasta que el servo se detenga. Esto es lo el centro. El freno (centro) es en el 90, acelerador a la izquierda es 0 y acelerador a derecha es de 180.
#include
Servo leftMotor;
Servo rightMotor;
void setup() {}
rightMotor.attach(11);
leftMotor.attach(10);
}
void loop() {}
rightMotor.write(90);
leftMotor.write(90);
}
Ahora estás listo para programar tu arduino robot!!!! Obtener ese código y subirlo a tu Arrduino!! Esperemos que todo va a funcionar perfectamente!
#include Biblioteca de servo //include
#define trigPin 7 //the trig pin del sensor de distancia
#define echoPin 4 //the pin de eco sensor de distancia
const int RForward = 120; la velocidad del servo, la velocidad máxima es de 180
const int RBackward = 60;
const int LForward = 60;
const int LBackward = 120;
const int RNeutral = 90; posición centrada
const int LNeutral = 90;
const int RightLightSensor = 0; declarar los pines analógicos para los fotorresistores
const int LeftLightSensor = 2;
const int collisionThresh = 15; umbral de obstáculos (en cm)
int SensorLeft;
int SensorRight;
int SensorDifference;
int leftDistance, rightDistance; Distancias a ambos lados
Servo panMotor; micro servo con el sensor de distancia
Servo leftMotor; declarar los motores
Servo rightMotor;
de larga duración; tiempo que toma recibir PING))) señal
void setup() {}
rightMotor.attach(11); Instale motores a pernos de adecuada
leftMotor.attach(10);
panMotor.attach(6);
panMotor.write(90); Centro el servo pan
pinMode (trigPin, salida);
pinMode (echoPin, entrada);
pinMode (LeftLightSensor, entrada);
pinMode (RightLightSensor, entrada);
}
void loop() {}
int distancia = be; llamar a la función de ping para obtener la distancia frente al robot
SensorLeft = 1023 - analogRead(LeftLightSensor); leer los fotorresistores
Delay(1);
SensorRight = 1023 - analogRead(RightLightSensor);
Delay(1);
SensorDifference = abs (SensorLeft - SensorRight);
Si (distancia > collisionThresh) //if camino claro es ser guiado de la luz
{
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);
}
else if (SensorDifference < 75) {//forward
leftMotor.write(LForward);
rightMotor.write(RForward);
Delay(500);
}
}
else //if camino es bloqueado {}
leftMotor.write(LNeutral);
rightMotor.write(RNeutral);
panMotor.write(0);
Delay(500);
rightDistance = be; analizar a la derecha
Delay(500);
panMotor.write(180);
Delay(700);
leftDistance = be; exploración a la izquierda
Delay(500);
panMotor.write(90); volver al centro
Delay(100);
compareDistance();
}
}
void compareDistance() {}
Si (leftDistance > rightDistance) //if izquierda es menos obstruida
{
leftMotor.write(LBackward);
rightMotor.write(RForward); Gire a la izquierda
Delay(500);
}
else if (rightDistance > leftDistance) //if derecho es menos obstruida
{
leftMotor.write(LForward);
rightMotor.write(RBackward); Gire a la derecha
Delay(500);
}
else //if que igualmente se obstruyeron
{
leftMotor.write(LForward);
rightMotor.write(RForward); giro de 180 grados
Delay(1000);
}
}
be largo {/ / envía PING))) señal de pulso
digitalWrite (trigPin, LOW);
delayMicroseconds(2);
digitalWrite (trigPin, HIGH);
delayMicroseconds(5);
digitalWrite (trigPin, LOW);
Conseguir la duración que tarda en recibir el eco
duración = pulseIn (echoPin, HIGH);
Convertir duración distancia
vuelta duración / 29 / 2;
}