Paso 7: Juntándolo todo
Cargar el siguiente bosquejo:
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Arduino powered tanque RC por: Stanley Deakins
//
Esto es un bosquejo básico utilizado para alimentar un tanque RC utilizando un Arduino y un sensor de ping de seeedstudio. Utiliza un
Sensor ping de Parallax para navegar. Por favor, no dude en modificar este esbozo de todos modos te apetece. Esto es simplemente
lo suficiente como para que usted consiga comenzado en el proyecto. Agradecer y disfrutar.
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Construido sobre el código de ejemplo de Ping por Tom Igoe
Esta constante no va a cambiar. Es el número de pin
de salida del sensor:
const int pingPin = 7;
int pinI1 = 8; //define I1 interfaz
int pinI2 = 11; //define I2 de interfaz
int speedpinA = 9; //enable motor A
int pinI3 = 12; //define I3 interfaz
int pinI4 = 13; //define I4 interfaz
int speedpinB = 10; //enable motor B
spead de int = 127; //define el spead del motor
void setup()
{
pinMode(pinI1,OUTPUT);
pinMode(pinI2,OUTPUT);
pinMode(speedpinA,OUTPUT);
pinMode(pinI3,OUTPUT);
pinMode(pinI4,OUTPUT);
pinMode(speedpinB,OUTPUT);
}
forward() vacío
{
analogWrite (speedpinA, spead); //input un valor de simulación para establecer la velocidad
analogWrite(speedpinB,spead);
digitalWrite (pinI4, HIGH); //turn DC Motor B mover hacia la derecha
digitalWrite(pinI3,LOW);
digitalWrite (pinI2, LOW); //turn DC Motor A movimiento en sentido antihorario
digitalWrite(pinI1,HIGH);
}
void backward() / /
{
analogWrite (speedpinA, spead); //input un valor de simulación para establecer la velocidad
analogWrite(speedpinB,spead);
digitalWrite (pinI4, LOW); //turn DC Motor B movimiento en sentido antihorario
digitalWrite(pinI3,HIGH);
digitalWrite (pinI2, HIGH); //turn DC Motor A mover hacia la derecha
digitalWrite(pinI1,LOW);
}
void left() / /
{
analogWrite (speedpinA, spead); //input un valor de simulación para establecer la velocidad
analogWrite(speedpinB,spead);
digitalWrite (pinI4, HIGH); //turn DC Motor B mover hacia la derecha
digitalWrite(pinI3,LOW);
digitalWrite (pinI2, HIGH); //turn DC Motor A mover hacia la derecha
digitalWrite(pinI1,LOW);
}
void right() / /
{
analogWrite (speedpinA, spead); //input un valor de simulación para establecer la velocidad
analogWrite(speedpinB,spead);
digitalWrite (pinI4, LOW); //turn DC Motor B movimiento en sentido antihorario
digitalWrite(pinI3,HIGH);
digitalWrite (pinI2, LOW); //turn DC Motor A mover hacia la derecha
digitalWrite(pinI1,HIGH);
}
void stop() / /
{
digitalWrite(speedpinA,LOW); / / Unenble el pin, para detener el motor. Esto debe hacerse a ávido de dañar el motor.
digitalWrite(speedpinB,LOW);
Delay(1000);
}
void loop()
{
establecer las variables durante el ping,
y el resultado de la distancia en pulgadas y centímetros:
larga duración, pulgadas, cm;
El PING))) es accionado por un pulso alto de 2 o más microsegundos.
Dar un breve impulso de baja previamente para asegurar un pulso limpio alto:
pinMode (pingPin, salida);
digitalWrite (pingPin, LOW);
delayMicroseconds(2);
digitalWrite (pingPin, HIGH);
delayMicroseconds(5);
digitalWrite (pingPin, LOW);
El mismo pin se utiliza para leer la señal del PING))): un alto
pulso cuya duración es el tiempo (en microsegundos) de envío
del ping a la recepción de su eco de un objeto.
pinMode (pingPin, entrada);
duración = pulseIn (pingPin, HIGH);
convertir el tiempo en una distancia
pulgadas = microsecondsToInches(duration);
//
Si los objetos son menos de 12 pulgadas de distancia
el robot retrocede y gira a la derecha
durante 2 segundos
//
Si (pulgadas < 8) {}
freno de disco motor y 1/10 de segundo de pausa
STOP();
//
ajuste de motores al revés
//
backward();
Delay(700);
STOP();
//
ajuste de motores a
//
Left();
Delay(1100);
STOP();
}
//
Cuando nada es a 8"
el robot simplemente impulsa hacia delante
//
Else {}
//
Ajuste de motor de la unidad
//
Forward();
}
Delay(100);
}
microsecondsToInches(long microseconds) largo
{
Según ficha técnica de paralaje para el PING))), hay
73,746 microsegundos por pulgada (es decir, el sonido viaja a 1130 pies por
en segundo lugar). Esto da la distancia recorrida por el ping, saliente
y, por lo que dividimos por 2 para obtener la distancia del obstáculo.
Ver: http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf
volver microsegundos / 74 / 2;
}