Está en la página 1de 17

1

Prototipo MICROMOUSE.
Juan Sebastián Vasquez Ávila, Estudiante, UPS.
,Juan David Guncay Orellana, Estudiante, UPS.

Resumen—Este trabajo presenta el diseño y la im- II. M ARCO T E ÓRICO


plementación de un robot micromouse concebido para
la resolución autónoma de laberintos. La combinación
Para nuestra practica es importante conocer los
de componentes clave, como motores, llantas de goma, métodos que vamos a implementar.
Arduino Uno, módulo de control de motores L293N,
baterı́a de polı́mero de litio, sensores HC-SR04 y
un giroscopio, proporciona una plataforma versátil II-A. Arduino Uno
para la navegación eficiente en entornos complejos. El El Arduino Uno es una placa de desarrollo de
propósito fundamental de este proyecto es desarrollar hardware de código abierto que se destaca por
un robot capaz de explorar y mapear laberintos de
su versatilidad y accesibilidad en el ámbito de la
manera autónoma, aprovechando la interacción coor-
dinada de sus componentes. El Arduino Uno actúa electrónica y la programación. Equipado con un mi-
como el núcleo de control, orquestando la operación crocontrolador ATmega328P, el Arduino Uno ofre-
de los motores para garantizar un movimiento preciso ce una amplia gama de puertos de entrada/salida,
y ajustado. La sección siguiente detallará la arquitec- facilitando la conexión con diversos componentes
tura general del robot, destacando cómo cada compo-
electrónicos. Su diseño compacto y su interfaz fácil
nente desempeña un papel crucial en la consecución de
la tarea. Se abordarán también los desafı́os inherentes de usar hacen que sea ideal para principiantes y
a la resolución de laberintos y se propondrán posibles expertos por igual. Además, el Arduino Uno es
mejoras para futuras investigaciones y desarrollos programable a través de un entorno de desarrollo in-
en el campo de la robótica autónoma aplicada a la tegrado (IDE) basado en la simplicidad del lenguaje
solución eficiente de laberintos.
de programación C/C++, permitiendo la creación de
proyectos interactivos de manera eficiente. Con su
I. O BJETIVOS capacidad para interactuar con motores, sensores y
otros dispositivos, el Arduino Uno se ha convertido
Implementar algoritmos eficientes que permi-
en una herramienta fundamental en el mundo de la
tan al robot micromouse moverse de manera
electrónica y la robótica, impulsando la innovación
rápida y precisa a través del laberinto, mini-
y la creatividad en numerosos proyectos DIY.
mizando el tiempo total de exploración.
Desarrollar un sistema de fusión sensorial que
utilice los datos de los sensores HC-SR04 y
el giroscopio para obtener una comprensión
completa y precisa del entorno del robot,
facilitando la detección de obstáculos y la
orientación adecuada.
Diseñar e implementar estrategias algorı́tmicas
para la toma de decisiones del robot en función
de la información recopilada por los sensores.
Esto incluye la planificación de rutas óptimas
y la capacidad de realizar ajustes en tiempo
real según las condiciones del laberinto. Figura 1. Arduino UNO
2

II-B. MotoShied L293N de almacenamiento en comparación con otras tec-


