Robot autónomo del Autonavigation (Arduino) (4 / 4 paso)

Paso 4: programación

Estamos usando el lenguaje de programación de Arduino Uno. Está basado en Java.
Aquí es nuestro código de ejemplo para navegación mediante matrices 2D. Interior de la rejilla de matriz 2D, tenemos de entrada un 0 o un 1. Un 1 representa un objeto o un obstáculo. Un 0 representa el espacio libre. El robot recorre el 0.

Navegación de red:

SE TRATA DE UN PROGRAMA DE UN ÁREA CON MATRICES 2D Y LUEGO NAVEGAR SÓLO A TRAVÉS DEL
CEROS PRESENTES. SENSORES ULTRASÓNICOS NO SE UTILIZAN AUNQUE SE INICIALIZAN.
LOS CODIFICADORES TAMBIÉN NO SE UTILIZAN PERO SE INICIALIZAN

Pranav

#include "Servo.h"

Motores
Motor1 servo;
Motor2 servo;

Codificadores rotativos
int encoderAPin = 4;              Izquierda / / perno para el encoderA rotatorio
int encoderBPin = 2;              Derecho / / perno para el encoderB rotatorio
int encoderAPosition = 0;                     contador de posición de encoderA
int encoderBPosition = 0;                     contador de posición de encoderB
int signalAInput1;                             entrada de señal 1 para encoderA
int signalAInput2;                             entrada de señal 2 para encoderA
int signalBInput1;                             entrada de señal 1 para encoderB
int signalBInput2;                             entrada de señal 2 para encoderB

servicio de localización de robot
0 es arriba
1 es correcto
2 es abajo
3 queda
int robotDirection = 2;

se trata de las coordenadas de la cuadrícula de Dónde está el robot
también es el x y y los índices de la matriz.
recordar que el array comienza en el índice 0.
int xcoordinate = 2;
int ycoordinate = 1;

pernos ultrasónicos
const int Trig_pin = 5;  PIN de entrada de pulso de disparo
const int Echo_pin = 6;   PIN para recibir eco OUPUT
de larga duración;            Cuánto tiempo tarda el sonido de rebote

pernos de motor
const int Motor1Pin = 9;  Lado izquierdo
const int Motor2Pin = 10; lado derecho

la matriz que realiza un seguimiento con
Esto puede ser un array de cualquier tamaño
sólo asegúrese de que el robot tiene un espacio libre para moverse a su posición inicial.
int arraything [6] [6] =
{
{1,1,1,1,1,1}
,
{1,1,0,1,0,1}
,
{1,1,0,1,0,1}
,
{1,1,0,1,0,1}
,
{1,1,0,1,1,1}
,
{1,1,1,0,1,1}
};

void setup () {}
Codificador rotatorio
pinMode (encoderAPin, entrada);
pinMode (encoderBPin, entrada);
Serial.Begin(9600);
Serial.println ("a partir de ahora...");
\

ultrasónico
pinMode (Trig_pin, salida);        Inicializa el pin de pulso como salida:
pinMode (Echo_pin, entrada);       inicializar el echo_pin pin como una entrada:

motorsmmmmmmmmm
motor1.Attach(Motor1Pin);
motor2.Attach(Motor2Pin);

}

En inglés, este programa considera que si hay algo delante de ella.
Si no, que se mueve recto. En caso afirmativo, comprueba su derecho.
Si su derecho es libre, se convierte de esa manera, o bien, comprueba su izquierda.
Si la izquierda está libre, se convierte de esa manera, o bien, da vuelta a 180 grados
y vuelve la forma en llegó.
//
Junto a do es encorporate principio y destino así como encontrar la ruta óptima
//
Último es utilizar los ultrasonidos con la rejilla.

void loop () {}

mientras (1 == 1) {}
Si (isFrontOpen() == true) {}
moveForward();
retrasar (2000);
}
otra cosa
Si (isRightOpen() == true) {}
turnRight();
retrasar (2000);
}
otra cosa
Si (isLeftOpen() == true) {}
turnLeft();
retrasar (2000);
}
Else {}
turnAround();
retrasar (2000);
}
}
}

