Paso 5: Robot de evitación III GOduino objeto
Soy un gran fan de utilizar estuches de DVD como plataformas de robot. Este robot fue también montado en menos de una hora. Ya tenía la plataforma lista de un robot anterior así que todo lo que tenía que hacer es insertar el GOduino III y el sensor en un protoboard corto.
Usé de Pololu micro metal engranaje motor y el sensor de distancia ultrasonido HC-SR04. Hay muchos ejemplos de código para el sensor HC-SR04 y una librería de Arduino que funciona bien.
Este es el código utilizado en el vídeo de demostración:
Evitación del objeto de GOduino III usando el sensor de distancia HC-SR04
Este código es de dominio público
#include < Goduino.h >
#include < Ultrasonic.h >
Seleccione pernos para sensor de distancia HC-SR04
#define TRIGGER_PIN 12
#define ECHO_PIN 13
#define DISRANCE_TO_OBJECT 1300 / / este fue el valor óptimo para la detección de objetos mediante ensayo y error
Ultrasónico ultrasónico (TRIGGER_PIN, ECHO_PIN); Objeto de sensor HC-SR04 distancia
Goduino myrobot; Objeto de motor de GUduino III
int mspeed = 50; valor de la velocidad inicial de ambos motores
void setup()
{
Serial.Begin(9600);
myrobot.motorSpeed (50, 50); velocidad inicial de ambos motores
}
void loop()
{
Serial.println("---");
Float cmMsec = 0, inMsec = 0;
microsec largo = 0, avgDis = 0;
para (int i = 0; i < 10; i ++) {/ / promedio de 10 lecturas del sensor de distancia
microsec = ultrasonic.timing();
Serial.Print ("microsec:");
Serial.println(microsec);
avgDis += microsec;
}
avgDis = avgDis / 10;
Serial.Print ("avgDis:");
Serial.println(avgDis);
Si (avgDis > DISRANCE_TO_OBJECT) {/ / si no hay gama de dentro del objeto
myrobot.motorForward(1); avanzar
myrobot.motorForward(2);
}
Else / / pero si el objeto detectado dentro de gama
{
myrobot.motorStop(1); parada
myrobot.motorStop(2); parada
Delay(500); esperar
myrobot.motorBack(1); Atrás
myrobot.motorBack(2); Atrás
Delay(1000); esperar
myrobot.motorBack(1); a su vez
myrobot.motorForward(2);
Delay(500); esperar
myrobot.motorForward(1); Luego avanzar
myrobot.motorForward(2);
}
}