nologı́as de baterı́as. Su baja tasa de autodescarga
El módulo de control de motores L293N es una
y su capacidad para mantener un voltaje constante
pieza clave en el diseño de sistemas robóticos y
durante la mayor parte de su ciclo de descar-
proyectos de mecatrónica que requieren el control
ga son caracterı́sticas que las hacen ideales para
preciso de motores. Este componente actúa como
aplicaciones de robótica y dispositivos electrónicos
un puente H, permitiendo el control bidireccio-
portátiles. Además, estas baterı́as son conocidas por
nal de hasta dos motores de corriente continua.
su peso ligero, lo que las convierte en una elección
Su diseño versátil facilita la conexión con micro-
eficiente para proyectos donde la movilidad y la
controladores como Arduino, ya que dispone de
eficiencia energética son cruciales.
entradas lógicas para dirigir el sentido de giro y
La baterı́a que usaremos para nuestro proyecto
la velocidad de los motores. El L293N también
es una baterı́a de 2 celdas de 3.7 voltios por lo
proporciona protección contra retroceso de voltaje,
que nuestra baterı́a entrega 7.4V y 1.8A
lo que contribuye a la durabilidad del sistema. Su
capacidad para manejar corrientes de hasta 600 mA
lo hace adecuado para una variedad de aplicaciones,
desde pequeños robots hasta dispositivos de control
de movimiento. En resumen, el módulo L293N se
destaca por su simplicidad de uso, su capacidad de
control bidireccional y su robustez, convirtiéndolo
en una elección popular para proyectos de robótica
y automatización.

Figura 3. Bateria de LiPo

II-D. Sensor ultrasónico HC-SR04


El sensor ultrasónico HC-SR04 es un dispositi-
vo ampliamente utilizado para medir distancias de
manera precisa y no invasiva. Este pequeño pero
poderoso sensor consta de un emisor ultrasónico y
un receptor, que trabajan en conjunto para calcular
Figura 2. MotoShied L293N la distancia basándose en el tiempo que tarda una
onda ultrasónica en viajar y regresar. Entre las ca-
racterı́sticas principales: cuenta con un rango tı́pico
II-C. La baterı́a de polı́mero de litio
de medición de 2 a 400 centı́metros,opera a una
La baterı́a de polı́mero de litio es una fuente frecuencia ultrasónica de alrededor de 40 kHz,tiene
de energı́a recargable que ha ganado prominencia un ángulo de haz de aproximadamente 15 grados,
gracias a sus caracterı́sticas distintivas. Este tipo de lo que significa que la onda ultrasónica se emite
baterı́a se destaca por su diseño delgado y flexible, en un patrón relativamente estrecho lo que permite
lo que facilita su integración en espacios reducidos una buena resolución en la medición de distancias.
y formas personalizadas. Además, las baterı́as de el HC-SR04 ofrece una alta precisión y respuesta
polı́mero de litio ofrecen una alta densidad de rápida. Su interfaz fácil de usar, que consiste en
energı́a, lo que se traduce en una mayor capacidad solo cuatro pines (VCC, Trig, Echo y GND), lo
3

convierte en una opción popular para proyectos de


electrónica y robótica.

Figura 5. Giroscopio MPU6050

Figura 4. Sensor HC-SR04 II-F. Micromotorreductor Pololu


Este es un micromotorreductor con una relacion
de 10:1 a una velocidad de 3100 RPM y un tor-
que de 0.22 Kg.cm, que a pesar de su pequeño
tamaño tiene grandes ventajas, la principal es que
los micromotorreductores se pueden encontrar con
diferentes configuraciones y tienen la misma forma
II-E. El giroscopio MPU6050 y tamaño, esto es muy útil cuando se requiere
cambiar el tipo de motor ya sea por que se quiere
tener una mayor o menor velocidad y/o un mayor o
Este giroscopio es un sensor inercial de seis menor torque. Los pueden utilizar por lo general en
ejes ampliamente utilizado que combina un ace- proyectos de competencia como los robots mini-
lerómetro y un giroscopio en un solo dispositivo.El sumo o los seguidores de lineas, o también para
MPU6050 es conocido por su versatilidad y pre- funciones de alguna maquina como dispensadores
cisión en la medición de movimiento. Ofrece tres de papel, cerraduras eléctricas, etc.
ejes de datos de aceleración y tres ejes de velocidad
angular, permitiendo una detección completa de la
orientación y movimiento de un objeto en el espacio
tridimensional. Con una resolución ajustable y una
interfaz de comunicación I2C, el MPU6050 se
integra fácilmente con microcontroladores y placas
de desarrollo como Arduino. Su capacidad para
proporcionar datos en tiempo real con una alta ve-
locidad de muestreo lo hace ideal para aplicaciones
como estabilización de vuelo en drones, control de
movimiento en robots y seguimiento de movimiento
en dispositivos portátiles. Además, su tamaño com-
pacto y eficiencia energética lo convierten en una
elección popular para una variedad de proyectos
electrónicos. Figura 6. Micromotorreductor Pololu
4

