Paso 5: Paso 5 - ahora tiempo al programa!
Esto es realmente la diversión parte; el cielo del límite cuando se trata de programar tu J-Bot. Puede programar previamente la ruta a la máquina del caramelo de oficina o pote del café que su compañero de oficina hacer un pick-up. Una cámara web para mirar alrededor de las paredes de la cabina alta, añadir altavoces para transmitir música, agregar miembros y un mando a distancia para recuperar tus gadgets favoritos. J-Bot está esperando en su imaginación a correr simplemente botty.
Primero usted necesitará descargar el software de Arduino. A continuación Descargue la biblioteca de software Arduino pasos/Servo y siga las instrucciones de cómo poner la biblioteca en su respectiva carpeta.
A continuación, abra el software de Arduino y pegar el código.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#include < AFMotor.h > / / permite a la biblioteca de Motor
#include < Servo.h > / / permite la librería Servo
Servo PingServo;
Motor1(1) de AF_DCMotor; Motor 1 está conectado al puerto 1 el escudo del motor
Motor2(2) de AF_DCMotor; Motor 2 está conectado al puerto 2 en el escudo del motor
int minSafeDist = 11; Distancia mínima para el sensor ping saber cuándo recurrir
int pingPin = A0; Sensor ping está conectado al puerto A0
int centerDist, leftDist, rightDist, backDist; Definir centro de variables, izquierda, derecha y distancia
larga duración, pulgadas, cm; Definir las variables para el sensor Ping
void setup() {}
PingServo.attach(10); Servo es conectado al pin 10 en el protector de motor
PingServo.write(90); Centre el sensor Ping (pone en 90 grados)
motor1.SETSPEED(215); Ajusta la velocidad del primer motor (a 0, los motores se dan vuelta apagado 255 es el ajuste más rápido que eres capaz de usar, he usado 215 no presionar demasiado los motores.)
motor2.SETSPEED(215); Ajusta la velocidad del segundo motor (a 0, los motores se dan vuelta apagado 255 es el ajuste más rápido que eres capaz de usar, he usado 215 no presionar demasiado los motores.)
Serial.Begin(9600); Permite el Serial monitor para propósitos de depuración
Serial.println ("Serial prueba!"); Prueba de la comunicación Serial
}
void AllStop() {}
motor1.Run(release); Apaga el motor 1
motor2.Run(release); Apaga motor 2
}
void AllForward() {/ / hace que el robot hacia adelante
motor1.Run(Forward); Motor 1 se pone en marcha
motor2.Run(Forward); El motor 2 se pone en marcha
Serial.println ("adelantando"); Imprime una línea en el monitor serial
}
void turnRight() {/ / hace el robot a la derecha
motor2.Run(backward); Apaga motor 2
motor1.Run(Forward); Motor 1 se pone en marcha
Delay(1600); Tiempo necesario para girar a la derecha (1,6 segundos)
Serial.println ("motores va derecha"); Imprime una línea en el monitor serial
}
void GoBack() {/ / hace el robot volver
motor2.Run(backward); Motor 2 vuelve
motor1.Run(backward); Motor 1 vuelve
Delay(1600); Tiempo requerido para volver (1,6 segundos)
Serial.println("Backward"); Imprime una línea en el monitor serial
}
void turnLeft() {/ / hace el robot de ir a la izquierda
motor2.Run(Forward); El motor 2 se pone en marcha
motor1.Run(backward); apaga el motor 1
Delay(1600); Tiempo necesario para girar a la izquierda (1.6) segundos
Serial.println ("motores va izquierda"); / / imprime una línea en el monitor serial
}
Comienza el bucle para decidir qué hacer
void loop()
{
LookAhead();
Serial.Print(inches);
Serial.println ("pulgadas"); Imprime una línea en el monitor serial
Si (pulgadas > = minSafeDist) / * si las pulgadas frente a un objeto es mayor o igual a la distancia de seguridad mínima (11 pulgadas), reaccionan * /
{
AllForward(); Las ruedas de adelante
Delay(110); Espere 0,11 segundos
} else / / si no:
{
AllStop(); Detener todos los motores
LookAround(); Compruebe el entorno de la mejor ruta
if(rightDist > leftDist) / / si la distancia correcta es mayor que la distancia de la izquierda, gire a la derecha
{
turnRight();
} else if (leftDist > rightDist) / / si la distancia izquierda es mayor que la distancia correcta, gire a la izquierda
{
turnLeft();
} else if (leftDist & & rightDist < minSafeDist) / / si la distancia izquierda y derecha es menor que la mínima segura distancia (11 pulgadas) volver
{
GoBack();
}
}
}
be larga sin signo {}
pinMode (pingPin, salida); Hacer el Pingpin salida
digitalWrite (pingPin, LOW); Enviar un pulso bajo
delayMicroseconds(2); Espere dos microsegundos
digitalWrite (pingPin, HIGH); Enviar un pulso de alta
delayMicroseconds(5); esperar 5 segundos de micro
digitalWrite (pingPin, LOW); Enviar un pulso bajo
pinMode(pingPin,INPUT); Pingpin a la entrada del interruptor
duración = pulseIn (pingPin, HIGH); Escuchar para eco
/ * Convertir segundos micro pulgadas
-------------------------------------*/
pulgadas = microsecondsToInches(duration);
cm = microsecondsToCentimeters(duration);
}
largo microsecondsToInches (largo microsegundos) / / convierte el tiempo en una distancia
{
volver microsegundos / 74 / 2;
}
largo microsecondsToCentimeters (largo microsegundos) / / convierte el tiempo en una distancia
{
volver microsegundos / 29 / 2;
}
void LookAhead() {}
PingServo.write(90); / / ángulo para mirar hacia adelante
Delay(175); Espere 0,175 segundos
be;
}
void LookAround() {}
PingServo.write(180); ángulo de 180°
Delay(320); Espere segundos 0,32
be;
rightDist = pulgadas; obtener la distancia correcta
PingServo.write(0); mirar al otro lado
Delay(620); Espere segundos 0,62
be;
leftDist = pulgadas; obtener la distancia izquierda
PingServo.write(90); ángulo de 90°
Delay(275); Espere 0,275 segundos
Imprime una línea en el monitor serial
Serial.Print ("RightDist:");
Serial.println(rightDist);
Serial.Print ("LeftDist:");
Serial.println(leftDist);
Serial.Print ("CenterDist:");
Serial.println(centerDist);
}
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------