LibroRobotica Programacion
LibroRobotica Programacion
electrónica y arduino
PROGRAMACIÓN Y ROBÓTICA TEMPRANA
SOCIEDAD LATINOAMERICANA DE CIENCIA Y TECNOLOGÍA APLICADA
Manuel Fernando Guzmán Muñoz Uriel García Gopar
ELECTRÓNICA
JULIO DE 2016
Programación y Robótica Temprana
CRÉDITOS
M. Fernando Guzmán Muñoz
AUTORES
Manuel Fernando Guzmán Muñoz A mis padres que me enseñaron a superar todas las adversidades.
Uriel García Gopar A mi amigo Fernando por su apoyo, amistad y la oportunidad de acompañarlo en
este proyecto.
APOYO EN ELECTRÓNICA A mis compañeros y amigos de trabajo que gracias a su esfuerzo, alegría y apoyo
Itzel Cristal Canseco Jiménez han hecho que este libro se haga realidad.
A esos amigos que ya no están pero que me dejaron mucho; me dejaron costumbres,
APOYO EN ARDUINO formas de comer, de hablar, de pensar y hasta de actuar, me dejaron lo mejor que
Victor Hugo Sánchez Trejo puede existir… Muchos recuerdos.
Ley de Ohm 23
Serie y paralelo 29
Sensores 40
Mi primer Robot 46
Recortable 53
Referencias 97
Materiales a usar Componentes Electrónicos
Conoce el aspecto físico, el símbolo y la función básica de los componente electrónicos que usaras
Nombre Cantidad Nombre Cantidad durante la lectura de este libro.
13
Componentes Electrónicos
Conoce el aspecto físico, el símbolo y la función básica de los componente electrónicos que usaras
durante la lectura de este libro.
Protoboard
Aspecto Nombre Símbolo Función
¿Qué es una protoboard (breadboard)? armar circuitos. Como su nombre lo indica, esta
Un Switch es un dispositivo que abre o cierra un circuito tableta sirve para experimentar con circuitos.
Interruptor, eléctrico. O mejor conocido como proto , es una especie No necesita soldar nada para montar los com-
Switch o Los switchs pueden tener dos o más terminales. de tablero con orificios, en la cual se pueden in- ponentes encima, es como un juego de LEGO
Suiche en formato electrónico.
sertar componentes electrónicos y cables para
NPN
El transistor es un componente utilizado para controlar
Los 5 agujeros de cada fila Las filas verticales y horizontales de Las tiras verticales que recorren toda
corrientes grandes por medio de corrientes pequeñas.
horizontal están conectados la placa de pruebas, conducen la la longitud de la placa está eléctri-
Por tal motivo, puede ser usado como un amplificador
Transistor eléctricamente a través de las electricidad a través de los conte- camente conectada. Estas tiras se
de corriente.
tiras de metal en el interior de nedores de material fino que hay suelen usar para las conexiones de
De acuerdo a su fabricación, los transistores pueden ser
PNP la placa de pruebas. debajo del plástico con agujeros. alimentación y masa.
PNP ó NPN.
10
15
20
25
30
35
40
45
50
55
60
1
5
J
J
de la placa.
I
F G H
F G H
A B C D E
A B C D E
Área de
Sensor de infrarrojos de corto alcance basado en un
10
15
20
25
30
35
40
45
50
55
60
montaje
5
emisor de luz y un receptor, ambos apuntando en la
CNY70 misma dirección, y cuyo funcionamiento se basa en la Tiras metálicas
capacidad de reflexión del objeto, y la detección del conductoras
rayo reflectado por el receptor.
14 15
Dependiendo del grado de resistencia que se
Resistencia eléctrica tiene, podemos decir que existen tres tipos de Un estudio más a fondo de los tipos de materiales
materiales (el estudio es mucho más comple-
Ejercicio
con base a su resistencia eléctrica, te enseñará so-
jo que solo tres) muy usados en electrónica: bre los aislantes ¿Por qué el cable que es un con-
La resistencia eléctrica es una propiedad fí- ductor, requiere de una cubierta aislante?
sica de los materiales; y es de gran utilidad
Los materiales poco resistivos; o sea, materia-
para la Electrónica, pues tiene la labor de ¿Qué es lo que sucede con los electrones cuan-
les que son muy buenos conductores de elec-
controlar la velocidad y cantidad de electro- do se topan en la entrada de una resistencia? Para poder trabajar con resistencias, lo
trones; su movimiento a través de estos mate-
nes que circulan por cierta región del circuito primero que debes de saber es identificar
riales es muy fácil. Un cable de cobre sería un
(como un policía vial); La resistencia eléctrica ¡Los retrasa! La resistencia controla el “cuanto” su valor por medio del código de colores,
ejemplo de este tipo de materiales.
se mide en Ohms y su nomenclatura es el Ω. de electrones dejara pasar al otro extremo de puedes encontrar uno al final del libro.
la misma en cierto momento; NO IMPIDE, CON-
TROLA el flujo de electrones; al final (en condi- Para leer el código de color de una resisten-
Propiedades Físicas: ciones normales de un circuito) todos los elec- cia debes tomarla de forma que la banda
trones a la entrada de la resistencia pasaran a más cercana al borde esté a la izquierda,
on-
El estado natural en el que enc través de ella; pero no todos al mismo tiempo; quedando generalmente una banda de
tramos un elemento en la natu rale za Materiales medianamente resistivos; tam-
eos o). la resistencia eléctrica tiene el trabajo de con- color dorado o plateado a la derecha.
(solido, líquido o gas bién conocidos como semiconductores.
trolar de “cuanto” en “cuanto” pueden pasar
Color. Elasticidad. Olor. Una resistencia eléctrica sería un ejemplo de Ahora tienes que leer las bandas... ¡De
los electrones; por decirlo de algún modo; pa-
este tipo de materiales. izquierda a derecha!
san de dos en dos electrones o de diez en diez;
cuando pasan de dos en dos, la resistencia es
alta y mucho mayor que aquella que permite el La primera banda representa la prime-
Un electrón es una partícula muy pequeña que
ra cifra. ¡Escríbela!
contiene energía, no se pueden apreciar a sim- paso de diez en diez electrones.
ple vista y viaja a velocidades muy altas; todos La segunda banda representa la se-
los aparatos eléctricos que conoces y todos Los materiales muy resistivos; o sea, materiales gunda cifra.¡Escríbela!
aquellos que habrás de conocer y crear, utili- que no son buenos conductores, cuya función Resistencias y Electrónica
zan la energía de los electrones para funcionar. es más de regular el flujo de electrones. Para su uso en la electrónic La tercera banda representa el número
El aire sería un ejemplo de este tipo de materiales. a, disponemos de encap- de ceros que siguen a los dos primeros
sulados llamados resistencia
s; estos ya vienen con sus
Una de las acciones más importantes que se valores definidos de fábrica
, es decir, que el fabrican-
números. ¡Escríbelos!
pueden hacer sobre ellos, es el control de te ha logrado mediante pro
cesos químicos poner a tu
disposición tal o cual cantida
cantidad y esto lo conseguimos con una re- d de resistencia (ohms). ¡Ya tienes el valor de tu resistencia!
sistencia eléctrica.
16 17
Vamos paso a paso, primero es necesario en-
Colorea las resistencias de acuer- Escribe el valor de la resistencia:
Voltaje e Intensidad tender, como lo mencionamos en el tema an-
terior, que los electrones son partículas muy
do a los valores requeridos: eléctrica. pequeñas y su energía es proporcional a su
tamaño, eso quiere decir que para prender un
Tanto la corriente como el voltaje están relacio- foco se necesitan miles de millones de elec-
nados entre sí, son como el día y la noche así trones, pero ¿Cuántos electrones necesitamos
pues un voltaje no puede existir sin una corrien- para prenderlo?
te y una corriente debe tener un voltaje, pero
entonces ¿qué es lo que los hace diferentes?.
Ahí es donde entra la corriente o también lla-
Observa el foco del cuarto donde estás, ahora mada intensidad eléctrica que es el “cuan-
tomando como ejemplo ese foco, explicare- to” (miles de millones) de electrones que son
mos los dos conceptos: producidos por nuestra batería para llenar de
energía a nuestro foco, los cuales por cierto
viajan en forma de flujo constante.
120 Ω 33 KΩ 220 Ω
18 19
Del otro lado tenemos al voltaje, normalmente Entonces, si la fuerza con la que son empujados
se trata de una batería y la podemos encontrar Para determinar cuánta fuerza lleva un electrón se los electrones, está determinada por nuestra En este caso , ¿Cuál sería el equivalente
representada por una letra V. Esta fuente de vol- utiliza la unidad del voltaje: El Volt o voltio y su no- batería y la intensidad se trata de la cantidad de intensidad eléctrica? R.
menclatura es V y son términos en homenaje a Ales- de electrones que necesita nuestra bombilla
taje es la encargada de almacenar electrones sandro Volta, que en 1800 inventó la pila voltaica y
para que cuando el foco solicite energía, nuestra la primera batería química. para encender; ahora podemos entender la
fuente comience a empujarlos para que avan- diferencia entre ambos conceptos y la razón y ¿Cuál crees que sería el equivalente del
cen por todo el circuito hasta llegar al foco. Algunos voltajes comunes son el de una neurona por la que se encuentran tan relacionados. voltaje? R.
(75 mV), una batería o pila no recargable alcalina
(1,5 V), una recargable de litio (3,75 V), un sistema
En otras palabras, el voltaje, tensión o diferen- eléctrico de automóvil (12 V), la electricidad en una Según los expertos, no es el alto voltaje lo que
cia de potencial es el impulso que necesita una vivienda (230 en Europa, Asia y África, 120 en Norte- mata a una persona cuando es electrocutada,
américa y 220 algunos países de Sudamérica), y un En este caso en específico ¿cuál de
carga eléctrica para que pueda fluir por el con- relámpago (100 MV).
sino la cantidad de corriente que fluye y le llega
al corazón. Así es que si la tensión es alta, pero la las botellas tiene mayor “Voltaje” y cual
ductor de un circuito eléctrico cerrado. Este mo-
corriente es baja; hay más probabilidades de que mayor “Amperaje”? R.
vimiento de las cargas eléctricas por el circuito una persona pueda sobrevivir, mientras que de lo
se establece a partir del polo negativo de la contrario; es muy probable que la persona muera.
fuente hasta el polo positivo de la misma,
aunque esto no es necesariamente
cierto, solo es una convención
para su estandarización.
Ejercicios
20 21
Para trabajar con esta ley, necesitamos que
Imagina que eres una bate-
En la siguiente analogía necesitarás plumas de di-
ferente grosor y de preferencia diferente color las
Ley de Ohm. los electrones estén en una trayectoria cerra-
da también conocido como circuito eléctrico,
ría, ayuda a los electrones cuales representan la intensidad de corriente y tú
Idealmente los electrones parten del polo ne-
a llegar hasta el foco. serás la batería o mejor dicho quien se encargue de Ahora que conocemos los tres términos más co-
mover los electrones y los ayudarás a llegar al foco. gativo de la fuente, recorren todos elementos y
munes en electrónica, podemos pasar a una
caminos que demanden energía, para volver fi-
ley fundamental para la electrónica.
nalmente al lado positivo y comenzar de nuevo.
22 23
Si bien la Ley de Ohm está dada por V=I*R Si deseas calcular I, tapamos la parte inferior izquier-
también se puede definir en 2 fórmulas más da del triángulo y nos queda la parte derecha del
I= V/R y R=V/I y a su vez estas se pueden re- triángulo con las letras V y R, como V está arriba de R,
Práctica
Switch
presentar con un práctico e ingenioso Trián- podemos deducir que se trata de una división.
Batería Resistencia
gulo llamado el triángulo de Ohm. La idea 9V 220 Ω
del mismo es bastante sencilla, solo hay que En esta práctica pondrás a prueba LED
cubrir con un dedo el parámetro que se de- la ley de Ohm, observaras de manera práctica y
sea calcular y por arte de magia aparecerá comprobaras con cálculos matemáticos como
la formula correspondiente. se relaciona el voltaje, corriente y resistencia;
26 27
Serie y paralelo Req= R1+R2+...+Rn
Todas para una y una para tod
Preguntas as.
En esta configuración la corriente eléctrica solo
puede circular por un único camino, así que el vol-
En la primer práctica trabajamos con una sola re- taje en cada resistencia es diferente.
Ahora; de acuerdo a los cir- e) Si queremos que la corriente sistencia pero en la vida real esto no pasa ya que
cuitos realizados y tus cálculos disminuya conservando el voltaje, la un circuito tiene múltiples resistencias, hay que
matemáticos de estos deduce lo siguiente: resistencia: destacar que la resistencia eléctrica en la fórmu-
Resistencia en Paralelo
a) ¿Se ve afectado el LED por los cam- la de la ley de Ohm debe ser la resistencia TOTAL.
a b
bios realizados al valor del voltaje y la
Por lo cual debemos saber cómo sacar esta
resistencia? resistencia comúnmente llamada resistencia R1
f) Si queremos disminuir la corriente pero equivalente, por lo regular contamos con 2
mantener la resistencia, el voltaje: tipos de configuración para las resistencia las
cuales son en serie y en paralelo, hay que co-
a b
b) Si la resistencia se queda fija y sube el mentar que estas no son las únicas configura- R2
ciones que existen, pero si las mas básicas.
voltaje, la corriente:
Resistencia en Serie Por otro lado; a la manera en cómo están colo-
cadas las resistencias en la figura se le conoce
como configuración en paralelo; y la Resistencia
¿Cómo saber qu
e los electrones equivalente se calcula de la siguiente manera:
c) Si la resistencia aumenta y el voltaje se si regresan a la fu
mantiene, la corriente: ente? a ba b
R1 R2
Req = R1 x R2 x...x Rn
¡Fácil! Teniendo
en cuenta que
se crea ni se de la energía no
creando electrone
struye, y que tu
batería no está A la manera en cómo están conectadas las re-
R1+R2+...+Rn
s; pues, si estos no sistencias en la figura se le conoce como con-
la fuente para co volvieran a
menzar el recorrid
LED se encender
ía una sola vez;
o de nuevo, el figuración en serie; físicamente consiste en dos
d) Si queremos que la corriente aumente; los electrones, via
jando a velocidad
pero el flujo de o más resistencias, conectadas una seguida de
lo mantiene ence es altísimas,
la resistencia o el voltaje ndido. la otra; compartiendo una sola terminal (punto En esta configuración la corriente se divide y circula
A y B) entre cada par de ellas, y para encontrar por los diferentes caminos que forman las resistencias,
el valor equivalente solo se suma los valores de así que el voltaje en todas las resistencias es el mismo.
cada una de ellas:
28 29
Arma el circuito que se muestra a continuación:
0Ω
portante saber identificarlas en un circuito de 1 Batería 9v
33
verdad, por tal motivo en estos ejercicios primero 2 Resistencias 1kΩ
tendrás que identificar que tipo de configuración
0Ω
es y después se calculará la resistencia equiva- 2 Resistencias de 2.2 kΩ
33
lente de cada uno de los circuitos que te mostra- 1 LED
mos a continuación : Req=
Arma el circuito que se muestra a continuación: Arma el circuito que se muestra a continuación:
Circuito en: 330Ω
220Ω
Circuito en:
220Ω
330Ω
2.2KΩ
1KΩ
2.2KΩ
220Ω
1KΩ
330Ω
Req=
Req=
Calcula la resistencia Equivalente y la co-
Calcula la resistencia Equivalente y la co- rriente del circuito. R.
Circuito en: rriente del circuito. R.
220Ω
Circuito en:
220Ω
220Ω
220Ω
220Ω
220Ω
Req= Req=
30 31
Arma el circuito que se muestran a continuación: Como pueden observar las resistencias equiva- Motor.
lentes funcionan para simplificar un circuito y
¿Notas algún cam- también para poder saber ya sea el caso y Un motor es un dispositivo que convierte ener- Ejercicio
bio respecto al cir- gracias a la ley de Ohm, la corriente o el voltaje gía eléctrica en movimiento, así pues un motor
de manera interna, es un cable largo, que se En el siguiente ejercicio
1KΩ
32 33
Doblamos el alambre de cobre de manera
Transistor En el mercado, existen
dos tipo de transistores:
que una punta del mismo toque la parte po- Una llave de agua en electrónic NPN y PNP, estas siglas
a. solo hacen referencia
sitiva de la pila y la otra toque el imán. (Que Nota: Si lo dejas funcionando un largo
rato, el cable de cobre se calienta y a la distribución de los
no toque el piso porque no podrá girar). Hasta el momento hemos estudiado elementos materiales que lo con-
después cuando lo quieras agarrar te
quemarías los dedos. de dos terminales, sin embargo, también hay forman; el transistor está
de tres terminales; como lo es el transistor, Los Colector constituido de materia-
cuales son administradores de electrones; y en Base les semi conductores.
Emisor
Este tipo de motor es llamado motor ho- su trabajo son los mejores; tanto que desde su
mopolar y se caracteriza porque el campo descubrimiento hasta el día de hoy; ha sido un El hecho de que sea un elemento de tres ter-
magnético del imán mantiene siempre la parte aguas en la historia de la electrónica. minales, convierten al transistor en un elemen-
misma polaridad y es uno de los muchos to altamente sensible a los parámetros de vol-
motores magnéticos que existen, el más ¿Cómo administran los electrones? Haciendo taje y corriente que recibe; dependiendo de
sencillo de todos. uso de las tres terminales que lo conforman y, estos criterios el transistor puede operar en las
que cumplen cada una de ellas, las siguientes siguientes modalidades; que en electrónica se
Este se basa en la fuerza de Lorentz que funciones: conocen como regiones de operación:
Listo ya van a ver como el alambre empie-
aparece sobre la corriente eléctrica que
za a girar. Cambiando la pila o el imán, o El colector: es el encargado de recibir la ener-
en este caso genera la pila al atravesar un Región activa: La base tiene una posición in-
variando las características del cable de gía; su capacidad máxima determina también,
campo magnético en este caso generado termedia entre su máximo y mínimo, es decir
cobre, por ejemplo el grosor, podemos mo- la entrega máxima de energía posible.
por el imán de neodimio, que el flujo de corriente llevan el suficiente em-
dificar la velocidad de giro.
puje y poseen el suficiente espacio para atrave-
La base: es la encargada de controlar “cuan- sar desde el colector al emisor. Esta es la región
ta” energía será entregada a la salida; es decir óptima del trabajo del transistor.
e Lorentz controla el flujo entre la base y el emisor.
La fuerza d Región de corte: La base tiene en esta región,
arga a
e xp e rim enta una c El emisor: que responde al control del colector; una posición; de “cerrado” lo que se traduce a
Es la fuerza
qu e agnético.
c a m p o electrom entrega la energía según las capacidades de la
su paso po
r u n un flujo de corriente muy pero muy pequeña;
base y lo dictado por el colector. que es inutilizable. Es decir, se puede conside-
rar que no hay flujo entre el colector y el emisor.
34 35
lo que garantiza que todo el flujo de corriente que Esta apertura máxima, permitirá que todo el flu- Arma el circuito que se muestra a continuación:
entra por el colector es transmitida y entregada jo que la base recibe sea entregada a la salida
por el emisor. Podría pensarse que es la región más
óptima; pero lamentablemente; recuerda que es-
con un mínimo de pérdidas.
Práctica
tamos hablando de energía; si esta energía no
lleva un flujo adecuado (controlado y uniforme);
entonces mucha de esa energía se pierde en for- Ejercicio Ahora veamos de manera práctica la eficien-
ma de calor y eso calentará tu circuito y también
Básicamente existen tres posibles cia con que un transistor administra electrones.
el transistor; a la larga eso daña el elemento.
escenarios para observar cómo tra-
baja un transistor; a estas se les conoce Lo que necesitas:
En electrónica, todos los elementos comerciales en electrónica como regiones de operación y en
tienen un documento que presenta las caracterís- este ejercicio tendrás que identificar cual es cada
ticas generales de operación del elemento; a este una de ellas de acuerdo a los dibujos presentados. 1 Transistor 2N222
documento se le conoce como Data Sheet. Bus- 1 Potenciómetro de 22KΩ
ca en tu navegador: 2N222 Data Sheet y aprende
más sobre este transistor en específico. 1 Motor de corriente directa
c e Región 1 Protoboard
En analogía, imagina una llave de agua, cuyo 4 Pilas AA
diámetro es de 2cm; esos 2cm serán la apertu- 1 Portapilas para cuatro pilas AA
ra máxima de llave; el colector es la manija de b Cables UTP Un potenciómetro; es un resistencia va-
la llave de agua, pues está controlando el flujo riable, que según la posición de la perilla
entre la base y el emisor, que es el encargado Para comenzar debes identificar la base, el co- puede ir desde su mínimo de 0Ω hasta el
de entregarte el flujo de agua; puedes tener Región lector y emisor del transistor; apóyate en la figura. máximo indicado por el fabricante
c e
todo el flujo (región de saturación) puedes ima-
colector
ginar como el chorro no es uniforme y se gene- 1 Con la parte plana de la cabeza del transistor
ra mucha presión que ocasiona que gotas de b Transistor NPN
de frente a ti; la primer terminal es el colector,
agua salgan disparadas por fuera del torrente la segunda es la base y la tercera y última el
general y se pierdan; también es posible que emisor; Una vez identificadas las terminales, co-
la manija (colector) esté totalmente cerrada 2
loca el potenciómetro; ten cuidado de hacer
Región base
(región de corte) y eso no genera ningún flujo c e
coincidir los extremos tal como se indica en la
de agua, aun cuando la tubería tenga agua; figura; en el caso del potenciómetro no importa
y el ultimo escenario donde tenemos un flujo
1
2 desde que perspectiva tomes la terminal uno,
moderado y constante (región activa). b 3 3
emisor
36 37
pero si debes asegurarte de que la perilla este Pero la historia no termina ahí; lo siguiente que
en alguno de sus extremos posibles(máxima o debes de saber y observar es que el motor es
mínima resistencia); conecta finalmente el mo- un elemento polarizado; es decir, su compor- ¿Qué le sucedió a la velocidad del motor? R.
tor y lo último que debes conectar es la batería. tamiento depende de que terminal coloques
en positivo y cual en negativo; deja el poten-
Preguntas
NOTA: Si una vez conectada la batería, ciómetro cerca del tope de velocidad máximo
el motor no funciona, mueve la perilla Una vez comprendido esto, iden-
y desconecta tu batería; con cuidado, coloca
del potenciómetro al otro extremo. tifica la situación que se te pide.
las aspas que te proporcionamos al final del li- El motor es uno de los elementos electrónicos
bro como material complementario sobre el eje que más consume energía; es decir, el flujo de
Con el potenciómetro en su máxima capacidad:
Interesante ¿No? ¿Acaso acabas de ver como se del motor, vuelve a conectar la batería y obser- corriente que demanda es muy grande y en
transforma la energía de los electrones, en mo- va el movimiento de las aspas. todo momento; y mientras más oposición en-
vimiento? ¡Claro! Justamente eso es lo que hace cuentre a su movimiento (las aspas que pesan Activa Saturación Corte
un motor; transforma la energía de los electrones más le presentan más oposición) más corriente
en energía mecánica; o sea movimiento. demanda para poder mantener la velocidad;
¿Velocidad del motor? R.
¿Quién empuja los electrones? Pues, debido a
Juega con tu perilla, yendo entre ambos extre- que el valor de la fuente no cambia, pero el
mos de la resistencia variable y observa que es trabajo que realiza el motor es mayor, su veloci- Con el potenciómetro en su mínima capacidad:
lo que cambia en tu motor. Lo primero que de- dad disminuye.
bes entender es que parámetro del transistor se
Activa Saturación Corte
está cambiando al mover la perilla del poten- Con esto podemos aterrizar que el control de un
ciómetro. A continuación tacha la opción que Ahora intercambia las terminales del motor; no olvides motor involucra tres aspectos: Velocidad, senti-
ilustre la situación correcta. desconectar la batería cuando realices los cambios. do y fuerza; esto lo hace un poco complicado ¿Velocidad del motor? R.
¿No? Cada uno de estos aspectos involucra al
control de voltaje y corriente, no precisamente
Activa Saturación Corte ¿Qué sucedió con el sentido de las aspas? R.
en ese orden. Para esto nos sirve un transistor; Con el potenciómetro en el medio:
para administrar precisamente estos paráme-
Explica el motivo de esta situación. R. tros; el transistor es el encargado de administrar Activa Saturación Corte
Nuevamente localiza una velocidad óptima la corriente al motor; y tú eres el encargado de
con el potenciómetro y ahora replica las aspas controlar al transistor ¿Con que terminal? ¡Claro!
en otro material, como cartón y papel casca- Tu ejerces el control sobre la base. ¿Velocidad del motor? R.
ron, asegurando que cada nueva aspa sea
más pesada que la anterior.
38 39
Térmico Hilo de
Sensores hierro
Es decir:
Sintiendo el mundo. Los CNY70 son un par de leds
Fotoeléctrico que envían y reciben rayos
Si una superficie es muy blanca; absorberá
Hilo de de luz (imperceptibles para
¿Cómo sientes el mundo? Al mundo lo puedes constatan el ojo humano); y la informa- poca luz y la mayor cantidad la rebotará de
ver, oler, escuchar, saborear y palpar; y ade- Químico ción útil para ti es cuanta de regreso.
más, tu vida misma genera acciones de impac- esa luz que fue enviada, se
pudo recibir de regreso. Si una superficie es muy negra; absorberá
to en el mundo; el mundo te siente a ti. Cada Hilo de Hilo de
uno de los sentidos que acabamos de describir, Silicio acero cobre mucha luz y solo un poco de luz será rebotada
y, que te permiten interactuar con el ambiente de regreso.
son ¡sensores! ¡Tus sensores! ¿Cómo lo hace? Pues bien, si tu observas el sen-
Una superficie opaca; idealmente absor-
sor, veras que tiene dos leds; uno de ellos es el
berá y rebotará la mitad de la luz recibida.
¿Actuar? También posees actuadores; es decir encargado de enviar rayos de luz al ambiente;
Sensor aquellos instrumentos que utilizas para ejercer el ambiente o superficie recibirá este rayo y de-
Una de las restricciones más grandes que tie-
acciones sobre el mundo; tus manos, tus pies, pendiendo de una propiedad óptica llamada
ositivo que nen este tipo de sensores es la distancia; ¿Por
En electrónica; un sensor es un disp tu movilidad como tal es un actuador. reflexión, rebotará cierta cantidad de luz de
acc iones o qué? Pues el haz de luz que es proyectado tie-
está capacitado para detectar regreso (la otra es consumida por la superficie
Esto s apa rato s pue den ne cierta fuerza de alcance, más lejos de esa
estímulos externos. Miles de millones de nervios, trabajando con tu o distribuida en el ambiente) siguiendo casi la
des físic as o quím icas
transformar las mag nitu distancia la luz se esparce en el ambiente y no
en magnitudes eléctricas.
cerebro para llevar las “sensaciones” interpre- misma trayectoria en la que la recibió.
logra llegar a la superficie para ser reflejada.
tarlas y en base a eso, “actuar”.
Medio reflactante Este fenómeno lo puedes observar con una
linterna, en un cuarto obscuro prende una lin-
Hasta ahora ya puedes nombrar un actuador
Un sensor te permite obtener información de los terna; veras que el rayo lleva un forma y una
¿Verdad? ¡Claro! El motor es el actuador más
fenómenos físicos y químicos que están presen- intensidad definida hasta cierta distancia; más
famoso en el mundo de la electrónica; en la
tes en la naturaleza, para que tu cerebro los lejos, el haz se pierde (se distribuye en el am-
práctica anterior logramos “semi” automatizar
pueda interpretar y actuar al respecto. biente) Si tu no colocas un objeto que refleje,
el control de un motor por medio de un transis-
Emisor Detector antes de que el haz se pierda, pues no podrás
tor; en este capitulo lo que haremos será que
Ejemplos de fenómenos físicos y químicos que tener nada de luz reflejada. Lo mismo ocurre
ese control termine de ser automático por me-
pueden ser medibles por un sensor: para los sensores CNY70.
dio de un par de sensores CNY70.
40 41
Lo primero que debes hacer es identificar las
terminales del transistor puedes apoyarte de la
Como todo dispositivo electrónico; Responde que pasa con el sen-
siguiente imagen:
el CNY70 también cuenta con su sor en cada caso que se ilustra a Práctica
Data sheet ¡Consúlta! continuación: colector
1
Resistencias
1
2
Sensores de luz; CNY70 3 3
emisor
Un Motorreductor
¿Puedes deducir por que el color del Cartulina de 2x2cm de color negro mate Una vez colocado el transistor, identifica las ter-
LED emisor en el CNY en obscuro? R. La Superficie que ve el sensor es blanca. R. Cartulina de 2x2cm de color blanco mate minales del sensor puedes apoyarte de la si-
Cartulina de 2x2cm de color naranja mate guiente imagen:
Cartulina de 2x2cm de color azul cielo mate
Cartulina de 2x2 cm de color morado mate A B
42 43
Coloca el motor y la resistencia en la dirección por ejemplo, algunos cambian su resistencia;
que prefieras y lo último que debes conectar algunos más, entregan cambios de corriente;
es la batería. Una vez que tu circuito está to- hay sensores que abarcan gran cantidad de b) Con estos cambios debes de ser capaz e) ¿Qué le sucede a la velocidad
talmente armado, asegúrate que las terminales rangos; otros por ejemplo, abarcan rangos muy de distinguir cambios en la velocidad del mo- del motor si la superficie es blanca?
de los elementos coincidan tal como se mues- pequeños, sobre todo en aquellos diseñados tor; con base a esto; ¿A qué elemento de la
tra en el diagrama. Por último, debes acercar la para proyectos donde se requiera mucha pre- práctica anterior está sustituyendo el sensor?
superficie negra a unos 5mm de distancia de tu cisión y percibir cambios muy pequeños (mu-
sensor, observa que sucede. cha sensibilidad).
44 45
color de una superficie que tiene frente a sus
Mi primer Robot ojos “sensores ópticos” y en base a lo que “ve”
Integra tus conocimientos. tomar cierta dirección; hay seguidores que El sistema linfático
avanzan hacia adelante mientras detectan Conformado por los transistores; su fun-
quita lo divertido; y hasta el reto de que, una 1. Los sensores están muy separados de la superficie y Conformado por dos motores; está con-
no “ven” el haz de luz reflejado. trolado por la respuesta de los sensores;
vez dentro de este mundo de la electrónica,
20
20
46 47
Como ves en esta práctica utilizamos los dos ti- Diagrama Esquemático. Diagrama Pictórico.
pos de transistor que existe un NPN en este caso
el BC547 :
Práctica
D1114
D1114
M
M
colector 1
A B C D E F G H I J
1
3
Transistor NPN 5 5
Lo que necesitas:
20 20
1 KΩ
1 Llanta Loca 2
1 KΩ
1 1 25 25
2 Llantas emisor
2 Sensores CNY70 30 30
2 Transistores BC557
y un PNP en este caso el BC557 1 KΩ 1 KΩ
35 35
4 Transistores BC547
4 Resistencias 330 Ω
47 K Ω
47 K Ω
40 40
2 Resistencias 10 K Ω
1 emisor 45 45
4 Pilas AAA ó AA
10 K Ω 55 55
48 49
Recuerda que la batería es el último elemento
Motor Motor
que debes conectar.
Dale una última revisión antes de conectar la Cómo ves el ancho de la línea de esta pista es el mismo lado corrigiendo la dirección nueva-
batería... ¡Comenzamos! de más o menos 2 cm, por lo cual al momento mente. Este comportamiento lo deberás obser-
de armar nuestro robot tenemos que tener en var en las curvas que tenga tu pista.
cuenta esto para dejar espacio suficiente para
Una vez que esto está conectado se puede com- 0.5 cm que la línea quede entre los sensores, otra cosa ¿Fascinante no? ¿Cómo lo hace? Pon atención,
probar si el emisor está prendido enfocándolo con Sensores
la cámara del celular, la webcam de la computa- importante es que los sensores tienen que estar y veras que los sensores caen sobre la superfi-
dora o alguna cámara digital ya que a simple vista máximo a 5mm de distancia del suelo para que cie blanca de la pista; lo cual genera que los
no es muy perceptible. sensen bien por lo que es recomendable soldar transistores estén trabajando en la región ac-
¿Listo? Ponlo a prueba en tu pista.
cable al sensor y montarlo sobre una superficie tiva y eso mismo se traduce en un flujo cons-
La primer prueba la haremos por cada sen- Por lo regular la pista de una competencia de de cartón para extender el largo y quede a la tante y uniforme hacia los motores (cada par
sor; acerca una superficie blanca no más de este tipo de robot es blanca con una línea ne- altura indicada. de sensores tiene un etapa de tres transistores
5mm de distancia de tu primer sensor (puede gra de 2 hasta 3.5 cm de ancho, nosotros para para controlar); que avanzan en línea recta;
ser cualquiera); un motor debe girar de mane- armar nuestra pista utilizaremos una cartulina En el proceso de fabricación de la pista reco- si uno de los sensores “ve” una región obs-
ra uniforme; prueba ahora una superficie ne- blanca y cinta de aislar negra. mendamos no hacer curvas tan pronunciadas cura o negra; inmediatamente el voltaje del
gra en ese mismo sensor CNY70, el motor debe ya que el robot puede salirse de la misma, esto colector es casi cero, con lo cual el motor no
detenerse con esto se asegura un leve giro del se corrige controlando la velocidad del robot alcanza a moverse.
robot ¿Cierto? Si todo coincide tu sensor funcio- cosa que en este momento no hacemos, sería
na correctamente. Deberás replicar la misma 2 cm interesante que investiguen cual es el proceso Queda de ti, de aquí en adelante; imaginarte
prueba en el otro sensor de CNY70 y observar el para realizar esto. diseños de cualquier tipo, con robots que pue-
mismo comportamiento con el motor opuesto. dan no solo ver y moverse, sino, oler, escuchar,
3.5 cm El comportamiento deberá ser el mismo; sobre medir temperaturas, capaces de grabar, de
Si hasta este momento has obtenido el com- la línea negra el robot avanzará en línea recta; saltar y de ejercer muchas mas acciones sobre
portamiento adecuado, debes montar tu pro- Sensor Sensor si el sensor derecho percibe una línea negra su medio ambiente
toboard sobre una base sólida de 30 x 10 cm; (la pista); el robot deberá girar hacia el mismo
esta base puede ser madera MDF o acrílico;
apóyate de la siguiente figura; para montar Pista
lado para corregir la ruta; si el sensor izquier-
do percibe una línea negra el robot gira hacia ¡Hasta la próxima!
correctamente tus motores y empezar a darle
forma a tu robot.
50 51
Recortable.
Aspas
Código de colores
52 53
PROGRAMACIÓN Y ROBÓTICA TEMPRANA
SOCIEDAD LATINOAMERICANA DE CIENCIA Y TECNOLOGÍA APLICADA
Manuel Fernando Guzmán Muñoz Uriel García Gopar
Para leer el código de color de una
resistencia debes tomarla de forma
que la banda más cercana al bor-
de esté a la izquierda, quedando
generalmente una banda de color
dorado o plateado a la derecha.
ARDUINO
Ahora tienes que leer las bandas... JULIO DE 2016
¡De izquierda a derecha!
54
ÍNDICE Historia 59
Entorno de trabajo 63
Estructuras de Código 68
Entradas y Salidas 69
Estructuras de control 71
Comunicación Serial 73
PWM 83
Librerías 86
Juego de Velocidad 91
Recortable 95
Historia.
Arduino.
¡Hola!
Veo que has llegado bien hasta aquí, ahora Si nos centramos en el software podemos desta-
que tienes los conocimientos necesarios de car que esta disponible para las 3 plataformas
electrónica, deja te muestro la casa y por casa más importantes del mercado (Windows, Mac y
me refiero a nuestra placa Arduino. Linux), Aprender el lenguaje de programación
es sencillo, sobre todo si ya tienes experiencia
Arduino es una Plataforma de electrónica en otros lenguajes de programación como C o
“Open-source” o de código abierto que cuen- Java ya que Wiring / Processing el lenguaje con
ta con software y hardware abierto un concep- que se programa se basa en ellos.
to que te recomiendo ampliamente que inves-
tigues, ya que presenta todo un nuevo campo Por otro lado la placa Arduino cuenta con di-
en el área de las licencias de uso. ferentes versiones disponibles en el merca-
do todos los tamaños y cada una orientada
a distintas implementaciones, por ejemplo, si
quieres trabajar un proyecto en el que tienes
un espacio reducido, puedes pensar en un Ar-
duino micro el cual es de solo la tercera par-
te del Arduino más sencillo y por consiguiente
más utilizado que sería el Arduino uno, también
Tanto el software como el hardware son muy podemos contar con placas específicas para
populares pero lo mejor es que son fáciles de conectarse a internet Arduino yun o con mayor
usar, por lo cual pronto te sentirás interesado en cantidad de pines de entradas y salidas como
todo lo que puedes hacer con algunos conoci- el Arduino mega.
mientos de electrónica y programación.
59
DIAGRAMA DE PINES
Arduinos en el mercado.
Pins 13 LED Pins Digitales
ARDUINO UNO
El único componente que Usar estos pins con las
actúa como dispositivo de instrucciones digital-
salida incorporado a su ar- READ(), digitalWrite() y En el mercado existen una gran variedad de arduinos en la siguiente tabla encontrarás cuatro
duino UNO. Lo usará cuando analogWrite(). La instruc- de los más utilizados.
ejecute su primer programa. ción analogWrite() solo
Este LED es muy útil para la trabaja con los pins con
depuración. el símbolo PWM. Nombre Características Ventajas Consideraciones
Botón de reset
Procesador Atmel Atmega 328
Puesta a cero del mi-
GND
9
8
7
6
5
4
3
2
1
0
AREF
13
12
10
11
GND
9
8
7
6
5
4
3
2
1
0
AREF
13
12
10
11
RESET
RX0
TX0
cro-controlador ATmega
DIGITAL (PWM= )
RESET
RX0
14 Entradas/Salidas digitales
TX0
ICSP2
L
DIGITAL (PWM= )
TX ON
ICSP2 Arduino
(6 de ellas son PWM)
TM
LED de Encendido
RX
L 1
ICSP
TX ON 6 Entradas analógicas Tamaño grande para
Indica que la placa ar-
Arduino
TM
RESET
IOREF
1 mentada. Útil para la
GND
GND
3V3
Puerto USB
VIN
5V
A0
A1
A2
A3
A4
A5
depuración. Incluye jack de alimentación.
Conexión USB B
ICSP
Usado para alimentar
y cargar los programas 2KB SRAM
a su arduino, y para la
comunicación con el Arduino
Microcontrolador 32KB FLASH
programa de arduino
ATmega UNO
(mediante la instrucción
Serial.printin() etc.) POWER ANALOG IN
El corazón de la placa
RESET
IOREF
VIN
arduino UNO.
5V
A0
A1
A2
A3
A4
A5
20 Entradas/Salidas digitales
(7 de ellas son PWM)
MOSI
D12D
D11
D10
GND
RST
RX1
TX1
D9
D8
D6
D5
D4
D3
D2
SS
D7
TM
Conector de Arduino L
TX RX
Buen tamaño para
LEDs TX y RX
MICRO
12 Entradas analógicas espacio reducido
alimentación
ICSP
MISO
3V3
GND
REF
RST
VIN
SCK
A4
A0
A1
A2
A3
A5
NC
5V
NC
13
16Mhz Velocidad de Reloj Gracias a sus capacidades USB No posee un conector
Este conector se utiliza Estos diodos LEDs indica Pines GND y 5V Entradas Analógicas. puede emular las funciones de de alimentación externa
para alimentar la placa cuando se realiza una co- Conexión Micro USB un mouse y un teclado
de arduino cuando no municación entre arduino y Usar estos pins con la instruc-
Usar estos pins para propor- ción analog RED().
esta conectada a un ordenador. Parpadean rápi- 2.5KB SRAM
cionar una tensión de +5V y
puerto USB. Acepta ten- damente cuando se carga el
masa para los circuitos exter-
siones entre 7 y 12 V. programa así como durante
nos a la placa. Arduino 32KB FLASH
la comunicación serie. Útil
para la depuración. MICRO
60 61
Arduinos en el mercado.
Opciones no oficiales y compatibles.
Nombre Características Ventajas Consideraciones
Además de las versiones oficiales, que tes abiertas permite que otras personas
puedes adquirir directamente desde y/o empresas puedan realizar versiones
Procesador Atmel Atmega
328V o Atmega 168 su página, es fácil encontrar en el mer- idénticas y comercializarlas.
cado muchas opciones de distintas
a4/
18
a5/ a3/
19 17
14 Entradas/Salidas digitales
(6 de ellas son PWM)
marcas que pueden conocerse como Para el caso de las versiones compati-
- a2*/
16 Tiene pines especiales para
B G
coser sensores y actuadores “no oficiales”. Estas son idénticas a las bles, se trata de versiones basadas en
+ 11 6 Entradas analogicas utilizando un hilo conductivo.
Enfocado a textiles oficiales pero están selladas bajo otra Arduino pero que agregan distintos com-
y “weareables” marca, generalmente se trata de versio- ponentes con la intención de orientarlos
On
Off
54 Entradas/Salidas digitales
(15 de ellas son PWM)
L
TX
RX
62 63
Instalación del IDE 3 El proceso va a extraer e instalar todos
los archivos necesarios para ejecutar co- Menú
Botones de
1 Elegir los componentes a instalar. rrectamente el software de Arduino (IDE). acceso rápido
Editor de texto
para escribir el
código.
64 65
Realizado todo el proceso, ahora si podemos
quemar nuestro programa con toda confianza,
Pin 13
Así que, después de ésta introducción vamos con lo que veremos una barra de progreso y en un mo-
Ejercicio nos interesa, conectemos esa placa a la computadora y mento podremos darnos cuenta que en nues-
hagamos que funcione. tra placa se enciende y apaga el LED ubicado
GND
9
8
7
6
5
4
3
2
1
0
AREF
13
12
10
11
RESET
RX0
Primer programa cerca del pin 13.
TX0
DIGITAL (PWM= )
ICSP2
L
podemos verlo en la parte inferior derecha. rrecto. Esto para no afectar tu placa.
ICSP
Para iniciar vamos a cargar el código de
1 ejemplo de “Hola Mundo”, para esto nos
dirigimos al menú:
POWER ANALOG IN
RESET
IOREF
En caso de que el modelo de Arduino no sea el co-
GND
GND
3V3
VIN
5V
A0
A1
A2
A3
A4
A5
Archivo > Ejemplos > 01.Basics > Blink. rrecto, podemos elegirlo en el menú:
¡Felicidades!
como el Arduino Nano, disponen de distintos proce-
sadores según la versión.
VERIFICAR
Para el caso del puerto podemos encontrarlo en
menú: Ya tienes un “hola mundo” y acaba de iniciar
Veremos los datos del programa en el apar-
3 tado de consola, una vez verificado nuestro
código procedemos a “quemarlo” en nues-
“Herramientas > Puerto” tu aprendizaje en el mar de opciones que ofre-
ce Arduino.
tro Arduino. y encontraremos una lista de los puertos disponibles
en ese momento. En caso de no encontrar ninguno,
te recomiendo revisar que tu arduino esté correcta-
mente conectado.
CARGAR
66 67
comentarios. Los bloques de comentarios son
Estructuras de espacios que nuestro programa ignora y que La siguiente función es loop, todo el código de Entradas y salidas.
código. nos permiten hacer más legible nuestro código.
Estos pueden ser una línea definida por una do-
esta función se repetirá en un ciclo continuo,
permitiendo a tu programa mantener la comu-
ble diagonal: nicación entre los componentes. ¿Recuerdas cuáles son los dispositivos de entra-
Lo primero que tenemos que entender es que da y salida de una computadora? Bueno pues
hay una estructura en las funciones de Arduino. // Esta línea es ignorada por el programa este proceso funciona de la misma manera. Si
Códigos
Esta no y va marcar un error lo que deseas es Leer un dato, entonces se tra-
1 void loop()
Códigos 2 { ta de un pin de entrada. Ahora, si lo que buscas
1 void setup() Y también pueden ser bloques que permiten 3 digitalWrite(pin, HIGH); //Activa ‘pin’ es escribir sobre ese pin, se trata de un estado
más de una línea definidos por una diagonal 4 delay(1000); //espera un segundo de salida.
2 { 5 digitalWrite(pin, LOW); //Desactiva ‘pin’
y asterisco.
3 código; 6 delay(1000); //espera un segundo
4 } 7 } Dentro del setup de nuestro código es impor-
/*
5 void loop() tante declarar los pines que vamos a utilizar en
Este es un bloque de comentario
el programa, para esto usamos la función pin-
6 { mucho más largo y
puede ser multilinea Mode, la cual recibe como parámetros el nú-
7 código; Una función es un bloque de código que tiene
*/ mero del pin y su estado INPUT y OUTPUT, pines
8 } un nombre y un grupo de declaraciones que se
de entrada o pines de salida.
9 ejecutan cuando se llama a la función.
La primera función que tenemos por defecto en
10 tipo funcion(parametros){ nuestros programa es la función setup, esta fun- La estructura de la función es la siguiente:
En primer lugar se declara el tipo de la función,
11 código; ción no recibe parámetros. Y se ejecuta cuando pinMode(num_pin, estado).
que será el valor retornado por la función (int,
12 } inicia Arduino, es una buena idea usarla para void...). A continuación del tipo, se declara el
declarar algunas variables, definir el estado de nombre de la función y, entre paréntesis, los pa-
nuestros pines o cualquier instrucción que solo rámetros que se pasan a la función.
En programación, la estructura del código es queremos se ejecute al iniciar nuestra placa Algunas anotaciones que debes tomar en cuenta es
importante para que funcione correctamente, Códigos que las palabras INPUT y OUTPUT se escriben en ma-
yúsculas, esto es porque se trata de valores cons-
esto es igual en Arduino. Ahora veremos las fun- Códigos 1 tipo funcion(parametros){ tantes. De igual manera toma en cuenta que el pin
ciones y sintaxis para codificar nuestros progra- 1 void setup() 2 código; analógico cuenta con una “A” antes del número que
mas dentro del IDE de Arduino. 2 {
3 pinMode(pin, OUTPUT); //ajusta ‘pin’ como salida
3 } está marcado en tu placa.
4 }
Antes de comenzar quiero contarte que los
lenguajes de programación permiten hacer
68 69
Pongamos un ejemplo sencillo. Si yo quiero por les solo pueden tener dos valores 0 y 1, en este ro 3 y que el valor devuelto es asignado a la
ejemplo, poner el pin digital número 7 en modo caso definidas como HIGH y LOW. variable “valor2” de tipo entero. Un dato muy Estructuras
de entrada, para hacer una lectura, la función importante, a diferencia de la escritura donde de control.
sería la siguiente: //leer un valor de un pin digital: los valores van desde 0 hasta 255, en este caso
int valor1 = digitalRead(5); los valores de lectura comprenden desde el 0
Dentro de Arduino disponemos de una serie
pinMode(7, INPUT); hasta el 1024. Una vez más; basta una simple
de instrucciones para procesar nuestros datos
Ahora la función solo recibe un parámetro que regla de 3 para determinar el valor del voltaje
que pueden ser de gran utilidad. A estas se les
Ahora si lo que me interesa es poner el mismo indica el número del pin. Además podemos ver necesario para generar un valor específico.
conoce como estructuras de control y pueden
pin ahora en modo de escritura, este modo es un ejemplo de asignación, ya que el valor de-
ser de selección, iterativas o secuenciales. Es
el utilizaremos para encender un led. vuelto es guardado en la variable “valor1” que Como extra, encontrarás en varios programas
importante comentar que se trata de palabras
es de tipo entero. la función delay(); esta función permite pausar
reservadas y no debemos usar estos nombres
pinMode(7, OUTPUT); la ejecución de todos los procesos dentro de
para variables. Esto principalmente para evitar
//escribir sobre valores analógicos: nuestro Arduino por un tiempo definido expre-
confusiones.
Uno más, si por ejemplo lo que quieres es leer analogWrite(A2, 128); sado en milisegundos. Esto es muy útil sobre
un valor que viene de un pin analógico, diga- todo para que nosotros (los humanos) podamos
Toma en cuenta que cuando escribimos sobre seguir el paso de los procesos que suceden en IF, ELSE
mos que el número 4:
un pin analógico tenemos una gama mayor de nuestra placa.
valores, en este caso tenemos valores desde el La instrucción if es la más popular de todas y
pinMode(A4, INPUT); 0 hasta el 255, cada valor en esta escala re- //pausar el programa 2 segundos se trata de una validación de tipo booleano,
presenta una salida de voltaje, que va desde 0 delay(2000); es decir de una pregunta que se responde con
Ahora vamos con las 4 funciones que más utili- si o no. Pongamos, por ejemplo, que tenemos
hasta los 5 volts, así que basta con hacer una
zarás durante este libro. Se trata de las funcio- una variable “contador” y queremos confirmar
regla de 3 para saber cual es el voltaje de sali- Para conocer más funciones (además de las
nes de lectura y escritura para valores analógi- que contador es igual a 5, entonces veríamos
da que vamos a obtener. que trabajaremos en este libro) puedes encon-
cos y digitales: algo como esto:
trar como apartado una guía rápida con todas
//Suponiendo que lo que deseas es escribir en un pin digital:
//leer un valor analógico: las funciones,tipos de variable y estructuras de Códigos
digitalWrite(7, HIGH); int valor2 = analogRead(A3); control que puedes utilizar en Arduino. Un ex- // Si contador es igual a 5
celente trabajo hecho por el usuario MicroCo- if( contador == 5 ) {
En este caso la función recibe dos parámetros, Para este punto habrás notado que cada fun- deSV de GitHub. Si necesitas una descripción // El contador si es igual a 5
el primero es el número del pin y el segundo el ción es muy explícita en su nombre; en realidad más amplia o bien todos los detalles de alguna }
valor a enviar. Como se trata de un valor HIGH si habláramos inglés sería muy fácil recordarlas opción a implementar las referencias en la pá-
escribe un valor “alto” en el pin digital 7, es decir en esta cuarta función podemos entender que gina de Arduino pueden ser una buena idea: Observa que para poder validar es necesario
tenemos una salida de 5 volts. Las salidas digita- se trata de la lectura del pin analógico núme- colocar 2 signos igual, con un solo signo se tra-
https://www.arduino.cc/en/Reference/HomePage ta de una asignación, no te preocupes eso lo
70 71
veremos más adelante. Ahora que sabemos una condición que indica cuando termina y Para poder enviar y recibir datos del Arduino a
que contador efectivamente es igual a 5 pode- por último un incremento. En el ejemplo ve- Comunicación Serial nuestra computadora el IDE cuenta con una
mos seguir con el bloque de nuestro programa. mos que i inicia en cero, cada que el bloque herramienta llamada Monitor serial que se en-
se repite i aumenta 1; cuando i es igual a 9 ya cuentra en el menú rápido.
Pero, ¿qué pasa si queremos hacer otra cosa no es menor, así la instrucción no se cumple y Seguramente ya te han hablado sobre la im-
en caso que nuestro contador no sea 5? Bueno el ciclo termina. portancia de la comunicación, y como en
para eso contamos con la instrucción ELSE, que cualquier ambiente social, la comunicación Monitor
se trata de la acompañante de nuestro IF: WHILE. permite al ser humano desarrollarse y formar Serial
parte de una sociedad.
Códigos La sentencia while se puede traducir como
// Si contador es igual a 5 “mientras”. Así podemos repetir un bloque de
Bueno para el caso de las máquinas, la buena A través de esta ventana se puede enviar o
if( contador == 5 ) { código hasta que la validación se cumpla:
comunicación entre ellas y la comunicación con recibir información utilizando el puerto serie.
// El contador si es igual a 5 Códigos el usuario resultan uno de los pilares al momen- Nótese que para poder abrir esta ventana es
} else { while( vacaciones == true ) { to de desarrollar nuevas tecnologías. De hecho, necesario que tengamos nuestra placa Arduino
// Contador no es igual a 5 verYoutube(); una de las características que permitió crecer conectada a nuestra PC mediante USB.
} } en popularidad a la placa Arduino es la habili-
dad de comunicarse a través del puerto COM. Zona para
FOR Esto se conoce como comunicación serial. enviar datos
Para el caso de una instrucción iterativa, es de- DO WHILE es muy parecida a la sentencia
cir que se repite constantemente tenemos dis- WHILE, con la diferencia que el bloque de có- El Arduino puede conectarse a la computadora
ponible la función FOR en la que se define el digo primero se ejecuta y luego revisa la con- vía USB (Universal Serial Port) lo que nos permite
número de veces que nuestro bloque de códi- dición. Es la vieja técnica de más vale pedir alimentarlo con el voltaje necesario para funcio-
go se va a repetir: perdón que permiso. De esa manera las ins- nar y al mismo tiempo, gracias al convertidor Se-
trucciones en el bloque siempre se ejecutan rial-USB, sea reconocido como un puerto COM. Datos recibidos
Códigos
/* repetir iniciando i en cero, repite mientras i sea
al menos una vez. de Arduino
menor que 9, aumenta i cada que termina un bloque */ Códigos
for(int i=0; i<9; i++){ // comer papas y luego pedir permiso. Además de la comunicación vía USB tene-
//Bloque de código que se repite 9 veces. do { mos la posibilidad de comunicarnos con otros
} comerPapasFritas(); equipos gracias a nuestros pines RX, TX que se
} while ( permiso == true ); encuentran disponibles en nuestra placa.
Monitor Serial
Nuestra sentencia for, dispone de 3 elementos,
la declaración de una variable y valor inicial,
72 73
Para iniciar la comunicación serial con Arduino Serial.Read()
utilizando el Monitor Serial debemos conocer int Serial.Read()
Para obtener más información sobre las dis-
algunos comandos en el Arduino IDE.
tintas posibilidades de Serial.println() y
Serial.print() puede consultarse el sitio Lee o captura un byte (carácter) desde el puer-
Práctica
Serial.begin(baud_rate); web de Arduino. to serie. Devuelve el siguiente byte (carácter)
desde el puerto serie ó -1 si no hay ninguno. ¡Vamos a lanzar los dados!
Abre el puerto serie y fija la velocidad en bau- Como dueño de un casino, necesitas un nuevo
dios para la transmisión de datos en serie. El va- Serial.available() Ejemplo juego que simule el lanzamiento de dos dados
lor típico de velocidad para comunicarse con cada que el usuario presiona la tecla “p”, El re-
el ordenador es 9600, aunque otras velocida- Devuelve un entero con el número de bytes (ca- Códigos
sultado del lanzamiento es enviado mediante
des pueden ser soportadas. racteres) disponibles para leer desde el buffer comunicación serial a la computadora para ser
serie, ó 0 si no hay ninguno. Si hay algún dato int incomingByte = 0; // almacenar el dato serie mostrado en el monitor serial de nuestro IDE y tus
Códigos
disponible, Serial.available() será mayor void setup() { socios puedan ver el resultado de cada juego.
void setup() {
// abre el Puerto serie configurando la velocidad en 9600 bps que 0. El buffer serie puede almacenar como Serial.begin(9600); /* abre el puerto
Serial.begin(9600); máximo 128 bytes. serie,y le asigna la velocidad de Si el resultado es 7 entonces un LED parpadeara
} 9600 bps */ 3 veces para indicar al usuario que ha ganado,
Ejemplo: } de lo contrario solo prenderá por 3 segundos y
void loop() { se apaga.
Cuando se utiliza la comunicación serie los Códigos // envía datos sólo si los recibe:
pines digitales 0 (RX) y 1 (TX) no pueden uti- if (Serial.available() > 0) { Lo que necesitas:
int incomingByte = 0; // almacena el dato serie
lizarse para otros propósitos. // lee el byte de entrada:
void setup() {
Serial.begin(9600); /* abre el puerto serie y le asigna la velo- incomingByte = Serial.read(); Cable USB
Serial.print(data); cidad de 9600 bps */ //lo vuelca a pantalla Arduino
} Serial.print(“He recibido: “);
Serial.println(data); void loop() {
// envía datos sólo si los recibe:
Serial.println(incomingByte, DEC); Veamos los detalles del problema: en primer lu-
La función Serial.print() Imprime los datos if (Serial.available() > 0) { } gar en este caso no vamos a conectar ningún
en el puerto serie. Para el caso del coman- // lee el byte de entrada: } circuito aún, basta con conectar la placa con
incomingByte = Serial.read();
do Serial.println() toma la misma forma el cable usb a nuestra computadora. Para el
//lo vuelca a pantalla
que Serial.print(), pero es más fácil para Serial.print(“He recibido: “); caso del LED que necesitamos nuestro Arduino
la lectura de los datos en el Monitor Serie del Serial.println(incomingByte, DEC); UNO cuenta con LED integrado en el pin digital
} número 13. Así que eso será más que suficiente.
software porque agrega un retorno de carro
}
y salto de línea.
74 75
27 digitalWrite(pinLed, HIGH);
delay(500);
Funciones a considerar:
28
29 digitalWrite(pinLed, LOW); En arduino disponemos, entre otros, de los siguientes tipos de datos:
30 delay(500);
31 digitalWrite(pinLed, HIGH);
Serial.begin( baud_rate ); 32 delay(500);
Serial.available() 33 } else { Tipo de Dato Descripción Valores Posibles
del línea”);
Serial.println(“datos con fin 34 //prende una vez por que perdiste
35 Serial.println(“Lo sentimos, intenta nuevamente”);
Serial.readString(); digitalWrite(pinLed, HIGH);
random(numero_min, numero_ma
x); 36
delay(3000);
Boleano(binario) (1, 0, true, false)
37 boolean Ej. true
delay(tiempo_espera) 38 }
39 } else {
40 Serial.println(“Tecla incorrecta, presiona P para lanzar”);
41 } Caracter
Escribe el siguiente código en el IDE de Arduino char ASCII (0, 127)
42 } Ej. “a”
y cárgalo a tu placa: 43 }
76 77
Mi primer circuito con arduino.
35
40
45
50
55
60
Entradas y salidas digitales.
Preguntas
35
40
45
50
55
60
Así, retomando, nuestra declaración nos dice tros definimos. Para este caso, nosotros espera-
que almacenamos el número 13 en la variable mos un valor entre el 1 y el 6. Observa que el
Veamos que tal tus habilidades Es tiempo de juntar la programación con com-
pinLed que es de tipo entero. ¿Se te ocurre una segundo valor colocado es 7; esto es porque, a
de traducción: ponentes electrónicos para llevar la progra-
forma de optimizar esta línea y ocupar menos diferencia del valor mínimo, el valor máximo no
memoria? Anótalo a continuación: está considerado dentro del rango. Así podemos Traduce a lenguaje natural las siguientes líneas: mación al mundo físico. Suena divertido ¿no?,
obtener como valor máximo el 6. pues manos a la obra. Como ya dijimos ante-
digitalWrite(pinLed, HIGH) riormente el Arduino cuenta con pines digita-
Si lo traducimos a lenguaje natural, esa línea les y analógicos que pueden ser usados como
dice algo como: entradas o salidas, en este caso trabajaremos
con los pines digitales.
Almacena en la variable “dado1” de tipo byte un
valor aleatorio mayor o igual a 1 y menor que 7. Serial.println(“GANASTE :)”);
Otro de los elementos que seguramente iden- Recuerda que cuando tu Arduino está conec-
tificarás es la función Serial de la cual hemos tado, ya sea por batería o cable USB, siempre
estado hablando. hay corriente. Por eso es importante verificar
¡Cuántas cosas podemos decir que no lo esté cuando manipulas los compo-
En la línea 11 observa que usamos la función en solo una línea de código! nentes electrónicos ya que puede causar da-
Ahora convierte las siguientes instrucciones a código: ños tanto a los componentes del circuito como
available para esperar a que exista un valor en
el buffer del monitor. Dentro de la siguiente línea, Esa es sin duda una de las grandes característi- al mismo Arduino.
en la línea 12 usamos una función que aún no cas de los lenguajes de programación. La faci- Inicia la comunicación serial a 4800 baudios.
comentamos. Serial.readString() la cual lidad para expresar fácilmente instrucciones de
je
realiza un casting para devolvernos una cade- tipo lógico-matemático. Salidas de Volta
na de texto (string) de los valores obtenidos.
e en-
alimentado pued
El Arduino al ser lid a.
Otra función nueva es random() que la usamos Retrasa la ejecución del programa por 5 los pines de sa
tregarte 5 volts en
en la línea 14, esta función como su nombre en segundos
inglés lo dice nos devuelve un valor aleatorio
que se encuentre dentro del rango que noso-
78 79
¿Ya observaste que la declaración de varia-
Funciones a considerar: Escribe el siguiente código en el IDE de Arduino
ble en la línea 1 de nuestro nuevo código es
y cárgalo a tu placa:
Práctica pinMode(num_pin, status);
diferente? Esto se debe a que se trata de un
; arreglo o matriz. Un arreglo es un conjunto de
digitalWrite(num_pin, valor) Códigos
Acelerador de partículas. digitalRead( num _pi n);
1 int pinArray[] = {5,6,7,8};
datos del mismo tipo. En este caso se trata de
2 int indice = 0; un conjunto de datos enteros. Los valores los
Vamos a generar un acelerador de partículas 3 int boton = 10;
podemos definir como una lista entre llaves {} y
que al presionar un botón inicie el proceso de 4
5 void setup() { separándolos por coma. Se precavido de que
aceleración. Por seguridad, al soltar el botón Diagrama de conexión: 6 // declaramos los pines como salida todos los datos que agregues cumplan con la
for (indice=0;indice<4;indice++) {
debemos detener el proceso y evitar que aca- J I F G H A B C D E
7
pinMode(pinArray[indice], OUTPUT); restricción de formato, es decir pon enteros con
8
bes en el pasado. 60 60
9 } enteros, booleanos con booleanos, caracteres
10 // Ahora el boton como entradas
11 pinMode(boton, INPUT); con caracteres.
Lo que necesitas: 55 55
12 }
13 Además de la declaración usada en nuestro
14 void loop() {
4 Leds
50 50
15 // al presionar el boton 1 enciende nuestro acelerador código, podemos declarar una matriz indican-
if( digitalRead(boton) == HIGH ){
5 Resistencias de 220 Ω 45 45 16
aceleradorParticulas(50); do el tipo de dato y el tamaño:
17
1 Pulsador 18 }
1 Protoboard
40 40
19
}
// arreglo de bytes de 5 posiciones
20
1 Cable USB 21 void aceleradorParticulas(int espera){ byte arregloWow[4];
// recorremos los pines en escala ascendente
35 35
1 Arduino 22
for (indice=0;indice<4;indice++) {
23
30 30
24 digitalWrite(pinArray[indice], HIGH); Te estarás preguntando ¿Pero, por qué si son 5
delay(espera);
Recuerda que los pines tienen polaridad, así 25
digitalWrite(pinArray[indice], LOW);
posiciones ponemos el número 4? esto es porque
26
que hay que prestar atención al ánodo y cá-
0 RX0 25 A5 25
delay(espera); la posición 0 también cuenta, asi que 0, 1, 2, 3 y 4
ON
27
ANALOG IN
1 TX0 ICSP
1
A4
todo al conectarlos. Si tienes dudas para co- } son las posiciones que tenemos disponibles. Una
2 ) A3
28
3 A2
4 A1
nectarlos, te recomiendo ver la práctica “Ley 29 vez declarado es posible asignar el valor:
5 20 A0 20
for (indice=2;indice>0;indice--) {
6
30
POWER
7 VIN
digitalWrite(pinArray[indice], HIGH);
de Ohm” del apartado de electrónica.
GND
TM
31
8
GND
delay(espera);
9
Arduino
15 5V 15
digitalWrite(pinArray[indice], LOW);
11
RESET
33
12
IOREF
delay(espera); arregloWow[0] = 7
13
TX
}
AREF
36 }
nocerlas fácilmente. Así que es tiempo de sacar Para leer un valor de un arreglo basta con escri-
5 5
80 81
/* asigna a la variable “v1” el valor con- Siguiendo la limitación del microcontrolador
tenido en la posición 3 de arregloWow */ aceleradorParticulas(50); PWM de manejar las señales analógicas, la opción
v1 = arregloWow[3]; Modulación por ancho de pulso que tiene es simular la salida analógica; esto se
Así el valor de espera es de 50 para nues- hace activando una salida digital durante un
Algo nuevo en este código es que usamos una tra función, intenta cambiar ese valor por tiempo y mantenerla apagada durante el resto,
nueva función. El definir funciones propias ayu- los siguientes valores: 30000, 1000 y 10. En electrónica hay muchos componentes que tra- en realidad existe más de una forma de hacerlo
da a hacer el código más legible y permite re- Anota tus observaciones. bajan con señales analógicas entre los más desta- pero una de las formas más sencillas y por ende
utilizar elementos de tu código. Algo muy ne- cados están los potenciómetros y los sensores. usada en tu Arduino es la modulación de ancho
cesario cuando trabajamos con espacios de de pulso (PWM) En esta modulación se mantiene
memoria limitados. Ya hemos comentado que para leer una señal ana- constante la frecuencia (es decir, el tiempo entre
lógica en el Arduino basta con usar: disparo de pulsos), mientras que se hace variar
Para declarar una función basta con poner el la anchura del pulso.
tipo de dato que devuelve, el nombre, si reci- analogRead();
Ciclo de trabajo 10%
be parámetros, si recibe más de uno son sepa-
rados por coma, y el bloque de código que En el fondo esta función es bastante compli- 5V
corresponde a esa función encerrado entre lla- cada, primero tenemos que entender que un Promedio
0V
ves {}. Los tipos de datos son los mismos que al microcontrolador no tiene capacidad algu- Ciclo de trabajo 30%
declarar variables. En este caso el tipo “void” na para trabajar con señales analógicas, de
5V
indica que no devuelve ningún valor. modo que tiene que convertirlas a digitales Promedio
¿Cómo harías para que este valor fuera esto se hace con un ADC (Conversor Ana- 0V
aumentando conforme pasa el tiempo? lógico Digital).
Periodo
Anchura pulso
Ciclo de trabajo 90%
microcontroladores
Por norma general en los
ica s son más escasas, más 5V
Observa que nosotros estamos pasando las entradas analóg Promedio
entradas digitales.
un parámetro llamado “espera” en la lentas y más caras que las 0V
función aceleradorParticulas y que es de En una salida PWM el valor de tensión realmente es Vcc.
tipo entero. Este parámetro lo definimos Por ejemplo, si estamos alimentando un dispositivo que
cuando llamamos a la función, en este Escribirlos también va más allá de un; necesita 3V en realidad estaremos suministrando 5V du-
caso en la línea 17: rante un 60% del tiempo y 0V durante el 40% pero si el
analogWrite(); dispositivo soporta como máximo 3V podemos dañarlo.
82 83
Regresando al Arduino este implementa por Diagrama de conexión: Escribe el siguiente código en el IDE de Arduino
hardware salidas PWM en varios de sus pines, J I F G H A B C D E
y cárgalo a tu placa:
que aparecen identificados en la placa con el
símbolo “~” junto al número del pin. Práctica 60 60
Códigos
1 int pinLed = 9;
2
Ahora que hemos ahondado en 55 55
3 void setup() {
PWM en Arduino la cuestión de las salidas y entradas 4 pinMode(pinLed, OUTPUT);
5 pinMode(A0, INPUT);
analógicas, parece algo confuso, pero nada 50 50 6 }
En Arduino Uno, Mini y Nano, disponemos como una práctica para ver la forma tan sencilla y 7
de 6 salidas PWM de 8bits en los pines 3, 8 void loop() {
útil que puede ser para nosotros este proceso. 9 int pot = analogRead(A0);
5, 6, 9, 10 y 11.
/* mapeamos un valor de 10 bits para escribir en uno de 8 */
45 45
10
11 int intensidad = map(pot, 0, 1023, 0, 255);
Lo que vamos a realizar es un indicador de inten- analogWrite(pinLed, intensidad);
12
sidad, nuestra perilla establecerá la intensidad 40 40
13 }
que será vista desde nuestro indicador. Muy útil
cuando deseas hacer tableros de control para 35 35
lanzamientos de cohetes.
Se trata de un código muy interesante, porque
podemos darnos cuenta como podemos leer y
RESET
Lo que necesitas: 30 30
ON
ANALOG IN
1 TX0 ICSP
1
A4
25 25
1 Resistencia 220 Ω
2 A3
)
3 A2
DIGITAL (PWM=
4 A1
5 A0
AREF
TX
RX
1 Protoboard
L
20 20
POWER
GND
7 VIN
GND
Ahora para cuando queremos pasar el valor a
TM
1 Arduino
13 8
GND
IOREF
12
nuestro LED para que encienda de acuerdo a
9
Arduino
5V
RESET
Arduino
1 Cable USB
10
11 11 15
3V3
15
GND
8
GND
decir un rango de 0 a 255. Para eso usamos la
RX
L
TX
Funciones a considerar:
POWER
GND
AREF
TM
10 10
función map que nos permite hacer esa con-
DIGITAL (PWM=
VIN 7
ICSP2
6
A0 5
A1 4 analogRead(pin); 5 5
analogWrite(pin, valor);
RESET
La función map requiere de 5 parámetros: el
A2 3
ANALOG IN
in, nuevoMax);
A3 2
)
A4
ICSP TX0 1 map(valor, min, max, nuevoM valor, el mínimo de rango, el máximo del rango,
ON
1
1 1
A5 RX0 0
el nuevo valor mínimo y el nuevo valor máximo.
J I F G H A B C D E
84 85
Librerias. Ahora, es posible que cuentes ya con la libre-
LiquidCrystal.h
Ejercicio Gestor de Librería: ría en un archivo comprimido (.zip) en ese caso
solo necesitas importarla. Esto lo puedes hacer
unas librerías estándar,
Arduino dispone de alg desde el menú Programa:
Una de las grandes fortalezas de Arduino es el menú Programa.
puedes encontrarlas en
la oportunidad de aumentar la funcionalidad rería.
Ahora que te parece si intentamos una a través de códigos precargados conocidos Programa -> Incluir Lib Programa-> Incluir Libreria -> Añadir librería .ZIP
opción con más LEDs. De tal manera como librerías. Incluso muchos fabricantes de
que de acuerdo al valor obtenido en hardware incluyen sus librerías para hacer im-
el potenciómetro se enciendan o apa- plementaciones en Arduino con sus productos. Para cargar una librería dentro de nuestro proyec-
guen 5 LEDs. ¡Manos a la obra! “Existen cientos de librerías desarrolladas por to, existen diferentes formas, basta con dirigirnos a
terceros en internet, que nos ayudarán a co- nuestro gestor de librerías que se encuentra en el
Vamos a probar si recuerdas la fun- nectar prácticamente cualquier dispositivo a menú Programa:
ción map(), completa la línea abajo nuestras tarjetas con Arduino.” Menciona Geek-
suponiendo que tienes un valor de 10 Factory y además nos ofrece una lista de con- Programa -> Incluir Libreria -> Gestionar Librerías
bits que quieres representar en como sulta sobre los archivos que incluye normalmen- Con esto un navegador de archivos nos permiti-
porcentaje: te una librería: Para encontrar una serie de ficheros y actualiza- rá seleccionar la ubicación de nuestra librería y
ciones disponibles en internet. cargarla. Después de este proceso, tendremos
Un archivo .cpp (código de C++) ya disponible la librería para usarla en nuestros
int nuevoValor1 = map (valorBits, A, B, C. D)
programas. Sin embargo, si la librería contaba
Un archivo .h o encabezado de C con ejemplos, estos serán visibles hasta que se
A= reinicie el entorno de desarrollo.
Un archivo Keywords.txt
B= Si todo falla, no te preocupes, respira tres veces
y recuerda que tienes la opción de instalarla de
Muy posiblemente la librería incluye un ar-
manera manual, para esto basta con copiar los
C= chivo readme con información adicional
ficheros .ccp, .h y el directorio de ejemplos de
sobre la librería para el desarrollador.
ser necesario en la carpeta Arduino/libraries que
D= está en tu carpeta dentro de mis “documentos”.
Directorio de sketch de ejemplo (opcional).
86 87
La complejidad de nuestros circuitos va en 17 lcd.setCursor(0, 0); Cuando cargamos la librería, veremos
aumento, así que te recomendamos revisar la 18 lcd.print(“La bola dice:”); cómo se agrega una línea a nuestro
correcta conexión de todos los componentes 19 lcd.setCursor(0, 1);
Práctica antes de realizar pruebas con el código. 20 switch(respuesta) {
código, la instrucción #include nos
permite poder hacer uso de nuestro
21 case 0:
lcd.print(“Si”);
librería en nuestro programa. Justo
La bola 8 era un juguete muy 22
Recuerda el tipo de respuesta que necesitas: después de la carga de la librería, lo
23 break;
popular hace algunos años, la Si, No, Puede ser, Tal vez, No lo creo... que hacemos es una instancia para
24 case 1:
persona puede hacer una pregunta lcd.print(“No”); hacer uso de las funciones disponi-
25
que se responda con sí o no, y veía a través Funciones a considerar: 26 break; bles. Piensa en una instancia como
de una ventana la respuesta a su pregunta. Las 27 case 2: una copia local del funcionamiento
respuestas pueden ser afirmativas, negativas #include <libreria.h> 28 lcd.print(“Tal vez”); de nuestra librería.
o neutras. La referencia que seguro ubicas es 29 break;
cuando Woody pregunta a una Bola 8 si Andy 30 } En este caso el nombre de nuestra
lo llevará a Pizza Planeta en la película Toy Story 31 }
Escribe el siguiente código en el IDE de Arduino instancia es lcd, que va a tener todas
de Pixar. 32 }
y cárgalo a tu placa: las funciones de LiquidCrystal. Es por
eso que lo usamos de esta manera
Ahora desarrollaremos un pequeño juego en
1
10
15
20
25
30
35
40
45
50
55
60
1
5
presionar un botón, la respuesta a nuestra pre-
J
#include <LiquidCrystal.h> duino donde se encuentra esa fun-
I
1
F G H
F G H
gunta aparecerá en nuestro display LCD. 2 ción y podemos ejecutarla sin nin-
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
A B C D E
A B C D E
3 gún problema.
Lo que necesitas: 4
10
15
20
25
30
35
40
45
50
55
60
1
5
5 int boton = 6; En general, notarás que la mayoría
6 de librerías incluyen una descripción
1 Arduino void setup() {
7
1 Cable USB lcd.begin(16, 2);
con las distintas funciones que po-
8
1 Protoboard 9 pinMode(boton, INPUT); seen y cómo usarlas. Pero si por al-
1 Display LCD 2x16 10 Diagrama guna razón no es así, puedes revisar
GND
9
8
7
6
5
4
3
2
1
0
AREF
13
12
10
11
RESET
RX0
TX0
DIGITAL (PWM= )
lcd.print(“BOLA 8”);
L
1 Botón 11 TX ON
}
RX
12
1 Resistencia de 220 Ω
1
ICSP
1 Potenciómetro 10K Ω 14 if (digitalRead(boton) == HIGH) { archivo .h dentro de la carpeta de tu
1 Resistencia de 10K Ω 15 int respuesta = random(0,3); POWER ANALOG IN
librería, donde encontrarás listadas
RESET
IOREF
GND
GND
lcd.clear();
3V3
VIN
16
5V
A0
A1
A2
A3
A4
A5
88 89
las funciones disponibles. Recuerda que las fun- default. Esta se ejecuta siempre que no entres
ciones a las que puedes acceder son aquellas en ninguno de los casos anteriores: Juego de Velocidad.
de tipo public. Integra tus conocimientos.
1
Códigos
switch(respuesta) { //opciones para los valores de respuesta
Práctica
Además; en este ejemplo, podemos ver una 2 case 0: //en caso que sea cero
nueva estructura de control. Se trata de la es- 3 lcd.print(“Si”); //imprime en el display “Si” Ahora que ya tienes todos los conocimientos Lo que necesitas:
4 break; // finalizar
tructura switch. Que nos permite elegir un com- case 1: //en caso que sea uno básicos de Arduino, es tiempo de ponerlos en
5
portamiento adecuado dependiendo del valor 6 lcd.print(“No”); //imprime en el display “no” práctica y ver que tal te va con un proyecto 5 LEDS
que pasamos como parámetro. Si tomamos, 7 break; //finalizar
más grande. En este caso, como quien se di- 2 Pulsadores
8 case 2: // en caso que sea dos
por ejemplo, el código para esta práctica diría 9 lcd.print(“Tal vez”); //imprime en el display “Tal vez” vierte aprende más, vamos a realizar un peque- 8 Resistencias de 220 Ω
algo como esto: 10 break; //finalizar ño juego electrónico de destreza y velocidad. 1 Arduino
11 default:
Códigos lcd.print(“Error”);
1 Cable USB
12
1 switch(respuesta) { //opciones para los valores de respuesta 13 break; El funcionamiento es sencillo, la luz va a viajar en- 1 Protoboard
2 case 0: //en caso que sea cero 14 } tre los LEDs de nuestro juego de la misma manera 1 Display LCD 2x16
3 lcd.print(“Si”); //imprime en el display “Si”
4 break; // finalizar que lo hacía en la práctica del acelerador de 1 Potenciómetro de 10kΩ
5 case 1: //en caso que sea uno partículas. Aunque ahora agregaremos uno más.
6 lcd.print(“No”); //imprime en el display “no”
7 break; //finalizar Toma en cuenta que son varias las funcionali-
8
9
case 2: // en caso que sea dos
lcd.print(“Tal vez”); //imprime en el display “Tal vez”
Ejercicio El objetivo del juego es detener la luz en el LED
de en medio (LED 3), para detener la luz hay
dades que necesitamos se encuentren dispo-
10 break; //finalizar nibles. Esto requiere tomar en cuenta cada ac-
Sin consultar internet elige alguna librería que presionar los dos botones al mismo tiempo. tividad y limitar al máximo el uso de la función
11 } dentro de tu IDE y menciona las funciones Si aciertas, entonces ganas 1 punto y aumen- delay(); recuerda que al usarla vamos a dete-
que podemos usar. Después investiga los métodos que men-
ciona en su documentación y compara. tas de nivel donde se vuelve más rápido. Ahora ner todas las ejecuciones. Y eso no es ideal.
si te quedas en los leds de en medio laterales
Cómo puedes notar podemos tener n cantidad Librería: (LED 1, 2, 4 y 5) pierdes.
de casos que nos permiten evaluar el valor de Métodos disponibles antes Métodos disponibles según Funciones a considerar:
respuesta. Piensa en una serie de if anidados de revisar la documentación: la documentación:
Para hacerlo interesante, vamos a usar el dis-
entre ellos. La palabra break nos indica que
play de la práctica pasada para mostrar en la millis();
hay que salir del ciclo y es muy útil para evi-
pantalla el nivel y la puntuación mayor. Una vez
tar que el programa siga considerando casos
que quien esté jugando pierda, entonces reini-
cuando ya encontró el que correspondía.
ciamos todos los valores.
Además, si deseas mejorar el control de errores
en esta instrucción contamos con la opción
90 91
Códigos 47 if(indice == 0){ 95 } Diagrama de conexión:
48 digitalWrite(pinArray[4], LOW); 96 pantalla();
1 #include <LiquidCrystal.h> 49 } else { 97 }
2 50 digitalWrite(pinArray[ indice-1 ], LOW); 98
3 LiquidCrystal lcd(12, 11, 5, 4, 3, 2); 51 } 99 void perdio(){
4 52 100 //le decimos al usuario que perdio
A5
A4
A3
A2
A1
A0
VIN
GND
5V
GND
3V3
RESET
IOREF
int boton1 = 0;
ANALOG IN POWER
ICSP
10 int nivel = 1; 58 indice++; 106 for (indice=0;indice<5;indice++) { 1
RX0
TX0
RESET
AREF
bool b2 = LOW;
GND
15 63 } 111 nivel = 0;
10
11
12
13
0
1
2
3
4
5
6
7
8
9
16 unsigned long previo = 0; 64 112 velocidad = 80;
17 unsigned long tiempo = 0; 65 } 113 indice = 0;
18 66 114
19 void setup() { 67 void pantalla(){ 115 delay(500);
20 lcd.begin(16, 2); 68 //mostramos los datos en nuestro display 116
21 69 lcd.clear(); 117 pantalla();
60
55
50
45
40
35
30
25
20
15
10
1
22 pinMode(boton1, INPUT); 70 lcd.setCursor(0, 0); 118 }
A B C D E
A B C D E
23 pinMode(boton2, INPUT); 71 lcd.print(“NIVEL: “);
24 72 lcd.print(nivel);
25 for (indice=0;indice<5;indice++) { 73 lcd.setCursor(0, 1);
26 pinMode(pinArray[indice], OUTPUT); 74 lcd.print(“MAX: “);
F G H
F G H
27 } 75 lcd.print(record);
28 76 }
I
29 lcd.print(“VAMOS A JUGAR”); 77
J
30 } 78 void paroUsuario(int indice){
60
55
50
45
40
35
30
25
20
15
10
1
0
31 79 //controlamos los datos de acuerdo al lugar donde se quedó el indice
32 void loop() { 80 switch(indice){
33 tiempo = millis(); //obtenemos el tiempo de ejecución 81 case 3:
34 82 aumentaNivel();
35 b1 = LOW; 83 break;
36
37
38
b2
b1
b2
=
=
=
LOW;
digitalRead(boton1);
digitalRead(boton2);
84
85
86
default:
perdio();
break;
¡Ya notaste
39
40 if(b1 == HIGH && b2 == HIGH) {
87
88 }
}
cuanto código!
41 paroUsuario(indice); 89
42 } else { 90 void aumentaNivel(){
43 if(previo+velocidad <= tiempo){ 91 nivel++;
44 previo = tiempo;//asignamos el ultimo estado de cambio 92 velocidad -= 8;
45 93 if(record<nivel){
46 //apagamos el led anterior 94 record = nivel;
92 93
Observa que se han creado una serie de fun- Y con esta práctica llegamos al final de las activi-
ciones para definir momentos del proyecto. Por dades. Te invito a que revises una vez más cada Recortable.
ejemplo: tenemos una función para aumentar uno de ellos e intentes hacerlos cada vez más efi-
de nivel, una para cuando el usuario pierde y cientes. Prueba nuevas funcionalidades, cambia
una más para mantener actualizada la pan- la estructura del código. El mundo de Arduino es
talla. Además, ahora podemos ver que las va- muy extenso y esto se trata solo de una introduc-
riables que son declaradas hasta arriba, que ción a ello, ya tienes las herramientas básicas y el
llamamos variables globales son accesibles camino está ahí. Es hora de seguirlo y pulir esas
desde todas esas funciones, sin embargo, si de- herramientas para convertirte en un experto.
claramos una variable dentro de una función,
ésta sólo sería accesible desde esa misma fun- A manera de conclusión.
ción donde la inicializamos. Esto se conoce
como variables locales. Quiero felicitarte por llegar hasta a aquí, sin duda
durante estos ejercicios y actividades hemos en-
Observa, también, que el uso de la función delay se contrado un proceso de aprendizaje que resulta
limitó al máximo. Esto es porque al tener tantos de mucho valor para tu desarrollo. Y ahora, si has
pines de entrada y salida esperando valores, encontrado interés en la electrónica y la progra-
si nosotros detenemos nuestro programa, por mación, déjame decirte que ya formas parte de
ejemplo para cambiar el estado de los LEDs, esas personas que encuentran una gran satis-
todas las acciones también se detendrán. Así, facción en la creación de cosas nuevas.
mientras el delay está “esperando” al presionar
Como dijo Nikola Tesla:
un botón no pasaría nada.
“No creo que haya alguna emoción más intensa para un in-
ventor que ver alguna de sus creaciones funcionando. Esa
emoción hace que uno se olvide de comer, de dormir, de todo”
94” 95
Referencias
Anónimo, (2016). [online] Disponible en: http://www.reflexio- Info-ab.uclm.es. (2016). Sensor CNY70. [online] Disponible
na.biz/shop/content/27-codigo-de-color-de-las-resistencias en: http://www.info-ab.uclm.es/labelec/solar/otros/infrarro-
jos/sensor_cny70.htm
Arduino Projects Book. (2013). 2nd ed. Torino, Italia: Arduino LLC.
Luis Llamas. (2016). Salidas analógicas PWM en Arduino.
Arduino.cc. (2016). Arduino - Reference. [online] Dinponi- [online] Disponible en: http://www.luisllamas.es/2015/08/sa-
ble en: https://www.arduino.cc/en/Reference/HomePage lidas-analogicas-pwm-en-arduino/
Areatecnologia.com. (2016). Homopolar Motor Explicación Panama Hitek. (2013). Comunicación Serial con Arduino -
y Funcionamiento Facil. [online] Disponible en: http://www. Panama Hitek. [online] Disponible en: http://panamahitek.
areatecnologia.com/electricidad/motor-homopolar.html com/comunicacion-serial-con-arduino/
Cuaderno de Cultura Científica. (2016). La ley de Ohm | Expe- Playground.arduino.cc. (2016). Arduino Playground - Ar-
rientia docet | Cuaderno de Cultura Científica. [online] Disponi- duino en Español - Wiki Comunitaria. [online] Disponible
ble en: http://culturacientifica.com/2016/04/26/la-ley-ohm/ en: http://playground.arduino.cc/Es/Es
Definición ABC. (2016). Definición de Voltaje. [online] Dispo- Ruben, J. (2014). Como Instalar una Librería de Arduino -
nible en: http://www.definicionabc.com/ciencia/voltaje.php Geek Factory. [online] Geek Factory. Disponible en: http://
www.geekfactory.mx/tutoriales/como-instalar-una-libre-
Definición.de. (2016). Definición de intensidad — Definicion. ria-de-arduino/
de. [online] Disponible en: http://definicion.de/intensida-
d/#ixzz4IN5tISau Taringa.net. (2012). Armá un motor en 1 minuto. [online]
Disponible en: http://www.taringa.net/posts/hazlo-tu-mis-
Es.wikipedia.org. (2016). Michael Faraday. [online] Dispo- mo/14026836/Arma-un-motor-en-1-minuto.html
nible en: https://es.wikipedia.org/wiki/Michael_Faraday
96 97
98 99