Estos pequeños motorreductores de CC con es-


cobillas están disponibles en una amplia gama de
relaciones de transmisión con diferentes motores;
motores de alta potencia de 12V y 6V con escobillas
de carbon de alta duración (HPCB) y motores de
6V de alta potencia (HP). A continuación se pre-
sentaran datos técnicos por lo que escogimos estos
motores, dichos datos son extraı́dos directamente
desde la datasheet del fabricante.

Figura 9. Medidas Micromotorreductor Pololu

II-G. Llantas Pololu 32x7mm

Debido a la lógica de funcionamiento del Mi-


cromouse en la fase de carrera, en donde el des-
plazamiento sin deslizamiento es crucial, se eligió
la goma como material de las llantas, dado su alto
coeficiente de fricción.Estas llantas están diseñadas
para ser fácilmente acopladas a motores y ejes
estándar por lo que están diseñadas para el tipo
de motor que estamos utilizando. Su construcción
liviana contribuye a la eficiencia energética y a
la capacidad de respuesta de los motores, lo que
resulta beneficioso para la movilidad y la manio-
Figura 7. Datos Tecnicos Micromotorreductor Pololu
brabilidad del vehı́culo.

Figura 8. LCaracteristicas Micromotorreductor Pololu Figura 10. Llantas Pololu 32x7mm


5

Figura 11. Medidas llantas Pololu 32x7mm Figura 12. Rueda omnidireccional

III. M ATERIALES Y M ÉTODOS


III-A. Materiales
II-H. Rueda omnidireccional Arduino Uno: Plataforma de control central
para el robot.
Motores y Llantas de Goma: Proporcionan la
En nuestro proyecto usamos dos motores junto locomoción necesaria.
con las llantas lo que nos permiten la movilidad, Módulo L293N: Controla los motores, permi-
para direccionar nuestro robot nos basaremos en tiendo el movimiento bidireccional.
una rueda omnidireccional y la modulación de Baterı́a de Polı́mero de Litio: Fuente de
PWM mediante programación. Usamos una rueda energı́a portátil y eficiente.
omnidireccional puesto que cuenta con las siguien- Sensores HC-SR04: Utilizados para la detec-
tes caracterı́sticas; Son componentes fundamenta- ción de obstáculos y navegación.
les en sistemas de movimiento que permiten la Giroscopio: Proporciona información sobre la
libre rotación y dirección en espacios reducidos. orientación del robot.
Incorporan rodamientos de alta calidad que per-
miten una rotación suave y sin fricción, lo que
IV. P ROCEDIMIENTO
facilita el movimiento omnidireccional y reduce
la resistencia al giro. Minimizan la resistencia al IV-A. Diagrama de bloques
desplazamiento lateral, lo que facilita maniobrar en El diagrama para PCB del circuito en considera-
espacios estrechos y realizar cambios de dirección ción se encuentra estructurado de manera eficiente
de manera eficiente,incorporan orificios y ranuras en cuatro bloques distintos, cada uno desempeñando
estandarizados que facilitan su fijación a estructuras un papel crucial en el funcionamiento global del
o chasis. La capacidad de girar 360 grados sobre su sistema. El bloque de Çontrol”se encarga de la
propio eje permite una movilidad omnidireccional, gestión y regulación de las operaciones del circuito,
lo que es esencial para sistemas que requieren asegurando una coordinación precisa y estable. El
cambios rápidos y precisos de dirección. Escogimos bloque de ”Potencia.asume la responsabilidad de
una rueda con las siguientes dimensiones, lo que no manejar las corrientes y tensiones significativas,
garantiza que junto con las llantas le den a nuestro garantizando una distribución eficaz de la energı́a
robot la suficiente altura y estabilidad. necesaria para el rendimiento óptimo del sistema.
6

