You are on page 1of 35

Andromie MS

Luchador de Sumo: Mini


Gua de usuario
Introduccin
Andromie MS es un robot autnomo de morforloga mvil, diseado para competiciones de luchador
de sumo en la categora de Min (10 X 10 cm un peso de !00 gramos"# Se trata de un robot de tipo
diferencial, su traccin basa en dos motores de corriente directa, alimentado por una batera de $
%oltios#
Andromie MS utili&a un microcontrolador de la marca Atmel modelo Atmega'(), con firm*are de
Arduino, lo cual facilita su programacin#
Contactando con Andromie
+ara contactarnos puedes visitar nuestra p,gina *eb- ***#andromie#com# .ambi/n te invitamos a
0ue nos sigas a trav/s de las redes sociales-
***#faceboo1#com2Andromie3obotics
***#t*itter#com2Andromie3obotic
+ara la atencin asesora personali&ada puede contactar-
4orreo- contacto5andromie#com
S1pe- andromie
6e igual manera nos gustara saber tu opinin e7periencia con Andromie A'# +ara ello accesa a
nuestras redes sociales, publica, comenta, comparte eti0uetanos#
Advertencias de seguridad y precauciones de uso
Andromie MS, Mini8sumo, no es un 9uguete# +uede ser usado por nios 9venes ba9o la supervisin
auda de un adulto# :l uso o abuso del producto es responsabilidad del usuario final# Andromie no se
hace responsable por daos o lesiones 0ue /ste pueda causar durante su uso#
:ste producto no est, diseado para 9ugar, no debe usarse fuera de las condiciones de traba9o# A
continuacin se indican las precauciones-
Antes de comen&ar por favor lea cuidadosamente el manual#
;tili&a bateras alcalinas o recargables# :n el caso de las alcalinas aseg<rate 0ue sean nuevas,
si compras recargables verifica 0ue tengan suficiente carga, de lo contradio al programar lo
puedes inutili&ar para siempre#
4ondiciones de traba9o-
superficie lisa, de preferencia melamina,
interiores con lu& controlada#
=o colocar la tar9eta de circuito impreso (+4>" sobre superficies met,licas#
:l robot MS esta ensamblado soldado con pie&as 0ue contienen plomo estao, por lo cual
es necesario lavarse las manos despu/s de manipularlo#
?os componentes del robot est,n e7puestos, por lo 0ue es importante no tocarlo con las
manos mientras est, en funcionamiento# Si nuestras manos est,n mo9adas se puede causar un
corto circuito daar uno o varios componentes#
+rimeros pasos de Andromie MS
@Au/ necesitasB
>atera de $%# ;tilice de preferencia bateras alcalinas o recargables# Si traba9ar, durante
tiempos prolongados con el robot, le recomendamos usar bateras recargables de =i0uel8
Metal Cidruro, =iMC# =o olvide comprar el cargador correspondiente#
4able A D >, ;S> a Micro ;S># Andromie A' no re0uiere un programador e7terno, todo el
hard*are electrnico a se inclue en el robot, pero para la comunicacin entre la
computadora el robot se re0uiere dicho cable#
4omputadora# =ecesitas una computadora para programar el robot# +ara ello se utili&a la
interfa& de programacin de Arduino, plataforma libre, 0ue funciona en cual0uiera de los
siguientes sistemas operativos-
Eindo*s
Mac
?inu7
Material para pruebas# :s necesario 0ue tenga a mano papel, cartulinas, cartoncillo cinta
aislante negra o blanca, para improvisar pistas probar el robot#
Conoce ms de Andromie MS
Figura 1# %ista frontal de robot luchador de sumo MS
Ms es un robot de morfologa mvil de tipo diferencial, es decir se despla&a por medio de dos ruedas
con dos motores, uno para cada una# :l cerebro de esta robot es un Arduino =ano, est, encargado
de procesar la informacin 0ue le proveen los sensores para reali&ar correccines a trav/s de los
motores, ba9o el es0uema b,sico de control#
Hardware de MS
:n la figura 1 se muestra el hard*are del robot# Gbserve 0ue se cuenta con varios componentes
dispositivos electrnicos# @3econoce algunoB, a continuacin se e7plican brevemente#
Sensores reflectivos de contraste, son los encargados de percibir la informacin del ambiente,
en este caso el contraste, la diferencia entre o blanco lo negro, lo 0ue no brilloso lo opaco#
:ste dispositivo se compone de dos partes- emisor receptor# .anto el primero como el
segundo traba9an en el rango infrarro9o de la lu&# Hsta no es perceptible por el o9o humano,
pero con auda de una c,mara digital se observa#
LEDs. 6iodos emisores de lu& por sus siglas en ingl/s, son dispositivos 0ue emiten una lu& al
circular una corriente por sus terminales# :n Andromie MS se usan como indicadores son
programables por el usuario por medio del Arduino#
Driver para motor. >asado en un circuito integrado de +uente C, es el 0ue proveen de potencia
a los motores, siendo la interfa& entre el microcontrolador el motor#
Botones. Son interruptores de encendido al contacto# :l robot cuenta con (, el primero para
reiniciar el microcontrolador (arduino", el segundo como botn de usuario para propsito
general#
Motorreductores. Son motores de corriente directa (46, como el de las bateras", con una ca9a
de engranes adaptada# ?os usados en A' tienen una reduccin de I)-1, esto es, por cada I)
vueltas 0ue gire el motor, el e9e del reductor girar, 1 vuelta# 6e este modo se incrementa el
tor0ue, fuer&a, se reduce la velocidad#
Batera. :s la 0ue provee de energa el/ctrica a todo el robot, arduino, sensores, ?:6s,
motores, pulsadores# :s tipo rectangular de $%#
Figura (# %ista trasera deAndromie A'
Arduino Nano
:s una pe0uea completa placa basada en el mirocontrolador Atmega'() 0ue generalmente se usa
para hacer prototipos# .iene m,s o menos la misma funcionalidad 0ue el Arduino ;=G, pero con una
presentacin m,s compacta# =o posee conector para alimentacin e7terna, funciona con un cable
;S> Mini8> en e& del cable est,ndar#
Figura '# Arduino =ano
:specificaciones
Microcontrolador- Atmega'()#
.ensin de operacin (nivel lgico"- ! %oltios#
.ensin de entrada (recomendada"- J81( %oltios#
.ensin de entrada (lmites"- K8(0 %oltios#
+ines :2S digitales- 1I (de los cuales K proveen de salida +EM"#
:ntradas Analgicas- )
4orriente m,7ima por cada +L= de :ntrada2Salida- I0mA
Memoria Flash- '(M>#
S3AM- (M>
::+3GM- 1M>#
6imensiones- 1)#! mm 7 ('#( mm#
Alimentacin
:l Arduino =ano puede ser alimentado usando el cable ;S> Mini8> , con una fuente e7terna no
regulada de K8(0% (pin '0", o con una fuente e7terna regulada de !% (pin (J"# ?a fuente de
alimentacin es seleccionada autom,ticamente a a0uella con maor tensin#
:l chip F.6L F.('(3? 0ue posee el =ano solo es alimentado si la placa esta siendo alimentada usando
el cable ;S># como resultado, cuando se utili&a una fuente e7terna (no ;S>", la salida de '#'% (la cual
es proporcionada por el chip F.6L" no est, disponible los pines 1 0 parpadear,n si los pines
digitales 0 o 1 est,n a nivel alto#
Memoria
:l A.mega1K) posee 1KM> de memoria flash para almacenar el codigo (de los cuales (M> son usados
por el bootloader"N el A.mega '() posee '(M>, (tambi/n con ( M> usados por el bootloader"# :l
Atmega1K) posee 1M> de S3AM !1( btes de ::+3GM (la cual puede ser leida escrita con la
librera ::+3GM"N el A.mega'() posee ( M> de S3AM 1M> de ::+3GM#
Entrada y Salida
4ada uno de los 1I pines digitales del =ano puede ser usado como entrada o salida, usando las
funciones pinMode(", digitalErite(", digital3ead("# Gperan a ! voltios# 4ada pin puede proveer o
recibir un m,7imo de I0mA poseen una resistencia de pull8up (desconectada por defecto" de (0 a !0
1Ghms# Adem,s algunos pines poseen funciones especiali&adas-
Serial- 0 (3X" 1 (.X"# (3X" usado para recibir (.X"usado para transmitir datos ..? va serie#
:stos pines est,n conectados a los pines correspondientes del chip ;S>8a8..? de F.6L#
Lnterrupciones :7ternas- pines ( '# :stos pines pueden ser configurados para activar una
interrupcin por paso a nivel ba9o, por flanco de ba9ada o flanco de subida, o por un cambio de
valor# Mira la funcin attachLnterrupt(" para m,s detalles#
+EM- pines ', !, K, $, 10, 11# +roveen de una salida +EM de )8bits cuando se usa la funcin
analogErite("#
S+L- pines 10 (SS", 11 (MGSL", 1( (MLSG", 1' (S4M"# :stos pines soportan la comunicacin S+L, la
cual, a pesar de poseer el hard*are, no est, actualmente soportada en el lengua9e Arduino#
?:6- +in 1'# :7iste un ?:6 conectado al pin digital 1'# 4uando el pin se encuentra en nivel alto,
el ?:6 est, encendido, cuando el pin est, a nivel ba9o, el ?:6 estar, apagado#
:l =ano posee ) entradas analgicas, cada unas de ellas provee de 10 bits de resolucin (10(I valores
diferentes"# +or defecto miden entre ! voltios masa, sin embargo es posible cambiar el rango
superior usando la funcin analog3eference("# .ambi/n, algunos de estos pines poseen funciones
especiales-
L(4- +ines I (S6A" ! (S4?"# Soporta comunicacin L(4 (.EL" usando la librera Eire
(documentacin en la *eb Eiring"#
Ca algunos otros pines en la placa-
A3:F# .ensin de referencia por las entradas analgicas# Se configura con la funcin
analog3eference("#
3eset# +on esta linea a nivel ba9o para resetear el microcontrolador# =ormalmente se usa para
aadir un botn de reset 0ue mantiene a nivel alto el pin reset mientras no es pulsado#
Diagrama Pictrico
Figura I# 6iagrama pictrico de circuito de Andromie A'
Programando en Arduino
+ara programa el robot luchador de sumo es necesario contar con el entorno de programacin de
Arduino# Si a<n no lo tiene lo puede descargar en- ***#arduino#cc en la seccin de descargas# :s
recomendable 0ue la versin de arduino 0ue descar0ue sea igual o posterior a las 1#0#
Figura !# 4aptura de pantalla de entorno de programacin Arduino versin 1#0#1
4omponentes de Arduino L6:
Figura K# Lcono O%erificarP
%erificar# inspecciona el cdigo generado, marca errores posibles soluciones#
Figura J# Qcono- O4argarP
4argar- 4uando se presiona este botn se compila ensambla el cdigo contenido en la
ventana se descarga a la tar9eta electrnica de Arduino# :ste proceso puede tardar algunos
segundos o tal ve& un para de minutos#
Figura )# Qcono- O=uevoP#
=uevo- crea un nuevo Os1etchP en blanco#
Figura $# Qcono- OAbrirP#
Abrir- abre un Os1etchP, cdigo, a e7istente#
Figura 10# Qcono- ORuardarP#
Ruardar- salva las modificaciones reali&adas en el cdigo#
Figura 11# Qcono- OMonitor SerialP#
Monitor Serial- abre la aplicacin de monitor serial, 0ue puede servir para diferentes
propsitos#
3eferencias del lengua9e
?os programas hechos con Arduino se dividen en tres partes principales-
:structura,
valores (variables constantes",
funciones#
:l lengua9e de programacin Arduino se basa en 424SS#
:structuras
?as dos estructuras principales son las siguientes-
setup(", es la estructura donde se configura las entradas, salidas los mdulos# :s llamado
tambi/n como Oiniciali&acinP# ?o contenido en esta estructura se e9ecuta slamente una ve& al
inicio del programa#
loop(", es la estructura donde se escribe el cdigo, se repetir, infintas veces#
%alores
4onstantes
CLRC, alto,
?GE, ba9o,
L=+;., entrada,
G;.+;., salida,
.rue, verdadero,
false, falso,
%ariables-
boolean, booleando,
char, car,cter,
bte, ) bits
int, entero,
unsigned int, entero sin signo,
long, entero de '( bits,
unsigned long, entero '( bits sin signo,
float, punto flotante#
Funciones
pinMode(", configura si el pin digital ser, salida o entrada,
digitalErite(", si el pin ha sido configurado como salida digital, su volta9e de salida ser, 0 o !%#
digital3ead(", lectura del valor digital del pin especificado,
analog3ead(", lectura del valor analgico del pin especificado,
analogErite(", configura la modulacin por anchura de pulso de un pin (+EM",
dela(", pausa en milisegundos#
Serial, librera incluida para el uso configuracin del mdulo serial#
3evisa la referencia del lengua9e de arduino para aprender m,s acerca de las estructuras, variables
funciones de Arduino#
El primer programa en Arduino para Andromie MS
;n sencillo programa de demostracin est, disponible en los e9emplos de Arduino,
OArchivo2:9emplos201#>asics2>lin1P#
Figura 1(# :l primer programa en Arduino
:ste sencillo programa prende apaga un ?:6, colocado en la patilla, pin 1'#
2T
>lin1
.urns on an ?:6 on for one second, then off for one second, repeatedl#
T2
22 +in 1' has an ?:6 connected on most Arduino boards#
int led U 1'N
22 the setup routine runs once *hen ou press reset-
void setup(" V
22 initiali&e the digital pin as an output#
pinMode(led, G;.+;."N
W
22 the loop routine runs over and over again forever-
void loop(" V
digitalErite(led, CLRC"N 22 turn the ?:6 on (CLRC is the voltage level"
dela(1000"N 22 *ait for a second
digitalErite(led, ?GE"N 22 turn the ?:6 off b ma1ing the voltage ?GE
dela(1000"N 22 *ait for a second
W
Abierto el programa de e9emplo es necesario seleccionar la tar9eta correspondiente, en el caso del
robot seguidor de lnea, se trata de un Arduino =ano Atmega'(), para ello dir9ase al men<
Cerramientas2.ar9eta2Arduino =ano *2Atmega'()#
Figura 1'# Seleccin de tar9eta Arduino =ano *2A.mega'()
Ahora se verificar, 0ue el cdigo escrito sea correcto, presione el cono verificar-
?o 0ue har, esta funcin ser, OtraducirP todo lo codificado a un OidiomaP 0ue entienda el micro8
controlador# Gbserve los avisos errores de salida mostrados# Si el programa se compila
correctamente, el mensa9e de salida deber, ser como se muestra en la figura-
Figura1I# Mensa9es de salida
;na ve& compilado verificado el programa, en vista 0ue no e7isten errores o advertencias, se
procede a cargar el programa a la tar9eta de Arduino# +ara ello antes es importante seleccionar el
puerto de comunicacin serial O4GMP correcto# +ara ello se puede hacer lo siguiente-
Abra el administrador de dispositivos,
:n la pestaa O+uertos (4GM ?+."P, verifi0ue el puerto en el cual est, ubicado el Arduino#
Reneralmente tiene el nombre de O;S> Serail +ortP#
Figura 1!# %erificacin del puerto 4GM del Arduino
;na ve& identificado, se selecciona en el L6:, Cerramientas2+uerto serial24GM7
Figura 1K# Seleccin del +uerto Serial
4argue el programa a la tar9eta de Arduino presionando el cono de cargar# :sta accin puede tardar
algunos segundos#
Figura 1J# 4arga de programa a tar9eta de Arduino
Si la carga fue e7itosa se desplegar, el siguiente mensa9e-
Figura 1)# 4arga :7itosa
Eemplos y proyectos
Ahora 0ue sabe como compilar cargar un prorama a la tar9eta de Arduino es tiempo de aprender a
disear codificar programas m,s complicados# 4omen&ar, con los m,s sencillos#
:9emplo 1- ?uces estilo el Oserie de navidadP
Figura 1$# .ar9eta de MS
?a tar9eta del robot seguidor de lnea inclue ' indicadores ?:6Xs para el propsito Reneral# Hstos se
encuentran en los pines digitales $,10, 1' marcados como >I, >!, 3;= en ese preciso orden#
?a secuencia 0ue se 0uiere lograr es la siguiente-
Figura (0# ?uces de navidad
:l cdigo de este programa se encuentra disponible en la p,gina Eeb- ***#andromie#com en la
seccin del blog en la eti0ueta de ?uchador de Sumo MS#
2T 88888888888888888888Lnicio de 4digo88888888888888888888 T2
int runled U 1'N 22Alias para pin 1'
int led0 U $N 22Alias para pin $
int led1 U 10N 22Alias para pin 10
void setup("
V
224onfiguracin de entradas salidas
pinMode(runled, G;.+;."N 22Salida digital en runled U pin 1'
pinMode(led0, G;.+;."N 22Salida digital en led0 U pin $
pinMode(led1, G;.+;."N 22Salida digital en led1 U pin 10

224onfiguracin de mdulos
W
void loop("
V
224digo 0ue se repetir, infititamente
digitalErite(led0, CLRC"N 22+uesta en alto de led0, prende
digitalErite(led1, ?GE"N 22+uesta en ba9o de led1, apaga
22GYGGGGZ
223un?:6 usa lgica negativa, cuando es ato apaga, cuando es ba9o prende
digitalErite(runled, CLRC"N22+ues en alto de 3un?:6
dela((!0"N
digitalErite(led0, ?GE"N 22+uesta en ba9o de led0, apaga
digitalErite(led1, CLRC"N 22+uesta en alto de led1, prende
22GYGGGGZ
223un?:6 usa lgica negativa, cuando es ato apaga, cuando es ba9o prende
digitalErite(runled, CLRC"N
dela((!0"N
digitalErite(led0, ?GE"N 22+uesta en ba9o de led0, apaga
digitalErite(led1, ?GE"N 22+uesta en alto de led1, prende
22GYGGGGZ
223un?:6 usa lgica negativa, cuando es ato apaga, cuando es ba9o prende
digitalErite(runled, ?GE"N
dela((!0"N
W
2T 88888888888888888888Fin de cdigo88888888888888888888 T2
:s un e9emplo sencillo pero auda a comprender el mane9o de los pines digitales como salidas#
Eercicio !
6esarrollo un cdigo para realice la siguiente secuencia de encendido apagado de ?:6s#
Eemplo ": Encendido de un LE# con un interruptor sin contacto$
?a tar9eta de Andromie MS cuenta con ( sensores del tipo reflectivo infrarro9o# :ste tipo est,
compuesto de dos componentes un emisor un receptor# :l primero es un ?:6 infrarro9o, lu& 0ue no
podemos ver los o9osN el segundo es un fototransistor con filtro de lu& de da#
:l funcionamiento es el siguiente-
Figura (1# Sensor 3eflectivo sobre superficie refle9ante#
4uando el ?:6 infrarro9o se encuentre emitiendo lu&, si la superfice es refle9ante, por e9emplo blanca,
se refle9a una cantidad de lu& 0ue es percebida por el fototransistor, 0ue convierte la seal luminosa
en volta9e, permite un flu9o de corriente entre sus terminales por la configuracin de carga de
emisor se obtiene un valor#
Figura ((# Sensor 3eflectivo sobre superficie opaca
+or lo contrario si el la superficie es opaca, por e9emplo negra, se refle9a poca lu&, la cual es percibida
por el fototransisto, pero se genera poca corriente en sus terminales por consiguiente poco volta9e#
:ste sensor no puede servir como un interruptor sin contacto, se usa com<nmente en muchos
procesos de la industra cotidianos, tal es caso de las llaves autom,ticas de agua usadas en los baos
p<blicos# ?a intensin es 0ue cuando colo0ue su dedo frente al sensor este active el ?:6#
A continuacin se propone el cdigo#
2T88888888888888888888888888888888Lnicio del cdigo88888888888888888888888888888888T2
226eclaracin de variables globales
int +iso6erechoN
int runled U 1'N 22Alias para pin 1'
int led0 U $N
void setup("
V
224onfiguracin de entradas salidas
pinMode(led0, G;.+;."N 22Salida digital en led0 U pin $
224onfiguracin de mdulos
W
void loop("
V
224digo 0ue se repetir, infititamente
+iso6erecho U analog3ead(A("N 22?ectura del sensor L&0uierdo
if (+iso6erecho [ !1(" 22Si la superficie es blanca entonces prende ?:6
V
digitalErite(led0, CLRC"N
W
else 22Sino, es decir, es negro, entonces apaga ?:6
V
digitalErite(led0, ?GE"N
W

dela(!0"N
W
2T88888888888888888888888888888888Fin del cdigo88888888888888888888888888888888T2
:l funcionamiento de este ser, el siguiente, cuando colo0ue su dedo cerca del sensor marcado como
OA(P en el +4> del robot el indicador ?:6 marcado como >I se encender,, sino se mantendr,
apagado, como se muestra en la siguiente figura#
Figura ('# Funcionamiento del programa
Eemplo %: Accionar de motores$
+ara probar los motores tenemos 0ue conectarlos en los terminales (verdes con tornillos", marcados
como OMotor AP OMotor >P# :n la siguiente figura se muestra a manera de e9emplo la cone7in#
Figura (I# 4one7in de motores
.ambi/n es necesario conectar la batera con interruptor# Sea cuidadoso al conectar la batera,
conecte el cable ro9o del broche de la batera (positivo" en el tornillo del terminal verde marcado con
OS%P, el negro (com<n, tierra" con/ctelo al otro lado del terminal, marcado con OR=6P#
+uede guiarse de la siguiente figura para conectarlo# 4orte la alimentacin con el interruptor#
Figura (!# 4one7in de batera
4opie pegue el siguiente cdigo en la ventana del L6: de Arduino#
2T88888888888888888888888888888888Lnicio del cdigo88888888888888888888888888888888T2
int runled U 1'N 22Alias para pin 1'
int led0 U $N 22Alias para pin $
int led1 U 10N 22Alias para pin 10
int motor6erecha0 U KN
int motor6erecha1 U 11N
int p*m6erecha U !N
int motorL&0uierda0 U JN
int motorL&0uierda1 U )N
int p*mL&0uierdaU 'N
int +ro7imidad6erechoN
int +ro7imidadL&0uierdoN
void setup("
V
224onfiguracin de entradas salidas
pinMode(runled, G;.+;."N 22Salida digital en runled U pin 1'
pinMode(led0, G;.+;."N 22Salida digital en led0 U pin $
pinMode(led1, G;.+;."N 22Salida digital en led1 U pin 10

pinMode(motor6erecha0,G;.+;."N
pinMode(motor6erecha1,G;.+;."N
pinMode(p*m6erecha, G;.+;."N

pinMode(motorL&0uierda0,G;.+;."N
pinMode(motorL&0uierda1,G;.+;."N
pinMode(p*mL&0uierda, G;.+;."N
224onfiguracin de mdulos
W
void loop("
V
224digo 0ue se repetir, infititamente
22Adelante
digitalErite(motor6erecha0, CLRC"N
digitalErite(motor6erecha1, ?GE"N
digitalErite(p*m6erecha, CLRC"N
digitalErite(motorL&0uierda0, CLRC"N
digitalErite(motorL&0uierda1, ?GE"N
digitalErite(p*mL&0uierda, CLRC"N
dela(1000"N

22Atras
digitalErite(motor6erecha0, ?GE"N
digitalErite(motor6erecha1, CLRC"N
digitalErite(p*m6erecha, CLRC"N
digitalErite(motorL&0uierda0, ?GE"N
digitalErite(motorL&0uierda1, CLRC"N
digitalErite(p*mL&0uierda, CLRC"N
dela(1000"N
22detenido
digitalErite(p*m6erecha, ?GE"N
digitalErite(p*mL&0uierda, ?GE"N
dela(1000"N
W
2T88888888888888888888888888888888Fin del cdigo88888888888888888888888888888888T2
Funcionamiento
:l robot deber, ir hacia adelante, despu/s hacia atr,s por <ltimo detenerse# Se repetir,
infinitamente# %erifi0ue 0ue la secuencia descrita corresponda con el movimiento del robot# Si alguno
de los motores gira en sentido contrario invierta los cables en los terminales de tornillo (verdes"#
Eercicio "
Acomplete la siguiente tabla# 4on los movimientos propuestos resultantes desarrolle un cdigo en el
e9ecuten con una duracin de 1 segundo#
Motor i&0uierdo Motor 6erecho Movimiento de 3obot
Adelante Adelante Adelante
Atr,s Atr,s Atr,s
Atr,s Adelante
Adelante Atr,s
Adelante 6etenido
6etenido
6etenido 6etenido
Eemplo &: 'isuali(acin del valor de los sensores en monitor serial$
;na de las grandes venta9as de las tar9etas de Arduino es su simplicidad para establecer cone7in con
una computadora# :sto se reali&a gracias al convertivor ;S> a serial incluido en la tar9eta# A dem,s el
entorno de programacin cuenta con una aplicacin, monitor serial, 0ue sirve para visuali&ar, recibir
enviar informacin#
:l siguiente programa obtiene el valor de los sensores reflectivos analgico, los cuantifica los
despliega# ?a cuantificacin es el proceso por el cual se le asigna un valor en bits a una seal# ?os
convertidores 4A6, Analgico a 6ecimal, cuantifican las seales, es decir entregan un valor en n<mero
dependiendo de la resolucin 0ue posean# :n el caso del microcontrolador 0ue se usa, Atmega'(), la
resolucin es de 10 bits, es decir 10(I divisiones en la escala del 0 al !%# ;na buen analoga es la
siguiente- Suponga 0ue tiene una escalera de ! metros con 10(I escalones, cada escaln le har, subir
0#00I) metros# Si otra persona le indica 0ue tiene 0ue pintar una linea a (#! metros del piso, @4u,ntos
escalones tendr, 0ue subirB, esto puede resolverse por una simple regla de tres-
A grosso modo eso es lo 0ue hace un convertidor Analgico a 6igital, convierte un volta9e en un dato
0ue pueda manipular#
+ara reali&ar la calibracin los sensores o para obtener informacin de ellos se puede reali&ar un
programa 0ue muestre los datos en el monitor serial# A continuacin se propone el cdigo para
reali&ar esta tarea#
2T88888888888888888888888888888888Lnicio del cdigo88888888888888888888888888888888T2
int runled U 1'N 22Alias para pin 1'
int led0 U $N 22Alias para pin $
int led1 U 10N 22Alias para pin 10
int +iso6erechoN
int +isoL&0uierdoN
void setup("
V
224onfiguracin de entradas salidas
pinMode(runled, G;.+;."N 22Salida digital en runled U pin 1'
pinMode(led0, G;.+;."N 22Salida digital en led0 U pin $
pinMode(led1, G;.+;."N 22Salida digital en led1 U pin 10

224onfiguracin de mdulos
Serial#begin($K00"N 224onfiguracin de baudrate
W
void loop("
V
Dato=
2.5metros1024escalones
5metros
=512escalones
224digo 0ue se repetir, infititamente
+iso6erecho U analog3ead(A("N 22?ectura analgico del sensor derecho
+isoL&0uierdo U analog3ead(A'"N 22?ectura analgica del sensor i&0uierdo

Serial#print(\Sensor de piso derecho- \"N 22Lmpresin de leenda (te7to"
Serial#println(+iso6erecho"N 22Lmprime el valor obtenido en la lectura
Serial#print(\Sensor de piso i&0uierdo- \"N 22Lmpresin de leenda (te7to"
Serial#println(+isoL&0uierdo"N 22Lmprime el valor obtenido en la lectura
dela(1000"N
W
2T88888888888888888888888888888888Fin del cdigo88888888888888888888888888888888T2
Funcionamiento
;na ve& compilado descargado el cdigo se deber, abrir el monitor serial dentro del L6: de Arduino
para ver los datos#
Figura (K# 3ecepcin de datos por el monitor Serial
:n la figura se puede observar los valores obtenidos sobre una superficie opaca, en la parte superior,
en la posterior sobre una superficie refle9ante# :stos datos son importantes para la determinacin del
umbral para la deteccin del borde del doho#
Eercicio %
6esarrolle el cdigo para un programa 0ue muestre por el monitor serial el valor de los sensores en
%olta9e#
Sugerencia
+ara obtener el valor en volta9e puede emplear la siguiente frmula-
Si en el e9emplo anterior se obtuvo el valor de (1J para el sensor de piso derecho su e0uivalente en
volta9e se puede obtener la siguiente manera-
1#0! voltios es el valor 0ue se deber, desplegar#
Voltaje=
ValorObtenidoCAD5Voltios
1024
Voltaje=
2175Voltios
1024
=1.05Voltios
Eercicio &:
6esarrolle un cdigo para desplegar el valor obtenido por 4A6 del sensor conectado en la entrada A0#
4olo0ue el robot en una posicin fi9a# 4olo0ue ob9etos a diferentes distancias haga anotaciones#
Figura (J# 4arateri&acin del sensor
6istancia (centmetros" %alor Gbtenido en 4A6 (0810(I" %alor en %olta9e (08!%oltios"
K0
!0
I0
(0
10
!
A partir de los volta9es obtenidos en cada una de las distancias construa una gr,fica, colocando en el
e9e OXP la distancia (centmetros" en el e9e O]P el volta9e#
Figura ()# 4urva caracterstica del Sensor SCA3+ R+(]0A(1]M
4ompare sus resultados con los datos caractersticos del sensor mostrados en la figura#
Eemplo ): Minisumo * +sico
Explicacin del concurso
4onsiste en un combate entre dos robots 0ue discurrir, por una tarima, tambi/n denominada doho o
ring, consiste en marcar puntos O]u1ohP#
?os combates se componen de dos asaltos de ' minutos m,7imo, cada uno, m,s un terecer asalto en
caso de empate# :l primer competidor en alcan&ar dos puntos de ]u1oh ser, el ganador de la lucha# :l
competidor 0ue gane un punto de u1oh en el tercer combate, ser, el ganador#
Figura ($# 4ompeticin seguidor de lnea, persecucin
Construya una pista para prueas
:s importante tener una pista o construir una con los siguientes materiales#
4artulina blanca,
cinta de aislar negra,
ti9eras#
+ara hacer pruebas dibu9e un doho como el 0ue se muestra en la figura# +or facilidad use una
cartulina blanca, fondo, la linea 0ue delimite el OringP de color negro#
Se propone el siguiente cdigo, copie pegue en el ,rea de cdigo del L6: de Arduino#
2T88888888888888888888888888888888Lnicio del cdigo88888888888888888888888888888888T2
int runled U 1'N 22Alias para pin 1'
int led0 U $N 22Alias para pin $
int led1 U 10N 22Alias para pin 10
int motor6erecha0 U KN
int motor6erecha1 U 11N
int p*m6erecha U !N
int motorL&0uierda0 U JN
int motorL&0uierda1 U )N
int p*mL&0uierdaU 'N
int +ro7imidad6erechoN
int +ro7imidadL&0uierdoN
int +iso6erechoN
int +isoL&0uierdoN
22Funciones
void adelante("N
void atras("N
void detenido("N
void giroderecha("N
void giroi&0uierda("N
void setup("
V
224onfiguracin de entradas salidas
pinMode(runled, G;.+;."N 22Salida digital en runled U pin 1'
pinMode(led0, G;.+;."N 22Salida digital en led0 U pin $
pinMode(led1, G;.+;."N 22Salida digital en led1 U pin 10

pinMode(motor6erecha0,G;.+;."N
pinMode(motor6erecha1,G;.+;."N
pinMode(p*m6erecha, G;.+;."N

pinMode(motorL&0uierda0,G;.+;."N
pinMode(motorL&0uierda1,G;.+;."N
pinMode(p*mL&0uierda, G;.+;."N
224onfiguracin de mdulos
W
void loop("
V
224digo 0ue se repetir, infititamente
+iso6erecho U analog3ead(A("N
+isoL&0uierdo U analog3ead(A'"N
if(+iso6erecho ^ !1( __ +isoL&0uierdo ^ !1("
V
atras("N
dela((00"N
giroderecha("N
dela((00"N
W
else
V
adelante("N
W
W
void adelante("
V
digitalErite(motor6erecha0, CLRC"N
digitalErite(motor6erecha1, ?GE"N
digitalErite(p*m6erecha, CLRC"N
digitalErite(motorL&0uierda0, CLRC"N
digitalErite(motorL&0uierda1, ?GE"N
digitalErite(p*mL&0uierda, CLRC"N
W
void atras("
V
digitalErite(motor6erecha0, ?GE"N
digitalErite(motor6erecha1, CLRC"N
digitalErite(p*m6erecha, CLRC"N
digitalErite(motorL&0uierda0, ?GE"N
digitalErite(motorL&0uierda1, CLRC"N
digitalErite(p*mL&0uierda, CLRC"N
W
void detenido("
V
digitalErite(p*m6erecha, ?GE"N
digitalErite(p*mL&0uierda, ?GE"N
W
void giroderecha("
V
digitalErite(motor6erecha0, ?GE"N
digitalErite(motor6erecha1, CLRC"N
digitalErite(p*m6erecha, CLRC"N
digitalErite(motorL&0uierda0, CLRC"N
digitalErite(motorL&0uierda1, ?GE"N
digitalErite(p*mL&0uierda, CLRC"N
W
void giroi&0uierda("
V
digitalErite(motor6erecha0, CLRC"N
digitalErite(motor6erecha1, ?GE"N
digitalErite(p*m6erecha, CLRC"N
digitalErite(motorL&0uierda0, ?GE"N
digitalErite(motorL&0uierda1, CLRC"N
digitalErite(p*mL&0uierda, CLRC"N
W
2T88888888888888888888888888888888Fin del cdigo88888888888888888888888888888888T2
,uncionamiento
;na ve& descargado el cdigo en funcionamiento el robot deber, desli&arse sobre la superficie del
OringP, al llegar al borde, lnea negra, deber, regresar hacia atr,s dar vuelta# :n este e9emplo
<nicamente se usan los sensores para detectar el borde#
Eemplo -: Minisumo Intermedio
:n el siguiente cdigo se emplean los sensores de pro7imidad para ubicar al oponente#
:l cdigo propuesto
2T88888888888888888888888888888888Lnicio del cdigo88888888888888888888888888888888T2
int runled U 1'N 22Alias para pin 1'
int led0 U $N 22Alias para pin $
int led1 U 10N 22Alias para pin 10
int motor6erecha0 U KN
int motor6erecha1 U 11N
int p*m6erecha U !N
int motorL&0uierda0 U JN
int motorL&0uierda1 U )N
int p*mL&0uierdaU 'N
int +ro7imidad6erechoN
int +ro7imidadL&0uierdoN
int +iso6erechoN
int +isoL&0uierdoN
22Funciones
void adelante("N
void atras("N
void detenido("N
void giroderecha("N
void giroi&0uierda("N
void setup("
V
224onfiguracin de entradas salidas
pinMode(runled, G;.+;."N 22Salida digital en runled U pin 1'
pinMode(led0, G;.+;."N 22Salida digital en led0 U pin $
pinMode(led1, G;.+;."N 22Salida digital en led1 U pin 10

pinMode(motor6erecha0,G;.+;."N
pinMode(motor6erecha1,G;.+;."N
pinMode(p*m6erecha, G;.+;."N

pinMode(motorL&0uierda0,G;.+;."N
pinMode(motorL&0uierda1,G;.+;."N
pinMode(p*mL&0uierda, G;.+;."N
224onfiguracin de mdulos
giroderecha("N
W
void loop("
V
224digo 0ue se repetir, infititamente
+ro7imidad6erecho U analog3ead(A0"N
+ro7imidadL&0uierdo U analog3ead(A1"N
+iso6erecho U analog3ead(A("N
+isoL&0uierdo U analog3ead(A'"N
224ondicin principal
if(+iso6erecho [ !1( __ +isoL&0uierdo [ !1("
V
atras("N
dela((00"N
giroderecha("N
dela((00"N
W
if(+ro7imidad6erecho [ '!0 `` +ro7imidadL&0uierdo [ '00"
V
adelante("N
W
if(+ro7imidad6erecho ^ '!0 `` +ro7imidadL&0uierdo [ '00"
V
giroi&0uierda("N
W
if(+ro7imidad6erecho [ '!0 `` +ro7imidadL&0uierdo ^ '00"
V
giroderecha("N
W
W
void adelante("
V
digitalErite(motor6erecha0, CLRC"N
digitalErite(motor6erecha1, ?GE"N
digitalErite(p*m6erecha, CLRC"N
digitalErite(motorL&0uierda0, CLRC"N
digitalErite(motorL&0uierda1, ?GE"N
digitalErite(p*mL&0uierda, CLRC"N
W
void atras("
V
digitalErite(motor6erecha0, ?GE"N
digitalErite(motor6erecha1, CLRC"N
digitalErite(p*m6erecha, CLRC"N
digitalErite(motorL&0uierda0, ?GE"N
digitalErite(motorL&0uierda1, CLRC"N
digitalErite(p*mL&0uierda, CLRC"N
W
void detenido("
V
digitalErite(p*m6erecha, ?GE"N
digitalErite(p*mL&0uierda, ?GE"N
W
void giroderecha("
V
digitalErite(motor6erecha0, ?GE"N
digitalErite(motor6erecha1, CLRC"N
digitalErite(p*m6erecha, CLRC"N
digitalErite(motorL&0uierda0, CLRC"N
digitalErite(motorL&0uierda1, ?GE"N
digitalErite(p*mL&0uierda, CLRC"N
W
void giroi&0uierda("
V
digitalErite(motor6erecha0, CLRC"N
digitalErite(motor6erecha1, ?GE"N
digitalErite(p*m6erecha, CLRC"N
digitalErite(motorL&0uierda0, ?GE"N
digitalErite(motorL&0uierda1, CLRC"N
digitalErite(p*mL&0uierda, CLRC"N
W
2T88888888888888888888888888888888Fin del cdigo88888888888888888888888888888888T2
,uncionamiento
:l robot comen&ar, a rotar sobre su e9e hasta encontrar un ob9eto cercano, con una distancia no
maor a (! centmetros# 4uando lo encuentre lo empu9ar, hasta el borde del doho retornar, a /l#
Eercicio &:
Modifi0ue el cdigo para 0ue el robot comience su funcionamiento ! segundos despu/s de su
encendido#

You might also like