Comprueba si hay algo justo en frente con las rejillas
Boolean isFrontOpen () {}
int nextNumber = getFrontNumber();
Si (nextNumber == 0) {}
verdaderas;
}
Else {}
devuelven el valor false;
}
}

Comprueba si hay algo a la derecha usando rejillas
Boolean isRightOpen() {}
int nextNumber = getRightNumber();
Si (nextNumber == 0) {}
verdaderas;
}
Else {}
devuelven el valor false;
}
}

Comprueba si hay algo a la izquierda usando rejillas
Boolean isLeftOpen() {}
int nextNumber = getLeftNumber();
Si (nextNumber == 0) {}
verdaderas;
}
Else {}
devuelven el valor false;
}
}

Se mueve hacia adelante.
void moveForward () {}
motor1.Write(180);
motor2.Write(0);

Serial.println("forward");
Si (robotDirection == 0)
ycoordinate = ycoordinate - 1;
Si (robotDirection == 1)
xcoordinate = xcoordinate + 1;
Si (robotDirection == 2)
ycoordinate = ycoordinate + 1;
Si (robotDirection == 3)
xcoordinate = xcoordinate - 1;
Delay (100);
/ * Serial.print("xcoordinate");
Serial.Print(xcoordinate);
Delay (500);
Serial.Print ("ycoordinate");
Serial.Print(ycoordinate);
Delay (500);
Serial.Print ("dirección robot:");
Serial.Print(robotDirection);
Delay(500);
Serial.println ();
Delay(1000);

*/
Delay(800);
}

Gira 90 grados a la derecha
turnRight nula () {}
motor1.Write (60);
motor2.Write (60);
Delay(178);
motor2.Write(95);
Delay(65);
motor1.Write(90);
Serial.println("Right");
Si (robotDirection == 0)
robotDirection = 1;
else if (robotDirection == 1)
robotDirection = 2;
else if (robotDirection == 2)
robotDirection = 3;
else if (robotDirection == 3)
robotDirection = 0;
Delay (500);
Serial.Print("xcoordinate");
Serial.Print(xcoordinate);
Delay (500);
Serial.Print ("ycoordinate");
Serial.Print(ycoordinate);
Delay (500);
Serial.Print ("dirección robot:");
Serial.Print(robotDirection);
Delay (500);
Serial.println();

Delay(1000);
}

Gira 90 grados a la izquierda
vacío de la izquierda () {}
motor1.Write(120);
motor2.Write(120);
Delay(325);
motor2.Write(95);
Delay(65);
motor1.Write(90);
Serial.println("left");
Si (robotDirection == 0)
robotDirection = 3;
else if (robotDirection == 1)
robotDirection = 0;
else if (robotDirection == 2)
robotDirection = 1;
else if (robotDirection == 3)
robotDirection = 2;
Delay (500);
Serial.Print("xcoordinate");
Serial.Print(xcoordinate);
Delay (500);
Serial.Print ("ycoordinate");
Serial.Print(ycoordinate);
Delay (500);
Serial.Print ("dirección robot:");
Serial.Print(robotDirection);
Delay(500);
Serial.println();
Delay(1000);
}

Gira 180 grados
Respuesta nula () {}
Delay(1000);
Serial.println("Around");
Si (robotDirection == 0)
robotDirection = 2;
else if (robotDirection == 1)
robotDirection = 3;
else if (robotDirection == 2)
robotDirection = 0;
else if (robotDirection == 3)
robotDirection = 1;
Delay (500);
Serial.Print("xcoordinate");
Serial.Print(xcoordinate);
Delay (500);
Serial.Print ("ycoordinate");
Serial.Print(ycoordinate);
Delay (500);
Serial.Print ("dirección robot:");
Serial.Print(robotDirection);
Delay(500);
Serial.println();