Por otro lado, el bloque de .Alimentación”se dedica


a proporcionar la fuente primaria de energı́a, ase-
gurando una alimentación constante y confiable a
los componentes del circuito. Finalmente, el bloque
de ”Periféricos”se encarga de facilitar la interacción
del sistema con su entorno externo, gestionando la
comunicación y control de dispositivos adicionales.
Esta división estratégica en bloques permite una
comprensión clara y ordenada del diseño, facili-
tando la implementación, el mantenimiento y la
resolución de posibles problemas.

Figura 14. Diagrama de alimentación.

IV-A2. Bloque de Potencia: El diagrama de


potencia juega un papel fundamental en la gestión
eficiente de las corrientes y tensiones significativas
que fluyen a través del sistema esto principalmente
para motores. Este bloque se encarga de manejar la
energı́a eléctrica de manera que se asegure una dis-
tribución eficaz y segura para el rendimiento óptimo
de los componentes electrónicos del circuito. Para
este desempeño usaremos el componente TB6612
el cual nos permitirá manejar los motores tanto las
direcciones, enables y modular los PWM.
Figura 13. Diagrama de bloques.

IV-A1. Bloque de Alimentación: Este bloque se


encarga de gestionar la entrada de energı́a eléctrica,
que puede provenir de una baterı́a, fuente de alimen-
tación externa u otra fuente de energı́a. Su papel es
crucial para asegurar una alimentación constante y
confiable a los componentes del circuito, evitando
interrupciones o fluctuaciones que podrı́an afec-
tar el rendimiento del sistema.En nuestro esquema
de alimentación usaremos reguladores 7805 para
suplemenatar 5V y usaremos un gestor de carga
TP4056E que nos servirá para cargar la baterı́a y
equilibrarla puesto que es de 2 celdas. Figura 15. Diagrama de Potencia
7

IV-A3. Bloque de Control: Este bloque desem-


peña un papel crucial en la gestión y regulación de
las operaciones del sistema. Este bloque se encarga
de coordinar de manera precisa y estable el funcio-
namiento de los componentes electrónicos, garanti-
zando un control eficiente y coordinado del circuito
en su conjunto. Para esto usaremos el nucleo del
arduino el ATMega328 es un microcontrolador de la
familia AVR que destaca por su versatilidad y am-
plia adopción en proyectos electrónicos y sistemas
embebidos. Con una arquitectura AVR eficiente,
opera a velocidades de reloj de hasta 20 MHz y
cuenta con 32 KB de memoria Flash para almacenar
programas, 2 KB de memoria SRAM para datos
temporales, y 1 KB de memoria EEPROM para
almacenamiento no volátil. Equipado con pines
de E/S configurables, ADC de 10 bits, y soporte
para comunicación serial, como UART, SPI e I2C, Figura 16. Diagrama de Control
el ATMega328 facilita la conexión con sensores
y actuadores, ası́ como la interacción con otros
IV-A4. Bloque de Periféricos : La función prin-
dispositivos. Además, su capacidad para gestionar
cipal del bloque de periféricos es permitir que el
interrupciones, integrar temporizadores/contadores
sistema se comunique con el exterior y realice
y ofrecer modos de bajo consumo de energı́a lo con-
acciones especı́ficas en respuesta a estı́mulos exter-
vierte en una elección robusta para aplicaciones que
nos. Por ejemplo, si el circuito tiene un propósito
requieren eficiencia energética y control preciso. Su
especı́fico, como la medición de temperatura, el
compatibilidad con la plataforma Arduino amplı́a
bloque de periféricos podrı́a incluir un sensor de
su accesibilidad y popularidad en la comunidad de
temperatura. Asimismo, si se requiere interacción
desarrollo electrónico.
con un usuario, podrı́an incorporarse periféricos
como pantallas o interfaces de usuario. Nuestros
periféricos serian los sensores ultrasónicos HC-
SR04.

