Paso 4: programación
EL CÓDIGO:
/*
> Diseñar un obstáculo evitando robot utilizando un Arduino NANO y PING de Parallax))) Sensor ultrasónico de distancia
> Versión 2
> M Zoran.
*/
Biblioteca de servo //include #include
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 de velocidad del motor
const int pingPin = 7;
const int dangerThresh = 10; umbral de obstáculos (en cm)
int leftDistance, rightDistance; Distancias a ambos lados
Servo panMotor;
Servo leftMotor;
Servo rightMotor; declarar los motores
de larga duración; tiempo que toma recibir PING))) señal
void setup()
{
rightMotor.attach(11);
leftMotor.attach(10);
panMotor.attach(6); Instale motores a pernos de adecuada
panMotor.write(90); pan juego PING))) al centro
}
void loop()
{
int distanceFwd = be;
Si (distanceFwd > dangerThresh) //if camino es claro
{
leftMotor.write(LForward);
rightMotor.write(RForward); avanzar
Delay(100);
}
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(RBackward); giro de 180 grados
Delay(1000);
}
}
be larga
{
Pulso de señal envía PING)))
pinMode (pingPin, salida);
digitalWrite (pingPin, LOW);
delayMicroseconds(2);
digitalWrite (pingPin, HIGH);
delayMicroseconds(5);
digitalWrite (pingPin, LOW);
Conseguir la duración que tarda en recibir el eco
pinMode (pingPin, entrada);
duración = pulseIn (pingPin, HIGH);
Convertir duración distancia
vuelta duración / 29 / 2;
}
Continuar más fotografías y la conclusión.