Delay(1000);
}

Obtiene el número en la cuadrícula de la derecha del espacio delante de ella.
int getFrontNumber() {}
Si (robotDirection == 0) {}
volver arraything [ycoordinate - 1] [xcoordinate];
}
Si (robotDirection == 1) {}
volver arraything [ycoordinate] [xcoordinate + 1];
}
Si (robotDirection == 2) {}
volver arraything [ycoordinate + 1] [xcoordinate];
}
Si (robotDirection == 3) {}
volver arraything [ycoordinate] [xcoordinate - 1];
}
}

Obtiene el número en la cuadrícula del espacio a la derecha de él.
int getRightNumber() {}
Si (robotDirection == 0) {}
volver arraything [ycoordinate] [xcoordinate + 1];

}
Si (robotDirection == 1) {}
volver arraything [ycoordinate + 1] [xcoordinate];

}
Si (robotDirection == 2) {}
volver arraything [ycoordinate] [xcoordinate - 1];
}
Si (robotDirection == 3) {}
volver arraything [ycoordinate - 1] [xcoordinate];
}
}

Obtiene el número en la cuadrícula del espacio a la izquierda de él.
int getLeftNumber() {}
Si (robotDirection == 0) {}
volver arraything [ycoordinate] [xcoordinate - 1];
}
Si (robotDirection == 1) {}
volver arraything [ycoordinate - 1] [xcoordinate];
}
Si (robotDirection == 2) {}
volver arraything [ycoordinate] [xcoordinate + 1];
}
Si (robotDirection == 3) {}
volver arraything [ycoordinate + 1] [xcoordinate];
}
}

Aquí es un programa de muestra para los sensores ultrasónicos. Este programa sólo evitará cualquier cosa y todo lo que se pone en el camino.
Incluido en el programa es la programación para un servo adicional simplemente girando hacia adelante y hacia atrás en la parte superior del robot. Si no están haciendo esto en su robot, ignorar esa parte del código, no debe tener ningún efecto en su programa.

ESTE CÓDIGO EVITA OBSTÁCULOS
QUE CUALQUIERA PUEDE ENCONTRAR UN OBSTÁCULO EN LA DERECHA O LA IZQUIERDA
POR LO TANTO, HEMOS PROGRAMADO PARA GIRAR A LA IZQUIERDA SI ENCUENTRA UN OBSTÁCULO A LA DERECHA
Y SI ENCONTRAMOS A LA IZQUIERDA A LA DERECHA

Pranav

/*
1 ultrasonido
Pin 5 dispara el pulso (cable amarillo)
PIN 6 recibe el eco (cable naranja)

2 ultrasonidos
PIN 7 dispara el pulso (cable amarillo)
Pin 8 recibe el eco (cable naranja)
*/

#include "Servo.h"
MotorR del servo;
MotorL servo;
Servo motores;

pernos ultrasónicos
Derecho de ultrasonidos
const int Trig1_pin = 5;  PIN de entrada de pulso de disparo
const int Echo1_pin = 6;   PIN para recibir eco OUPUT
largo duration1;           Cuánto tiempo tarda el sonido de rebote

Izquierda ultrasónico
const int Trig2_pin = 7;
const int Echo2_pin = 8;
largo duration2;

pernos de motor
const int MotorLPin = 2;    Izquierda
const int MotorRPin = 13;    Derecho

motor ultrasónico de spinning
const int MotorSpinPin = 3;
int spinCounter = 0;

detección o no
Boolean isARightWallThere = false;
Boolean isALeftWallThere = false;

que manera de convertir
Boolean correcto = true;

void setup() {}
Serial.Begin(9600);
Serial.println ("desde");
1 ultrasonido
pinMode (Trig1_pin, salida);        Inicializa el pin de pulso como salida:
pinMode (Echo1_pin, entrada);         inicializar el echo_pin pin como una entrada:
2 ultrasonidos
pinMode (7, salida);        Inicializa el pin de pulso como salida:
pinMode (Echo2_pin, entrada);         inicializar el echo_pin pin como una entrada:
motores
motorR.attach(MotorRPin);
motorL.attach(MotorLPin);
motorS.attach(MotorSpinPin);

}