Figura 17. Diagrama de Periféricos


8

IV-B. Metodologı́a de Construcción

Como precedente de nuestro robot nos plan-


teamos varias premisas, las cuales se centran en
¿Cual sera el material de nuestra base?, ¿Que driver
usaremos para comandar los motores ?, ¿Cual sera
el material de nuestra base?, ¿Cual sera el material
y de que tamaño serán nuestras llantas?, ¿De que
capacidad sera la baterı́a?. Para responder dichas
nos hemos basado en robots de competencia profe-
sional y en robots que son de otras áreas pero son
autónomos. Como sı́ntesis de nuestra investigación
hemos concluido que para el prototipo usaremos
sensores ultrasónicos, los motores mas óptimos
Figura 19. Modelo de Guia
serian motores pololu con llantas de goma de de
32x7mm. Para alimentar nuestro prototipo usaremos
una bateria de LiPo de 7.4V y 1.8A ya que esto IV-C. Armado del prototipo
nos servirá para alimentar los componentes cabe
desatacar que estos pueden cambiar dependiendo Una vez analizado la metodologı́a procedemos a
de las etapas y los componentes que se agreguen realizar el armado, lo primero conociste en fijar los
a futuro. El driver que usaremos es un L283N motores y la rueda omnidireccional de manera que
el cual nos permite modular las direcciones y los la placa queda nivelada.
PWM de los motores, usaremos un shield para el
arruino ya que este es un prototipo por lo que
podremos cambiar el modulo o usar otra alternativa
para modular los motores en el producto final.

Figura 20. Armado del prototipo

Procedemos a armar nuestro robot uniendo el


arduino uno junto con los shields, para conectar
nuestros periféricos usaremos una placa de proto-
tipado para unir los mismos con el driver de lo
Figura 18. Modelo de Guia motores.
9

Figura 21. Armado del prototipo Figura 23. Armado del prototipo

Una vez tengamos nuestra soldadura procedemos


a montar nuestra MotoShied L293N junto con el
arduino uno, mediante los pines correspondientes.

Para conectar el gestor de carga y el giroscopio


usamos protoboard.

Figura 22. Armado del prototipo

Para montar nuestra placa usaremos pernos y


tuercas la cual nos garantiza tener un cuerpo rı́gido
y estable . Figura 24. Armado del prototipo
10

Figura 25. Armado del prototipo.

Figura 27. Placa MICROMOUSE 2D


Presentamos un esquema simplificado de nuestra
practica, el cual nos servirá como referencia a
futuro.
V. CONCLUSIONES
La utilización de motores, llantas de goma, Ar-
duino Uno, módulo L293N, baterı́a de polı́me-
ro de litio, sensores HC-SR04 y giroscopio
demuestra una integración efectiva de com-
ponentes clave. Esta combinación ofrece un
equilibrio adecuado entre potencia, control y
capacidad sensorial para el diseño del robot
micromouse.
La inclusión del módulo L293N para el control
de motores y el giroscopio para la orientación
proporciona una base sólida para lograr un
movimiento preciso y una navegación eficiente
en el laberinto. El sistema permite ajustes finos
en la velocidad y dirección, mejorando la ca-
pacidad del robot para seguir rutas especı́ficas.
La combinación de sensores HC-SR04 ofrece
al robot la capacidad de medir distancias de
manera confiable, lo que facilita una interac-
ción efectiva con su entorno. Esto es esencial
para la detección de obstáculos y la toma de
decisiones informadas durante la navegación a
Figura 26. Placa MICROMOUSE 3D través del laberinto.
11

La elección de una baterı́a de polı́mero de litio


