0% encontró este documento útil (0 votos)
69 vistas16 páginas

Informe Raton

Este documento describe el diseño de un robot micromouse para resolver laberintos de manera autónoma. El robot utiliza varios componentes clave como motores, ruedas, Arduino Uno, módulo L293N, batería de litio, sensores ultrasónicos HC-SR04 y un giroscopio MPU6050. Estos componentes trabajan juntos para permitir la navegación eficiente a través de entornos complejos mediante el uso de algoritmos de navegación y la fusión de datos de los sensores.

Cargado por

Juan Vasquez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
69 vistas16 páginas

Informe Raton

Este documento describe el diseño de un robot micromouse para resolver laberintos de manera autónoma. El robot utiliza varios componentes clave como motores, ruedas, Arduino Uno, módulo L293N, batería de litio, sensores ultrasónicos HC-SR04 y un giroscopio MPU6050. Estos componentes trabajan juntos para permitir la navegación eficiente a través de entornos complejos mediante el uso de algoritmos de navegación y la fusión de datos de los sensores.

Cargado por

Juan Vasquez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

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

IV. P ROCEDIMIENTO
En nuestro proyecto usamos dos motores junto
con las llantas lo que nos permiten la movilidad, IV-A. Diagrama de bloques
para direccionar nuestro robot nos basaremos en El diagrama para PCB del circuito en considera-
una rueda omnidireccional y la modulación de ción se encuentra estructurado de manera eficiente
PWM mediante programación. Usamos una rueda en cuatro bloques distintos, cada uno desempeñando
omnidireccional puesto que cuenta con las siguien- un papel crucial en el funcionamiento global del
tes caracterı́sticas; Son componentes fundamenta- sistema. El bloque de Çontrol”se encarga de la
les en sistemas de movimiento que permiten la gestión y regulación de las operaciones del circuito,
libre rotación y dirección en espacios reducidos. asegurando una coordinación precisa y estable. El
Incorporan rodamientos de alta calidad que per- bloque de ”Potencia.asume la responsabilidad de
miten una rotación suave y sin fricción, lo que manejar las corrientes y tensiones significativas,
facilita el movimiento omnidireccional y reduce garantizando una distribución eficaz de la energı́a
la resistencia al giro. Minimizan la resistencia al necesaria para el rendimiento óptimo del sistema.
desplazamiento lateral, lo que facilita maniobrar en Por otro lado, el bloque de .Alimentación”se dedica
espacios estrechos y realizar cambios de dirección a proporcionar la fuente primaria de energı́a, ase-
de manera eficiente,incorporan orificios y ranuras gurando una alimentación constante y confiable a
estandarizados que facilitan su fijación a estructuras los componentes del circuito. Finalmente, el bloque
o chasis. La capacidad de girar 360 grados sobre su de ”Periféricos”se encarga de facilitar la interacción
propio eje permite una movilidad omnidireccional, del sistema con su entorno externo, gestionando la
lo que es esencial para sistemas que requieren comunicación y control de dispositivos adicionales.
cambios rápidos y precisos de dirección. Escogimos Esta división estratégica en bloques permite una
una rueda con las siguientes dimensiones, lo que no comprensión clara y ordenada del diseño, facili-
garantiza que junto con las llantas le den a nuestro tando la implementación, el mantenimiento y la
robot la suficiente altura y estabilidad. resolución de posibles problemas.
6

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 Figura 15. Diagrama de Potencia
equilibrarla puesto que es de 2 celdas.
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
Figura 14. Diagrama de alimentación. de E/S configurables, ADC de 10 bits, y soporte
7

para comunicación serial, como UART, SPI e I2C,


el ATMega328 facilita la conexión con sensores
y actuadores, ası́ como la interacción con otros
dispositivos. Además, su capacidad para gestionar
interrupciones, integrar temporizadores/contadores
y ofrecer modos de bajo consumo de energı́a lo con-
vierte en una elección robusta para aplicaciones que
requieren eficiencia energética y control preciso. Su
compatibilidad con la plataforma Arduino amplı́a
su accesibilidad y popularidad en la comunidad de
desarrollo electrónico.

Figura 17. Diagrama de Periféricos

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-
Figura 16. Diagrama de Control 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
IV-A4. Bloque de Periféricos : La función prin- serian motores pololu con llantas de goma de de
cipal del bloque de periféricos es permitir que el 32x7mm. Para alimentar nuestro prototipo usaremos
sistema se comunique con el exterior y realice una bateria de LiPo de 7.4V y 1.8A ya que esto
acciones especı́ficas en respuesta a estı́mulos exter- nos servirá para alimentar los componentes cabe
nos. Por ejemplo, si el circuito tiene un propósito desatacar que estos pueden cambiar dependiendo
especı́fico, como la medición de temperatura, el de las etapas y los componentes que se agreguen
bloque de periféricos podrı́a incluir un sensor de a futuro. El driver que usaremos es un L283N
temperatura. Asimismo, si se requiere interacción el cual nos permite modular las direcciones y los
con un usuario, podrı́an incorporarse periféricos PWM de los motores, usaremos un shield para el
como pantallas o interfaces de usuario. Nuestros arruino ya que este es un prototipo por lo que
periféricos serian los sensores ultrasónicos HC- podremos cambiar el modulo o usar otra alternativa
SR04. para modular los motores en el producto final.
8

Figura 18. Modelo de Guia 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
motores.

Figura 19. Modelo de Guia

IV-C. Armado del prototipo Figura 21. Armado del prototipo

Una vez analizado la metodologı́a procedemos a


realizar el armado, lo primero conociste en fijar los Una vez tengamos nuestra soldadura procedemos
motores y la rueda omnidireccional de manera que a montar nuestra MotoShied L293N junto con el
la placa queda nivelada. arduino uno, mediante los pines correspondientes.
9

Figura 22. Armado del prototipo Figura 24. Armado del prototipo

Para montar nuestra placa usaremos pernos y


tuercas la cual nos garantiza tener un cuerpo rı́gido
y estable .

Figura 25. Armado del prototipo.

Figura 23. Armado del prototipo

Presentamos un esquema simplificado de nuestra


Para conectar el gestor de carga y el giroscopio practica, el cual nos servirá como referencia a
usamos protoboard. futuro.
10

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
Figura 26. Placa MICROMOUSE 3D
para la detección de obstáculos y la toma de
decisiones informadas durante la navegación a
través del laberinto.
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
Figura 27. Placa MICROMOUSE 2D IC, DRV8836 (Rev. B). SLVSB17A, March
11

2012, Revised September 2013. [5] Web Site.


Micromose Rules Region 6. Disponible en:
http://ieee.ucsd.edu/projects/micromouse/rules.php
. Consultado en: 20 de junio 2014 [6] [5]MIT, Mo-
tion Capture, http://web.mit.edu/commforum/ pa-
pers/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

También podría gustarte