void loop() {}
mientras (1 == 1) {}

Si (spinCounter < 2) {}
motorS.write(160);
}
Else {}
motorS.write(20);
}
Si (spinCounter > = 3) {}
spinCounter = 0;
}

spinCounter ++;

checkTheRightWall();
checkTheLeftWall();

Si (isARightWallThere == false & & isALeftWallThere == false) {}
motorR.write(120);
motorL.write(72);

}
Else {}

Si (isARightWallThere == true & & isALeftWallThere == true) {}

motorR.write(0);
motorL.write(180);
Delay(300);
motorR.write(80);
motorL.write(80);
Delay(500);
motorR.write(0);
motorL.write(180);

}

Else {}
Si (isARightWallThere == false & & isALeftWallThere == true) {}

motorR.write(50);
motorL.write(90);

}
Else {}
Si (isARightWallThere == true & & isALeftWallThere == false) {}

motorR.write(90);
motorL.write(140);
}

}

}

}

}
}

void checkTheRightWall () {}
digitalWrite (Trig1_pin, bajo);
delayMicroseconds(2);
digitalWrite (Trig1_pin, alto);
delayMicroseconds(10);
digitalWrite (Trig1_pin, bajo);
duration1 = pulseIn(Echo1_pin,10);
Serial.println ("Duration1:");
Serial.println (duration1, DEC);

Si ((duration1 > 4000 || duration1 == 0)) {}
isARightWallThere = false;
}
Else {}
isARightWallThere = true;
}

}

void checkTheLeftWall() {}
digitalWrite (7, bajo);
delayMicroseconds(2);
digitalWrite (7, alto);
delayMicroseconds(10);
digitalWrite (7, bajo);
duration2 = pulseIn(Echo2_pin,10);
Serial.println ("Duration2:");
Serial.println (duration2, DEC);

Si ((duration2 > 4000 || duration2 == 0)) {}
isALeftWallThere = false;
}
Else {}
isALeftWallThere = true;
}

}

Si tienes tiempo, revisa una de las páginas de mi amigo. Él es el que hizo toda la programación para nosotros.
Aquí está el enlace a su página:

Fin
Industrias, la chispa

Artículos Relacionados

Robot autónomo que ya tiene en su bolsillo!

Robot autónomo que ya tiene en su bolsillo!

En este tutorial quiero aprender algo, quizás cambiar de opinión. Y drones autónomos disponibles para todo el mundo.Simple pregunta es: ¿Qué necesitas hacer tu robot autónomo?.Respuesta:-GPS-Acelerómetro-Giroscopio-Sistema inalámbrico telemetría-Cáma
Chefbot: Un bricolaje móvil robot autónomo para servir comida en los hoteles

Chefbot: Un bricolaje móvil robot autónomo para servir comida en los hoteles

Como dice el titulo, vamos a ver cómo construir un robot móvil autónomo llamado Chefbot que es para servicio de alimentos y bebidas en hoteles y restaurantes.Este fue un proyecto de hobby y construí este robot después de ver un robot llamado Turtlebo
Morder el Robot autónomo obstáculos «Sanglier» (jabalí)

Morder el Robot autónomo obstáculos «Sanglier» (jabalí)

concepto GeneralNuestra primera idea fue crear un robot oruga capaz de subir escaleras y un montón de otros obstáculos, para llegar a una buena velocidad (alrededor de 10 o 15 km/h) mientras que la filmación y transmisión de datos. Se decidirá si pue
JAAR DIY - un Robot autónomo

JAAR DIY - un Robot autónomo

Concepto de JAAR no está haciendo casi un Rover.. .blindly como le digo y engañar... su más que haciendo un Robot... he incorporado la mayor parte de mi aprendizaje de los últimos 6 meses para este proyecto... hablando en serio yo soy apenas un princ
Desviación de obstáculo de Robot autónomo MICBot