sugiere una consideración consciente de la
eficiencia energética. Esta decisión contribuye
a la autonomı́a del robot, asegurando un sumi-
nistro constante de energı́a para mantener un
rendimiento consistente durante la exploración
del laberinto, optimizando ası́ la eficiencia del
sistema en su conjunto.

VI. REFERENCIAS
[1]Obdrzalek David, Gottscheber Achim,
Research and Education in Robotics - EUROBOT
2010: International Conference, Rapperswil- Jona,
Switzerland, May 27-30, 2010. Springer. p 200,
2011.

[2]Homefly, Section Coreless Motors, disponible


en: https://www.homefly.com/products.asp?id=44.
Consultado en: 6 de Abril 2013.

[3] Texas Instruments Inc. 3V-17V 1A Step-


Down Converters with DCSControl (Rev. C).
SLVSAM2C, November 2011, Revised September
2013.

[4] Texas Instruments Inc. Dual Low-Voltage


H-Bridge IC, DRV8836 (Rev. B). SLVSB17A,
March 2012, Revised September 2013.

[5] Web Site. Micromose Ru-


les Region 6. Disponible en:
http://ieee.ucsd.edu/projects/micromouse/rules.php
. Consultado en: 20 de junio 2014

[6] [5]MIT, Motion Capture,


http://web.mit.edu/commforum/ papers/furniss.html
, Consultado en: 6 de Abril 2013.

[7] Web Site. Micromouse on line. Disponible en:


http://www.micromouseonline.com/micromouse-
book/history/, Consultado en: 20 de Junio 2014.

VI-A. CODIFICACION
Listing 1. Declarcion metodo ”Tiempo banderas
2

# i n c l u d e <NewPing . h>
# i n c l u d e <AFMotor . h>

# define ECHO PIN ADELANTE A0


# define TRIG PIN ADELANTE A1
# define ECHO PIN DERECHA A3
# define TRIG PIN DERECHA A2
# define ECHO PIN IZQUIERDA 10
# define TRIG PIN IZQUIERDA 9
# define DISTANCIA MAXIMA 400
# define MAXIMA VELOCIDAD 100

NewPing s o n a r a d e l a n t e ( TRIG PIN ADELANTE , ECHO PIN ADELANTE , DISTANCIA MAXIMA ) ;

NewPing s o n a r d e r e c h a ( TRIG PIN DERECHA , ECHO PIN DERECHA , DISTANCIA MAXIMA ) ;

NewPing s o n a r i z q u i e r d a ( TRIG PIN IZQUIERDA , ECHO PIN IZQUIERDA , DISTANCIA MAXIMA ) ;

AF DCMotor m o t o r e s 1 ( 3 , MOTOR12 1KHZ ) ;


AF DCMotor m o t o r e s 2 ( 4 , MOTOR34 1KHZ ) ;

int distancia adelante = 0;


int pared adelante = 0;
int distancia derecha = 0;
int pared derecha = 0;
int distancia izquierda = 0;
int pared izquierda = 0;
boolean adelante = f a l s e ;

12
moverAdelante ( ) ;
refderecha ( ) ;
f o r ( p = 0 ; p < 5 0 ; p ++) {
delay (10);
medir ( ) ;
i f ( p a r e d a d e l a n t e < 10) {
break ;
}
}
} else {
m o t o r e s 1 . r u n (FORWARD) ;
m o t o r e s 2 . r u n (FORWARD) ;
refderecha ( ) ;
f o r ( p = 0 ; p < 5 0 ; p ++) {
delay (10);
medir ( ) ;
i f ( p a r e d a d e l a n t e < 10) {
break ;
}
}
}
medir ( ) ;
}
i f ( pared derecha > 10) {
delay (500);
girarDerecha ( ) ;
delay (500);

/ * f o r ( i = 0 ; i < 3 0 0 ; i ++) {
medir ( ) ;
muycerca ( ) ;
delay (10);
} */
medir ( ) ;
}

