Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Prototipo MICROMOUSE.
Juan Sebastián Vasquez Ávila, Estudiante, UPS.
,Juan David Guncay Orellana, Estudiante, UPS.
Figura 11. Medidas llantas Pololu 32x7mm Figura 12. Rueda omnidireccional
Figura 21. Armado del prototipo Figura 23. Armado del prototipo
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.
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>
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 ( ) ;
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