Desviación de obstáculo de Robot autónomo MICBot

MICBot es un robot autónomo para detección de obstáculos y desviaciones y va alrededor,obras interiores o exteriores.Paso 1: Ultrasonido Sensor SFR05 Por lo tanto, esta solución utiliza el sensor de ultrasonidos como una medida de distancia y le perm
Cómo hackear un controlador inalámbrico de la Xbox para hacer un robot autónomo!

Cómo hackear un controlador inalámbrico de la Xbox para hacer un robot autónomo!

Introduction:Este proyecto surgió al tratar de hacer un robot autónomo de bajo costo para uso enEducación. La idea es que los estudiantes serían capaces de identificar con el controlador de Xboxy disfruta de hacking en algo mucho más interesante!Un d
Robot autónomo de Arduino (Land Rover / coche) Stage1Model2

Robot autónomo de Arduino (Land Rover / coche) Stage1Model2

Mediados agosto de 2014 - decidí seguir robótica y construir un robot humanoide con grandes.Este robot sería construida en varias etapas. La etapa 1 es construir un Land Rover. Modelo1 enStage1 fue el Land Rover sin microcontrolador Model2 es uno con
Construir un Robot autónomo de Wall-E

Construir un Robot autónomo de Wall-E

Hola! Después pide una kabillion, aquí tienes! Este robot está ejecutando el EZ-B disponible en http://www.ez-robot.comPrimero una pequeña introducción, ver el vide: http://www.youtube.com/watch?v=OJiMUzJHYFkComencé con el juguete titulado "Wall-E in
Robot autónomo con LinkitONE

Robot autónomo con LinkitONE

¿Siempre se pregunta cómo autónomos robots están hechos? ¿Quería hacer un proyecto fresco? ¿Tienes un tablero de Linkit? Entonces estás en el lugar correcto!Aquí estará haciendo un robot con LinkitONE con piezas robóticas y servomotores.Permite comen
Robot autónomo principiante (parcialmente)

Robot autónomo principiante (parcialmente)

Todos los no parcialmente programación del robot VI requiere spdt interruptores que pueden obtener fácilmente activados, pero no tengo ese lujo. Así que hice un simple y fácil de hacer robot parcialmente autónomo.Paso 1: Ir a buscar las cosas2 x moto
Primera siempre Real pan de jengibre Robot autónomo (demanda)

Primera siempre Real pan de jengibre Robot autónomo (demanda)

dos ingenieros no se deben dejar solos durante una tormenta de nieve con gingerbread y un microcontrolador.  Los siguientes documentación de los resultados:Se trata de un acantilado autónomo detección robot de pan de jengibre, comúnmente conocida com
DIY Robot autónomo inteligente (animal doméstico electrónico) /w Arduino

DIY Robot autónomo inteligente (animal doméstico electrónico) /w Arduino

Me encanta a todo tipo de robots especialmente autónoma o robots inteligentes, que tienen una inteligencia un poco más que evitar un obstáculo. Así que he decidido que voy construir mi propio robot inteligente barato tiene una estructura en la cámara
MJRoBot I - sencillos pasos para construir un robot autónomo.

MJRoBot I - sencillos pasos para construir un robot autónomo.

Hace unos meses, terminé mi primer curso de electrónica online. Fue una nueva experiencia, pero despertó en mí una vieja pasión mucho sueño, la electrónica!El curso era: EE40LX: Interfaces electrónicas, a través de la plataforma EDX y administrado po
Hexagonal araña insecto con un cerebro (robot autónomo)

Hexagonal araña insecto con un cerebro (robot autónomo)

en esto instruir capaz, le mostraré cómo transformar una araña normal error hexadecimal, un robot inteligente con sensores en él.Paso 1: Partes y materialesPartes:(1) Hex bug araña(2) un sensor de distancia por ultrasonidos Ping(3) un escudo de proto