13
while ( 1 ) {
mpu . u p d a t e ( ) ;
i f ( mpu . g e t A n g l e Z ( ) > ( 1 8 0 + a u x i l i a r 2 ) ) {
break ;
}
}
}
void d e s l p l a z o ( i n t a ) {
a u x i l i a r = s o n a r a d e l a n t e . ping cm ( ) ;
m o t o r e s 1 . r u n (FORWARD) ;
m o t o r e s 2 . r u n (FORWARD) ;
motores1 . setSpeed ( velocidad1 ) ;
motores2 . setSpeed ( velocidad2 ) ;
while ( 1 ) {
i f ( ( a u x i l i a r − a ) > s o n a r a d e l a n t e . ping cm ( ) )
break ;
}
}
void r e f d e r e c h a ( ) {
i f ( p a r e d d e r e c h a > 0 && p a r e d d e r e c h a < 6 ) {
alinearIzquierda ();
}
i f ( pared derecha > 6) {
alinearDerecha ( ) ;
}
}

void g i r a r I z q u i e r d a ( ) {
m o t o r e s 2 . r u n ( RELEASE ) ;
m o t o r e s 1 . r u n ( RELEASE ) ;
delay (100);
/ / b y t e s t a t u s = mpu . b e g i n ( ) ;
/ / w h i l e ( s t a t u s != 0 ) {}
mpu . c a l c O f f s e t s ( ) ;
motores1 . setSpeed ( 1 2 0 ) ;

14
while ( 1 ) {
mpu . u p d a t e ( ) ;
i f ( mpu . g e t A n g l e Z ( ) < ( −90 + a u x i l i a r 2 ) ) {
break ;
}
}
moverAdelante ( ) ;

/* delay (500); */ / / continuan e l movimiento durante 1.34 segundos


}
void muycerca ( ) {

i f ( pared adelante < 8) {

i = 5000;
}
}
void moverAtras ( ) {
m o t o r e s 1 . r u n (BACKWARD) ;
m o t o r e s 2 . r u n (BACKWARD) ;
delay ( t a t r a s ) ;
m o t o r e s 1 . r u n ( RELEASE ) ;
m o t o r e s 2 . r u n ( RELEASE ) ;
}
void moverAdelante ( ) {
m o t o r e s 1 . r u n (FORWARD) ;
m o t o r e s 2 . r u n (FORWARD) ;
f o r ( v e l o c i d a d 1 = 0 ; v e l o c i d a d 1 < MAXIMA VELOCIDAD ; v e l o c i d a d 1 += 2 ) {
velocidad2 = velocidad1 * desfase ;
motores1 . setSpeed ( velocidad1 ) ;
motores2 . setSpeed ( velocidad2 ) ;
delay ( 5 ) ;
}

adelante = true ;

15
m o t o r e s 2 . r u n (BACKWARD) ;
delay (50 * a ) ;
m o t o r e s 1 . r u n (FORWARD) ;
m o t o r e s 2 . r u n (FORWARD) ;
motores1 . setSpeed ( velocidad1 ) ;
motores2 . setSpeed ( velocidad2 ) ;
}
void medir ( ) {
d i s t a n c i a a d e l a n t e = s o n a r a d e l a n t e . ping cm ( ) ;
i f ( d i s t a n c i a a d e l a n t e != 0) {
pared adelante = distancia adelante ;
}
d i s t a n c i a d e r e c h a = s o n a r d e r e c h a . ping cm ( ) ;
i f ( d i s t a n c i a d e r e c h a != 0) {
pared derecha = distancia derecha ;
}
d i s t a n c i a i z q u i e r d a = s o n a r i z q u i e r d a . ping cm ( ) ;
i f ( d i s t a n c i a i z q u i e r d a != 0) {
pared izquierda = distancia izquierda ;
}
/ / S e r i a l . p r i n t l n ( s o n a r d e r e c h a . ping cm ( ) ) ;
}
}

16
17

También podría gustarte