Users OO)
ARDUINO
PROYECTOS PRACTICOS
ELECTRONICA,
HARDWARE
Y PROGRAMACION
CLAD PA MELAUAL ayARDUINO
LA GUIA PARA REALIZAR TUS
PROTOTIPOS ELECTRONICOS
De cero a experto - Proyectos practicos paso a paso
por Claudio Pefia Millahual RedUSERSCEs
Titulo: Arduino
Autor: Claudio Pefia Millahual
Coordinador editorial: Migue! Lederkremer
Produccién grafica: Gustavo De Matteo
Edicién: Lorena Blanco
Maquetado: Marina Mozzetti
Coleccién: Manuales Users
Formato: 24 x 17 cm
Paginas: 320
Copyright © MMKVIL Es una publicacion de Six Ediciones. Hecho el depésito que marca la ley 11723. Todos los
derechos reservados. Esta publcacién no puede ser reproducida ni en todo ni en parte, por ningin medio actual 0
futuro, sin el permiso previo y por escrito de Six Ediciones. Su infraccién esté penada por las leyes 11723 y 25446,
La editorial no asume responsabilidad alguna por cualquier consecuencia derivada de la fabricacin, funcionamiento
y/o utlizacion de los servicios y productos que se describen y/o analzan. Todas las marcas mencionadas en este
bro son propiedad exclusiva de sus respectivos dueios. Impreso en la Argentina. Libro de edicién argentina, Primera
impresién realizada en Sevagrat, Costa Rica 5226, Grand Bourg, Malvinas Argentinas, Pia. de Buenos Aires en X, MMXVIL
ISBN 978-987- 46518-7-7
Peiia Millahual, Claudio Alejandro
Arduino / Claudio Alejandro Pefia Millahual.
Ediciones, 2017.
320 p. ; 24 x 17 cm. - (Manuales Users ; 283)
1a ed. - Ciudad Autonoma de Buenos Aires
ISBN 978-987-46518-7-7
1. Hardware. 2. Titulo,
CDD 004.641. PRELIMINARES oes
CLAUDIO PENA
Nacié en 1982 en Lican Ray, un pequefio
pueblo del sur de Chile. Durante su vida,
se ha dedicado a adquirir y profundizar
los conocimientos en diversas areas de la
informatica, tanto en forma académica como
autodidacta. Posee estudios de Psicologia e
Informatica, en la Universidad de la Frontera
y Universidad de Los Lagos asi como
también un Bachillerato en Comunicaciones
en UNIACC.
Desde el primer contacto con una computadora, a los 8 afios, hasta el
dia de hoy, la necesidad de aprender y descubrir todo lo que ofrece la
Informatica no ha cambiado. Ha escrito diversos libros y variados articulos
especializados, y ademas colabora como editor en diversas publicaciones
de la editorial que lo vio nacer como autor.
Alos 26 afios, escribié su primer libro: 101 Secretos de Windows
Vista. Luego vinieron titulos como PC Soluciones, Windows 7 Avanzado,
Creaci6n de distribuciones Linux, Proyectos con Windows, Redes Home,
Windows Técnico, Office 2013, Windows 8, Windows 10 y Windows 10
Avanzado, entre muchos otros.
Actualmente Claudio dirige talleres de Arduino donde ensefia conceptos
basicos de programacion y electronica para nifios y jovenes.
4 [Link]aa ARDUINO
PROLOGO
A pequeiia 0 a gran escala, todo nuevo avance tecnolégico siempre ha
causado una revoluci6n. Esto se puede observar en la introducci6n de las
nuevas tecnologias en la vida diaria o en la modificacion de los procesos
productivos y de ensefianza, en todo ambito, de tal forma que la introducci6n
de tecnologia resulta evidente en pequefios o grandes cambios.
En este sentido, Arduino no es la excepcidn. La importancia de esta
plataforma ha trascendido todos los limites pues, en pocos afios,
ha dejado de ser una sencilla herramienta que solo perseguia fines
educativos para transformarse en una plataforma que esta presente en
la primera linea de la industria tecnoldgica, en la creacién de nuevos
prototipos y en proyectos de diversa indole.
La clave que se encuentra tras el éxito de Arduino se relaciona con su
caracter de proyecto abierto, no solo el software asociado se distribuye
en forma libre, sino también las especificaciones técnicas de la placa
Arduino estan a disposicién de todos. Gracias a esto, las empresas y
los usuarios entusiastas estan a pocos pasos de descargar, estudiar y
producir nuevos dispositivos basados en Arduino,
Arduino se encuentra en el corazon de muchas de las propuestas
tecnolégicas actuales y, gracias a este libro, podemos dar los primeros
pasos para entender su funcionamiento y asi crear nuestros primeros
proyectos.
[Link] 51. PRELIMINARES
EL LIBRO DE UN VISTAZO
El objetivo de este libro es brindarle al lector los conocimientos y las herramientas
necesarias para desarrollar proyectos en Arduino, como la electrénica basica,
el hardware y el entorno de programacién. Por eso, esta obra contiene un paso a paso
de distintos proyectos practicos para que el lector obtenga sus primeros prototipos.
01
CONCEPTOS INICIALES
Antes de ingresar al mundo de Arduino, vamos
a conocer las bases tedricas necesarias para
acercarnos a la electrénica. A través de la
informacién que brinda este libro, aprenderemos,
todo lo que se necesita para poner manos a la
obra y lograr espectaculares creaciones.
02
2QUE ES ARDUINO?
Dar la definicién de Arduino no es una tarea
sencilla, ya que se trata de una plataforma
que incorpora hardware y software en apoyo
de miltiples proyectos de electronica, pero,
ademas, esta se ha convertido en toda una
filosofia en la que la premisa del hardware libre
es un punto esencial.
03
2QUE SE NECESITA?
Hasta aqui ya conocimos algunas de las placas
de Arduino oficiales y, también, las no oficiales.
Ahora, es el momento de profundizar en el
conocimiento de Arduino UNO, la placa que
utilizaremos en nuestros primeros proyectos,
asi como también aquellos componentes
basicos que usaremos para iniciarnos en el
mundo de Arduino.
04
ARDUINO IDE
Aqui conoceremos la forma en que nos
comunicamos con nuestra placa de desarrollo:
el Arduino IDE, donde a través de esta, vamos
accontar con todo lo necesario para escribir los
Ccédigos que dardn vida a nuestros proyectos.
[Link]05
PROGRAMAR ARDUINO
Luego de haber conocido las caracteristicas
principales, cémo instalarlo y cémo
configurarlo, en este capitulo vamos a analizar
la sintaxis adecuada para crear los sketchs para
nuestros proyectos.
06
TRABAJAR CON LEDS
‘Manos a la obra! Aqui realizaremos nuestros
primeros proyectos sencillos, para ello,
utiizamos nuestra placa Arduino junto a un
Conjunto de LEDs y algunos componentes
adicionales.
07
SENSORES
Una vez que pudimos trabajar en nuestros
primeros proyectos utilizando una tarjeta
Arduino junto con sus componentes basicos,
vamos a conocer qué son los sensores y para
‘qué sirven, ademas, veremos cémo pueden
ayudarnos a completar nuestros proyectos.
08
DETECCION DE LUZ
En esta ocasién, trabajaremos en detalle con
tun sensor LDR, para lograr proyectos que sean
capaces de efectuar la deteccién del nivel o la
intensidad de la luz.
[Link]
ARDUINO
09
EMISION DE SONIDOS
‘Aqui vamos a agregar un componente mas a
‘nuestros proyectos: la emisién de sonidos.
Sin duda esto abre nuevas oportunidades y
‘nos permite generar novedosas propuestas
electronicas.
10
DISPLAY LCD Y RELOJ DIGITAL
En el desarrollo de este capitulo, realizaremos
un pequefio pero interesante proyecto: un reloj
digital. Para lograrto, utilizaremos algunos
componentes que ya conocemos, pero también
agregaremos una pantalla LCD.
11
POTENCIAL DE ARDUINO
Ao largo de este libro, hemos dado los primeros
pasos en el mundo de Arduino. Pero, aunque
desarrollamos unos proyectos interesantes,
debemos incrementar el enorme potencial que
tiene Arduino, demostrado por la gran gama de
posibilidades que conoceremos en este capitulo,
Ap
SHIELDS
En este apartado, conoceremos la placa Shield,
un elemento apropiado para dotar de mayores
capacidades a nuestro proyecto Arduino.
‘Tambien veremos otras opciones disponibles.1. PRELIMINARES oe
Contenido
2QUE ES ARDUINO?
Introduccién.
Hardware.
Software.
Comunidad
Hardware libre.
CONCEPTOS INICIALES Caracteristicas esen
Eloctricidad ....scsssessscesssssessnsecssseessesneenn LA Placas disponibles ....
Naturaleza de la electricidad..... 4 Arduino UNO..
Carga eléctrica...... 16 Arduino Zero.
Potencia eléctrica ... 7 Arduino Zero Pro...
Electronica 17 Arduino Yan...
Circuitos electronicos........ 19 Arduino Leonardo...
Componentes electrénicos. 2 Arduino Due.
Microcontroladores.. =o 0 23 Arduino Mega.
MU y MPU enccorssersnrsensansesarsrascennerernye BM Arduino Fio.....
Desde los MCU hasta las placa: Arduino LilyPad
de desarrollo....... Arduino Pro...
Resumen. Arduino Pro Mini.
‘Arduino Micro.
Arduino Esplora.
Pracas no ofciales
2QUE SE NECESITA?
‘Componentes necesarios.
Placa de desarrollo, :
Guia visual: Arduino UNO nnn 60
Paso a paso: Prueba de conexion
con Arduino UNO... 62
8 [Link]Funcionamiento. 64
Comparacién con otras placas 66
Elementos adicionales.
Protoboard
Cables de puente
Paso a paso: Conexiones basicas...nnnne 72
Condensador . 74
Diodo 76
Diodo emisor de luz (LED) . 7
Puente H 8
Broche de presién de pila 80
Paso a paso: Alimentar Arduino
mediante el protoboard....
Potenciémet nnn
Pantalla de cristal liquido .
Motor de corriente continua...
Pulsador.
Paso a paso: Control sencillo de un LED
Optoacoplador
Resistencias
Fotorresistencia....
Transistor =
Zumbador piezoeléctrco .
Sensor de temperatura...
‘Sensor de inclinacién
Servomotor
Resumer
04
ARDUINO IDE
Caracteristicas generales.......
Dos Arduinos....
gesees
102
ese 104
106
IDEs alternativos.. 108
Instalacion del IDE 110
Paso a paso: Instalar Arduino IDE
en Windows 110
[Link]
ARDUINO
Entorno de trabajo. 14
Guia visual: Interfaz principal
de Arduino IDE 6
Configuracién inicial 18
Paso a paso: Configuracién inicial de! IDE ... 118
PIPES cas snerserincnsnnmnsceonss TDR.
Contribuciones. ait 125
Paso a paso: instalar y utilizar una hibrera .. 128
Ejemplos de cédigo ..
Cargar un programa o sketch 132
Resumen
05
PROGRAMAR ARDUINO
Estructura basica de un sketch...
Case sensitive. 142
Tabulaciones. 142
Puntos y comas ss seve M3
Funciones.
Parémetros....
Variables
Ambitos..
1461. PRELIMINARES
Datos y operadores 151
Operadores aritméticos. 154
Operadores compuesto. 154
Operadores de comparacién 155
Operadores 18RiC08. rum so 156
Estructuras de control
it 157
ifelse 157
if else elseit 157
switch case 158
Bucles
RESUMEN .srnnnsernmnnenemnnnnernene LZ
TRABAJAR CON LEDS
LEDs y Arduino
Ley de Ohm 165
El proyecto basico: Blink.
Paso a paso: Conectar un LED
directamente .nnenennnnnnssnnnnnsee LOT
Controlar un LED 172
Incorporar iteraciones 176
10
Paso a paso: Conectar varios LEDs 180
Encender seis LEDs en secuencia.......... 186
setup) 187
loop 0 187
Paso a paso: Circuito para
encender 6 LEDS wns sree 190.
‘Secuencia de 8 LEDs.
Resumen,
07
SENSORES
2Qué es un sensor?
Clasificaci6n nnn
Entradas en Arduino
Entradas analogicas.
Entradas cigitales
Sensores para Arduino..... ze
‘Sensor de temperatura KY-001 212
‘Sensor de vibracién KY.002 213
Sensor de campo magnetic KY-003....n- 214
‘Sensor emisorinfrarrojo KY-005.. 216
‘Sensor ultrasénico HC-SRO4.... 27
Sensores LDR... 220
Resumen,
08
DETECCION DE LUZ
Fotorresistenc
Funcionartiento..nnsnsnensninnnennn 224
Otros componentes [Link] 226
El proyecto
Resultados esperados.
Conectar el circuito .
Paso a paso: Conectar €l CiCUitO nnnsn 231
[Link]Creacién de los sketchs...
Resultado 1
Resultado 2 238
Resultado 3 241
Resumen...
09
EMISION DE SONIDOS
Elementos necesarios..
Funcién tone
El proyecto...
Manos a la obra
Ejemplos det Arduino IDE.
Resumen ..
10
DISPLAY LCD Y RELOJ DIGITAL
Display LOD...
Caractersticas.
ComunicaciOn nnn
Libreria LiquidCrystal
Reloj digital...
Resumen.
247
249
257
. 258
270
275
POTENCIAL DE ARDUINO
Posibilidades
Arduino en domética 283
Arduino en robética.... 287
Arduino y drones... 7 289
Construir tu propio Arduino... 290
Resumer 292
[Link]
ARDUINO
Ap
‘SHIELDS
Qué es una shield
Caracteristicas generale. 295
Conesin de una shield. 298
Shields disponible:
Ethernet Shield
‘Arduino WiFi Shield 304
‘Arduino Motor Shield 308
Resumer
*
SERVICIOS AL LECTOR
Sitios relacionados. 312
318
LEONARDO
n1. PRELIMINARES oS
Introduccién
En la actualidad, Arduino esta presente en todo tipo de dispositivos
tecnolégicos, en impresoras 3D, dispositivos médicos, avances
domédticos, proyectos educativos, robots y drones, solo por nombrar
algunos ejemplos.
El éxito de Arduino se basa en que se trata de placas econémicas,
accesibles, que pueden programarse en diferentes plataformas y,
que tanto su software como su hardware se distribuye en forma libre.
Gracias a Arduino, pude combinar dos de mis grandes pasiones,
la tecnologia y la difusion del conocimiento y, en este libro, se plasma
un sencillo y practico camino que llevara a los lectores novatos e
iniciados a descubrir todo el potencial que nos ofrece esta placa.
En cada capitulo de este libro, encontraremos material tedrico junto a
lecciones practicas, que nos acompafiaran a través del proceso
de aprendizaje.
Con explicaciones sencillas pero detalladas, sera posible experimentar
el trabajo con LEDs, sensores, detectores de luz y emision de
sonidos. Pero también aprenderemos sobre las caracteristicas mas
interesantes de la plataforma Arduino, el IDE de programacién y los
diferentes shields disponibles.
Claudio Pefia Millahual
12 [Link]Conceptos
iniciales
El mundo de Arduino es apasionante y, a través
de los capitulos que componen este libro,
aprenderemos todo lo que necesitamos para poner
manos a la obra y lograr espectaculares creaciones.
Pero, antes de eso, conoceremos las bases teéricas
necesarias para acercarnos a la electronica.1. CONCEPTOS INICIALES ee
ELECTRICIDAD
1a electricidad es un fenémeno fisico que tiene como origen las
cargas eléctricas y que manifiesta energia, como los fenomenos
térmicos, mecanicos, luminosos 0 quimicos, entre otros.
Consiste en un flujo de electrones que puede observarse
naturalmente, por ejemplo, en los rayos, que son descargas eléctricas
producidas por una transferencia energética entre la ionosfera y
la superficie de la Tierra, También observamos electricidad en el
funcionamiento del sistema nervioso del ser humano.
Su uso es comin en la vida diaria; la aprovechamos en los
electrodomésticos o en las maquinas grandes, como los trenes, y
ademas esta presente en los dispositivos electrénicos.
Naturaleza de la electricidad
Podemos decir que la materia es todo aquello que tiene masa
y que ocupa un lugar en el espacio; se compone de atomos, que
estan formados por particulas subatémicas: electrones, protones y
neutrones. La materia también perdura en el tiempo.
Segiin el modelo atomico de Bohr, el electrén es la carga negativa (-)
que se desplaza alrededor del nucleo en forma de capas concéntricas
lamadas érbitas. Por otra parte, el proton es la carga positiva (+) que
compone el niicleo del atomo junto a los neutrones que presentan una
carga neutra.
i
El rayo es una de
las manifestaciones
mas comunes
de la electricidad
en la naturaleza.
También se presenta
electricidad en el
funcionamiento del
sistema nervioso.
14 [Link]ARDUINO
La energia eléctrica es causada por el movimiento de las cargas
eléctricas que permanecen en el interior de los materiales conductores.
Por ejemplo, cuando accionamos el interruptor de una lmpara, se
cierra un circuito eléctrico y, por lo tanto, se genera el movimiento de
electrones a través de cables metalicos. Ademas del metal, para que
exista este transporte y se pueda encender la ampolleta, es ne
un generador 0 una pila que impulse el movimiento de los electrones
en un sentido dado
mL (eee
esario
Orbitas
Csr
N
\
rer
El modelo de Bohr explica
como los electrones pueden
tener drbitas estables alrededor
del nucleo. En este modelo,
{os electrones giran en orbitas
circulares alrededor del nicleo,
y ocupan la érbita de menor
energia posible o la mas
Diibinaa cercana al nucleo.
Diferencia de potencial
En el estudio de la electricidad, la diferencia de potencial entre dos puntos se
conoce como tension. Si entre dos puntos de un conductor no existe diferencia
de potencial, la tension entre ambos puntos es cero. Si entre esos dos puntos se
ejerce un desequilibrio de cargas 0 un exceso de cargas negativas en un polo,
aparecerd una tensién entre ambos puntos, que sera mayor a medida que la
diferencia de cargas sea también mayor. Esta tensidn es la responsable de generar
el flujo de electrones entre los dos puntos del conductor.
[Link] 151. CONCEPTOS INICIALES wes
Los atomos de los elementos se diferencian por la cantidad de
particulas subatomicas que poseen
Las cargas eléctricas de signo opuesto se atraen y las del mismo
signo se repelen, de esta forma cualquier electron siempre sera atraido
por una carga positiva equivalente. Asi, en un extremo de un material
conductor se presenta un exceso de electrones, mientras que en el otro
extremo existe una carencia de ellos (carga positiva). Los electrones
tenderan a desplazarse a través de ese conductor desde el polo
negativo al positivo; a esta circulacién de electrones por un material
conductor se la conoce como electricidad.
La electricidad existe mientras los electrones se desplazan de un
extremo a otro del conductor; asi el polo negativo sera cada vez menos
negativo y el polo positivo sera cada vez menos positivo, hasta llegar
el momento en el que ambos extremos tengan una carga global neutra
© estén en equilibrio. En esta situacion, el movimiento de los electrones
cesar; para evitarlo, utilizaremos una fuente de alimentacién externa 0
generador, para restablecer de manera constante la diferencia inicial de
cargas entre los extremos del conductor.
Carga eléctrica
La carga eléctrica es una capacidad que tienen las particulas de
poder atraer o repeler otras. Es la cantidad de energia que poseen
las particulas que componen el atomo; este puede quedar cargado
positivamente (si pierde electrones de sus orbitas) o negativamente
Ley de OHM
La ley de Ohm establece la relacion fundamental de la electricidad, en la que se
tienen tres elementos: tensiones, corrientes y resistencias.
Si se conocen dos de ellos, podemos calcular facilmente el tercero: V = R x I.
De esta forma, si conocemos dos de las tres variables, es posible calcular la tercera:
~ Si conocemos la tensién y la corriente, calculamos la resistencia como el cociente
entre la tensidn y la corriente: R= V/I.
- Si conocemos la tensidn y la resistencia, calculamos la corriente como el cociente
entre la tensién y la resistencia: 1=V/R.
16 [Link]ARDUINO
(si gana electrones). Juntas, generaran fuerzas de atraccién y de
repulsién tal como se puede observar cuando utilizamos un magneto y
un trozo de metal, lo que crea un campo electromagnético.
Ademias, esta carga es la responsable de originar fuerzas capaces de
producir, en su conjunto, fuerzas mecanicas. Se trata de una propiedad
conservativa, esto quiere decir que se mantiene en el tiempo, o sea, que
la carga inicial sera la misma luego de un lapso indeterminado, siempre
y cuando todo el sistema se encuentre aislado sin influencias externas.
Potencia eléctrica
La potencia eléctrica se define como la cantidad de energia entregada
absorbida por un elemento en un tiempo determinado; la unidad
correspondiente en el Sistema Internacional de Unidades es el vatio
(watt). La potencia eléctrica desarrollada en un cierto instante por un
dispositivo es el producto de la diferencia de potencial entre dichos
terminales y la intensidad de corriente que pasa a través del dispositivo.
De esta forma, la potencia es proporcional a la corriente y a la tension.
ELECTRONICA
La electrénica es una rama de la fisica cuya finalidad es encargarse
del control, la conduccién y el flujo de los electrones 0 de cualquier
particula cargada eléctricamente.
Para simplificar, podemos decir que la electronica se relaciona con
el anilisis de los el
ectrones y con la aplicacién de sus principios en
contextos diferentes. En su nocién mas basica, la electronica se relaciona
con el electron, una de las particulas esenciales de los atomos.
Los circuitos electronicos hacen posible la conversién y la distribucion
de la energia eléctrica, por esta razén, los utilizamos en tareas que se
relacionan con el procesamiento y el control de la informacion.
En términos generales, un sistema electrénico se forma por
sensores que reciben las sefiales fisicas y las transforman en sefales
de corriente. Los circuitos presentes en el sistema se encargan de
interpretar y convertir las sefiales de los sensores que llegan hasta los
actuadores, que transforman una vez mas el voltaje en sefiales fi
ica
[Link] v71. CONCEPTOS INICIALES es
En lo que a la historia se refiere, podemos mencionar que la
introduccién de los tubos de vacio a comienzos del siglo XX ayudé a
que la electrénica moderna evolucionara. Los tubos de vacio hicieron
posible la manipulacion de sefiales, algo que no permitian los circuitos
telegraficos y telefonicos que existian hasta ese momento.
i Los transistores
lograron reemplazar a
los antiguos tubos de
vacio, offeciendo una
mayor fiabilidad con
menores costos.
Mas tarde, el transistor logré reemplazar al tubo de vacio en la
mayoria de sus aplicaciones; gracias a la incorporacién de materiales
semiconductores y contactos eléctricos es capaz de realizar las mismas
funciones que el tubo de vacio, pero con un menor costo y una mayor
fiabilidad. Luego del transistor, la tecnologia ha evolucionado hasta los
semiconductores y los circuitos integrados, que pueden contener miles
de transistores en un pequefio espacio. Esto hace posible la construccion
de circuitos electronicos complejos, como los que se encuentran en
microcomputadoras, equipos de sonido o satélites de comunicaciones.
En electronica, conocemos al circuito
integrado como una combinacién de
elementos de un circuito que estan
miniaturizados y que forman parte de un
mismo chip 0 soporte.
[Link]ARDUINO
Circuitos electrénicos
Para acercarnos a los circuitos electronicos, debemos repasar los
circuitos eléctricos. Cuando utilizamos una bateria o un grupo
electrégeno para producir electricidad, encontramos tres elementos
que no cambian: =
EL ORIGEN DE LA ELECTRICIDAD
Tendra dos terminales: uno positivo y uno negativo.
EL ORIGEN DEL FLUJO ELECTRICO
Por ejemplo, un generador o una bateria buscar empujar los
electrones fuera de su terminal negativo, utilizando un cierto
voltaje. Para ejemplificarlo pensemos en una pila, que se eee]
encarga de empujar los electrones a 1,5 voltios. 7
LOS ELECTRONES
Fluiran desde el terminal negativo al positivo por un cable
de cobre u otro conductor. Cuando existe un camino desde
el terminal negativo al positive, tenemos un circuito, asi los
electrones pueden fluir por el cable. a
En este punto es posible agregar una carga de cualquier tipo,
por ejemplo, una bombilla, un motor, entre otros, De esta forma, la
fuente de electricidad se encargara de alimentar la carga, y la carga
desempefara su funcién para crear luz o arrancar un motor, etcétera.
Trabajo de los electrones
Los electrones que se mueven por un circuito poseen energia, por lo tanto,
‘son capaces de realizar un trabajo; por ejemplo, en una bombilla de filamento
incandescente, la energia de los electrones se usa para crear calor y, a su vez,
generar luz. Por otra parte, en un motor eléctrico, la energia en los electrones se
encarga de crear un campo magnético que, finalmente, origina movimiento.
[Link] 191. CONCEPTOS INICIALES ese
20
Aunque los circuitos pueden ser muy complejos, en un nivel basico
siempre encontraremos en ellos la fuente de la electricidad o bateria,
la carga y los cables para conducir la electricidad entre la bateria y la
carga. Asi, los electrones se mueven desde el origen, por la carga y de
vuelta al origen.
Teniendo en cuenta lo dicho hasta este momento, podemos
mencionar que los circuitos electronicos son circuitos eléctricos
que contienen dispositivos, tales como transistores y valvulas,
entre otros. Son capaces de realizar funciones complejas utilizando
cargas eléctricas, aunque funcionan con las mismas que los circuitos
eléctricos. La importancia de los circuitos electronicos radica en que
conforman una asociacién de componentes que pueden realizar un
tratamiento de las sefiales eléctricas para almacenar informacion.
Los circuitos electrénicos se pueden clasificar en tres grupos:
CIRCUITOS ANALOGICOS
En este tipo de circuitos, las sefiales eléctricas varian en
forma continua para corresponderse con la informacion
representada, El equipamiento electrénico, como
los amplificadores de voltaje o de potencia, radios,
televisiones, etcétera, suelen ser analégicos con la
excepcién de muchos dispositivos modernos que usan
circuitos digitales.
CIRCUITOS DIGITALES
En ellos las sefiales eléctricas obtienen valores discretos
para mostrar valores numéricos y légicos que representen
la informacion que se debe procesar. Algunos ejemplos de
equipos con circuitos digitales son: calculadoras, celulares
y microprocesadores.
CIRCUITOS MIXTOS
Se trata de circuitos hibridos, pues contienen elementos
analdgicos y también digitales. Un ejemplo es el convertidor
de analogico a digital, o viceversa.
errs
[Link]ess ARDUINO
PM sso ea eee eee eee Mee) ey
CIRCUITOS ELECTRICOS CIRCUITOS ELECTRONICOS
Componentes — Excepto el generador, sus Contiene al menos un elemento
componentes son pasivos. activo.
Control Interruptores y resistencias El control se efectia mediante
controlan el flujo de la corriente. sefiales eléctricas.
Uso Se relacionan con la potencia. Se relacionan con el
almacenamiento de la
informacion.
Tipo de Dependiendo del circuito, La mayoria funciona con
corriente funcionan con corriente alterna _corriente continua.
‘o continua.
Componentes electronicos
Los componentes electronicos son aquellos que pueden formar parte
de un circuito electrénico; por lo general se encuentran conectados
mediante soldadura al circuito impreso.
Existen diferentes formas de clasificar los componentes electrénicos,
por ejemplo, segiin su estructura fisica (discretos e integrados),
segun el material base de su fabricacién (semiconductores, no
semiconductores), segiin el tipo de energia (electromagnéticos,
electroacisticos, optoelectrénicos). En esta ocasién, los clasificaremos
segiin su funcionamiento -activos y pasivos- y su recubrimiento -de
ceramica, de metal o de plastico- con la terminacién de dos conectores
para soldarlos al circuito.
Componentes activos
Se trata de componentes que pueden controlar el flujo de corriente
o lograr ganancias. En la primera generacién existian las valvulas,
utilizadas en radio o television. En la segunda generacion, aparecen
los semiconductores; estos dieron paso a los circuitos integrados, que
corresponden a la tercera generaci6n.
[Link] al1. CONCEPTOS INICIALES ess
El diodo Zener,
encargado de
la regulacion de
tensiones, es
un ejemplo de
componente activo.
22 COMPONENTES ELECTRONICOS ACTIVOS
COMPONENTE sto)
Amplificador operacional Amplificacién, regulacién, conversién de sefal,
conmutacién.
PLD Control de sistemas estables.
Diodo Zener Regulacién de tensiones.
Memoria Almacenamiento de datos.
Pila Generacién de energia.
Puerta logica Control de sistemas combinacionales.
Triac Control de potencia.
Componentes pasivos
Los componentes electronicos pasivos se encargan de realizar la
conexi6n entre los componentes activos, de esta forma aseguran que
las sefales eléctricas puedan transmitirse 0 que se modifique su nivel.
22 [Link]eas ARDUINO
3 COMPONENTES ELECTRONICOS PASIVOS
COMPONENTE LUSto)
Inductor También conocido como bobina, se encarga de atenuar
o almacenar el cambio de energia.
Condensador Almacena energia, filtra, adapta impedancia.
Resistor También conocido como resistencia, se utiliza para la division
de intensidad o tension, también para limitar la intensidad.
Un condensador 0 capacitor
es un componente pasivo capaz de
almacenar energia. En la imagen vemos un
condensador cerdmico.
MICROCONTROLADORES
Los circuitos integrados son estructuras pequeiias, construidas con material
semiconductor (generalmente silicio); contienen circuitos electronicos y se
encapsulan en plastico 0 ceramica para su proteccion.
Los microcontroladores son circuitos integrados programables que pueden
ejecutar las tareas que han sido grabadas en su memoria.
Dentro de un microcontrolador encontramos tres unidades funcionales:
unidad central de procesamiento, memoria y periféricos de entrada/
salida; tal como observamos en una computadora. De esta forma podemos
mencionar que un microcontrolador es una microcomputadora que se encuentra
encapsulada en un circuit integrado.
[Link] 231. CONCEPTOS INICIALES oes
Las aplicaciones de los microcontroladores son variadas y amplias,
por ejemplo, es comin encontrarlos en robotica y automatismo, en
las telecomunicaciones, en el hogar y en la industria, etcétera. Si
adaptamos la idea del microcontrolador al contenido de este libro,
diremos que es posible utilizarlo para aplicaciones tales como manejo
de sensores, calculadoras, avisos luminicos, secuenciador de luces,
cerrojos electrénicos, control de motores, robots, entre otros.
MCU y MPU
Aunque es comin confundirlos, un microcontrolador (MCU) no es igual
a un microprocesador (MPU).
En términos generales, un MCU usa una memoria flash para
almacenar y ejecutar un programa, de esta forma presenta un periodo
de arranque breve y, por lo tanto, es capaz de ejecutar el codigo mas
rapido. Si bien parece una ventaja, debemos considerar que esto
conlleva una gran limitacién practica: su espacio de memoria es finito.
Por otra parte, un MPU no presenta las mismas restricciones de
memoria, pues hace uso de una memoria externa para almacenar los
datos. En general, el programa se guarda en una memoria no volatil
(NAND 0 Flash en serie), pero en el arranque se carga en la DRAM
externa para ejecutarse.
Teniendo en cuenta lo anterior, el MPU no estara en funcionamiento
con tanta rapidez como un MCU, pero puede disponer de una cantidad
de memoria mucho mayor, gracias al uso de recursos externos.
Otra diferencia importante entre un MCU y un MPU es que el primero
solo necesita un riel de alimentaci6n de tensién tinico, mientras que el
segundo requiere varios rieles de tensién diferentes.
24 [Link]ARDUINO
Desde los MCU hasta las placas de desarrollo
Si profundizamos en la historia, encontraremos que el microcontrolador
comercial aparecié en 1971, gracias al Intel 4004 de 4 bits. Se trato de
la segunda CPU completa de un solo chip y la primera comercial. Luego
se presento el 8008 de 8 bits (la base de las computadoras personales).
En aquella época, también surgieron los procesadores Z80 y el 6502.
En realidad, el MCU PIC, de Microchip Technology (1975), fue uno de
los mas importantes para los fanaticos de la electronica, pues era de bajo
costo y se conseguia con facilidad. Como el PIC, es un MCU, contiene un
procesador incorporado, memoria e I/O (in/outs) programables.
Ahora bien, trabajar con un microcontrolador PIC es dificil si no
tenemos conocimientos profundos de programacion C de bajo nivel, por
ello se popularizaron los chips PICAXE, pues son capaces de entender
lenguajes mas sencillos, como BASIC o diagramas de flujos, que son
utilizados en educaci6n.
Pe We i
Ai
Ps
BH Los
microcontroladores
PIC 0 PIC micro
son derivados del
PICL650.
En este complejo escenario, hacen su aparicién las placas de
desarrollo, que en la actualidad proliferan y se vuelven cada vez mas
accesibles y vers
de democratizar el acceso a las herramientas de desarrollo que se
encontraban restringidas por el alto costo del hardware y de los
sistemas de desarrollo electrénico.
Una de las placas de desarrollo mas populares es Arduino. La idea
principal fue entregar acceso a MCU embebidos, pensando en proyectos
de disefio interactivo, Gracias a esto, Arduino permite crear todo tipo de
prototipos electrénicos en forma rapida y econémica. La importancia de
Arduino es tal que todo principiante, entusiasta y experto en el mundo
tiles. Se trata de plataformas que se encargaron
de la electronica lo utiliza para realizar sus proyectos.
[Link] 251. CONCEPTOS INICIALES ee
ERSZ ESS
En este capitulo hemos dado el primer paso en la tarea de trabajar con
Arduino. Revisamos los conceptos iniciales relacionados con la electricidad
y la electronica, analizamos algunos de los componentes electronicos
mas importantes y conocimos los microcontroladores. Para finalizar,
realizamos una pequefia descripcion en la que recorrimos la evolucion de
los microcontroladores hasta las placas de desarrollo.
26 [Link]PA a3
Arduino
Definir a Arduino no es una tarea sencilla, pues se
trata de una plataforma que incorpora hardware
y software en apoyo de multiples proyectos de
electrénica y, ademas, se ha convertido en toda una
filosofia en la que la premisa del hardware libre es
un punto esencial.2. €QUE ES ARDUINO?
28
INTRODUCCION
En términos formales, Arduino es una plataforma de hardware libre
—creada por David Cuartielles y Massimo Banzi— basada en una placa
con un microcontrolador y un entorno de desarrollo, y fue ideada para
facilitar el uso de la electrénica en proyectos multidisciplinares, tanto
para entusiastas como para expertos.
Si desmenuzamos esta definicién, extraeremos ciertas ideas muy
interesantes. Arduino es, a la vez, un sistema de procesamiento, un
microcontrolador, una placa; también integra un entorno de desarrollo
y es una plataforma de hardware open source.
Por otra parte, en forma simplificada, podemos mencionar que
Arduino es una plataforma de hardware de cédigo abierto, que basa
su funcionamiento en una placa con entradas y salidas (analgicas
y digitales), con un entorno de desarrollo que incorpora todo lo que
necesitamos para crear nuestros programas.
Los componentes esenciales que nos permiten configurar una
definicién practica para Arduino son el hardware, el software y la
comunidad que lo mantiene.
I Para definir Arduino, debemos tener en cuenta el hardware,
el software y también la comunidad que lo mantiene.
[Link]ARDUINO
Hardware
En relacién con el hardware, Arduino incorpora un microcontrolador
que permite la programacién con un lenguaje de alto nivel. Se trata del
elemento encargado de efectuar los procesos matematicos y légicos,
asi como también de gestionar los recursos para cada componente
externo que conectemos a la placa principal.
Una placa Arduino incorpora una serie de entradas analdgicas y
digitales, gracias a las que podremos conectar distintos sensores
y otras placas 0 shields. Todo esto nos permite agregar nuevas
funcionalidades sin necesidad de alterar el disefio original de la placa.
Un elemento importante dentro del hardware de Arduino son sus
puertos de entrada/salida, mediante los que es posible conectar la
placa a la computadora para integrar el trabajo con el software tal
como veremos en la siguiente seccién.
eae tones
Poste ee od
ee}
fer]
Ceo ee ae tt)
I Una de las placas Arduino mas conocidas es la Arduino UNO. En la imagen se
puede apreciar el microcontrolador Atmel, integrado en esta placa
[Link] com 292. €QUE ES ARDUINO? ea
En esencia, si analizamos el hardware de Arduino, encontraremos
una placa de circuito impreso con un microcontrolador (Atmel AVR),
y un conjunto de puertos digitales y analégicos de entrada/salida.
Ademis, posee un puerto USB mediante el que se alimenta y se
comunica con la PC.
Arduino se presenta en diversas categorias, que utilizaremos
dependiendo del tipo de proyecto que deseemos implementar; entre
ellas encontramos placas, placas de expansién o shields, kits y
accesorios; adicionalmente, hallamos la categoria de impresoras 3D,
donde se ubica Arduino Materia.
La principal categoria de Arduino son las placas, tanto placas de
desarrollo como de expansién; analizaremos algunas de ellas en detalle
més adelante, en este mismo capitulo.
Materia 101
es la impresora 3D
disefiada y fabricada por
Arduino. Al igual que las
placas Arduino, se trata de
tun sistema open source
tanto en el software como
en el hardware.
Los distintos modelos de placas Arduino poseen especificaciones
distintivas, por lo que es necesario conocerlas para saber cual
debemos utilizar en un proyecto concreto. En la siguiente tabla
resumimos algunas caracteristicas de hardware esenciales para ciertas
placas Arduino.
30 [Link]ees ARDUINO
$8 PLACAS ARDUINO Y SUS PRINCIPALES CARACTERISTICAS
Efe) Ke) elt U Ce ML CAL CON
Rey
Arduino ATmega 20 12 32 kb
Leonardo 32U4
Arduino ATmega 14 6 32 kb
UNO R3 328
Arduino Almega 54 16 256 kb
Mega 2560
2560 R3
Arduino ATmega 54 16 256 kb
Mega pro 3.3V 2560
Arduino ATmega 14 6 32 kb
mini 05 328
Arduino Atmega 14 8 32 kb
Fio 328P
Arduino ATmega 54 16 56 kb
Mega Pro 2560
Mini 3.3V
Arduino ATOISAM 54 12 512 kb
DUE 3X8E
[Link] 312. ZQUE ES ARDUINO? ee
La importancia de estos datos radica en que condicionaran el tipo de
placa en funcién del proyecto en el que deseamos trabajar. En primer
lugar, debemos saber la cantidad de pines analégicos y digitales que
necesitaremos para un proyecto especifico, y dependiendo de esto
elegiremos una u otra placa.
Més adelante tendremos que deducir el tamafio del codigo que
generaremos; esto es importante pues, en programas que utilicen
muchas variables o constantes, necesitaremos una mayor cantidad
de memoria flash. También debemos considerar la cantidad de RAM
disponible y si precisamos un microcontrolador de 8 0 de 16 bits;
ademas hay que tener en cuenta cual es el voltaje que la placa puede
manejar. Todo esto resultara en la eleccién de una placa o de otra; en
otros capitulos conoceremos las caracteristicas especificas de algunos
de los modelos mas utilizados de Arduino.
Fuente de alimentacion
Un tema importante que debemos tener en cuenta a la hora de
comenzar a trabajar con Arduino es la necesidad de contar con una
fuente de alimentacién eléctrica.
En principio utilizaremos la energia proporcionada por la PC,
mediante una conexién USB, de esta forma, la alimentaci6n no sera un
problema cuando estemos programando nuestra placa o mientras esté
conectada a la computadora. Pero ¢qué haremos después? Cuando no
es una opcidn tenerla permanentemente conectada a la PC, debemos
probar otras alternativas, como por ejemplo, se pueden utilizar
adaptadores de corriente, pilas AA o baterias LiPo.
32 ‘[Link]eas ARDUINO
ADAPTADOR DE CORRIENTE
Es una alternativa similar a un cargador para teléfono
movil; resulta una opcidn adecuada para aquellos
Proyectos que no se moverdn, es decir, que pueden .
funcionar conectados a un toma corriente de pared.
PILAS AA
Es posible poner varias pilas AA en serie para lograr el voltaje
que necesitamos en nuestra placa, teniendo en cuenta que
cada una nos proporciona 1.5V. Aunque se trata de una opcién
recomendable para proyectos que requieren movilidad, debemos.
considerar que su energia se consume rapido, por lo que
tendremos que cambiarlas a menudo.
BATERIAS LiPo
Es una opcién mas eficiente pues proporcionan
energia por bastante tiempo, aunque en comparacién
con las tradicionales pilas AA presentan un costo
mayor. Son baterias recargables, por lo que también
necesitaremos un médulo cargador, ya que es.
necesario cargarlas adecuadamente para alargar su
vida. Las baterias LiPo (polimero de lio) se componen
de celdas de 3,7V cada una.
Software
Aunque lo que mas nos llama la atenci de Arduino es el hardware,
la verdad es debemos considerarla mucho mas que una placa de
circuitos y componentes electronicos. Es una completa plataforma
que nos permite programar el codigo necesario para controlar el
funcionamiento de los sensores que conectamos a la placa.
Gracias al software que integra Arduino, es posible establecer las
instrucciones y los parametros para controlar su funcionamiento y, de
esta forma, generar nuestros propios proyectos.
[Link] 332. QUE ES ARDUINO? ea
Al igual que el hardware de Arduino, el software que necesitamos
para programarlo se distribuye libremente, por eso, solo se precisa
descargarlo desde su web oficial. Analizaremos este procedimiento en
detalle en el Capitulo 6 de este libro.
Como vemos, uno de los componentes importantes de Arduino es
su software. Se trata de un IDE o Entorno de Desarrollo Integrado,
es decir, un conjunto de herramientas que podemos utilizar para
programar o desarrollar aplicaciones.
© sketch mar09a | Arduino 1.6.8 ad o x
File Edit Sketch Tools Help
‘sketch _mar0oa
MEL IDE de Arduino
incorpora todo lo que
necesitamos para crear
Pu) el codigo que controlara
el funcionamiento de los
sensores conectados a
fa placa Arduino, para dar
vida a nuestros proyectos.
ELIDE de Arduino se distribuye como un programa empaquetado, con
todo lo que necesitamos para programar, asi encontraremos lo siguiente:
EDITOR DE CODIGO
Se trata de un programa disefiado especificamente para que podamos crear y editar
cédigo fuente. Aunque es posible utilizar cualquier editor de texto plano para crear
este tipo de cédigo, un editor especifico integra el reconocimiento del lenguaje de
programacién que utilizaremos.
COMPILADOR
Es un programa informatico que se encarga de traducir un programa que hemos
desarrollado en un lenguaje de programacién a un lenguaje diferente; en general
traducira nuestro cédigo a lenguaje de maquina, entendible por el hardware.
34 [Link]ae ARDUINO
DEPURADOR
Este tipo de programa esta disefiado para probar y eliminar los errores que puedan
existir en el codigo que desarrollamos. En otras palabras, se trata de un programa
que ejecuta el cddigo para detectar posibles errores légicos.
Por si esto fuera poco, también dispondremos de las herramientas y
opciones necesarias para que podamos cargar, a la memoria flash del
hardware, los programas que realicemos. Es decir, es posible grabar los
programas desarrollados para que Arduino los ejecute.
Antes de trabajar con Arduino, sobre todo si no tenemos experiencia
en el manejo de circuitos electrénicos o placas de desarrollo, debemos
considerar que, al principio, el manejo de este hardware y de este
software podria ser algo complejo. Por esta raz6n, es una buena idea
utilizar un simulador virtual para acercarnos al uso de Arduino, una
excelente alternativa es Virtual BreadBoard, que encontramos en la
direccién [Link].
I Un simulador virtual nos permite acercarnos al uso de las placas de desarrollo antes
de enfrentarlas en forma fisica.
[Link] 352. ZQUE ES ARDUINO? ea
Comunidad
Como vimos hasta el momento, Arduino puede definirse teniendo en
cuenta su hardware y su software. Pero, en realidad, esta plataforma es
mas que solo placas y cédigo; un punto importante es la filosofia tras
Arduino, la que descansa en su amplia comunidad.
La poderosa comunidad de Arduino ha sido muy relevante
en el éxito de esta plataforma; se trata del grupo de usuarios,
desarrolladores y entusiastas, que comparten contenido, publican
proyectos y resuelven dudas, todo esto en pos de la divulgacién de
Arduino en el circulo de desarrolladores y amantes de la electronica.
HARDWARE LIBRE
Sin duda, una de las principales caracteristicas de Arduino es que se
trata de una plataforma Open Source.
Si bien estamos acostumbrados a escuchar sobre software libre, es
menos comiin encontrarnos con hardware que se clasifique en esta
categoria. El hardware open source o libre es aquel para el cual las
especificaciones 0 los diagramas esquematicos estan disponibles y son
de acceso puiblico. Entre las cuestiones para tener en cuenta a la hora
de clasificar el hardware como libre, debemos considerar lo siguiente:
> Es necesario publicar la documentacién incluyendo los archivos de los.
disefios, para efectuar su modificacién y distribucion,
36 ‘[Link]ae ARDUINO
> Se debe definir qué porcién del disefio es abierta.
> Debe entregar el software necesario para leer el archivo del disefio y la
documentacién adecuada que se relaciona con sus funcionalidades, asi se
podra escribir el c6digo necesario en forma sencilla.
Ofrecer una licencia que permita producir derivados y modificaciones.
No se debe restringir la venta o el compartir Ja documentacién necesaria.
La licencia no debe discriminar ni restringir campos o actividades.
La licencia no debe restringir otro hardware ni otro software. Ademas
debe ser neutral, sin basarse en tecnologias especificas, partes 0
componentes, materiales o interfaces de su uso.
vvvy
Si consideramos estos puntos, podemos definir a Arduino como
hardware libre. De esta forma estamos frente a una plataforma que,
tanto en su disefio como en su distribucién, es libre.
Es decir, podemos usarla para
desarrollar cualquier proyecto,
sin que sea necesario pagar
alguna licencia o regalia
i Aunque es uno de los més conocidos, Arduino no es el inico representante de
hardware Open Source. En la imagen verios a RaspBerry Pi, una computadora de
placa reducida con propiedad registrada pero de uso libre.
[Link] 372. €QUE ES ARDUINO? ea
CARACTERISTICAS ESENCIALES
Ahora que conocemos algo mas sobre el mundo del hardware libre
y también hemos ensayado una definicién satisfactoria de Arduino,
podemos enumerar sus principales caracteristicas:
PRECIO ACCESIBLE
Sin duda, su bajo costo es una de las principales particularidades de Arduino.
Silas comparamos con otras plataformas microcontroladoras, veremos que las
placas Arduino son relativamente baratas, ademas, existen mddulos que pueden
ensamblarse en forma manual 0 en versiones reducidas, lo que disminuye su precio
en el mercado.
MULTIPLATAFORMA
El paquete de software que acompafia a Arduino puede ser ejecutado en los sistemas
‘operativos Windows, Mac OSX y GNU/Linux. En comparacién, otros sistemas estan
limitados a un determinado sistema operativo.
ENTORNO DE PROGRAMACION
El entorno en el cual podemos programar a Arduino es facil de usar y de aprender. Pero
también es flexible, por lo que puede ser utilizado por usuarios avanzados 0 educadores.
SOFTWARE ABIERTO
El software de Arduino esta publicado como codigo abierto, por eso puede ser
modificado y extendido por quien lo desee. Esto se realiza mediante el uso de
librerias C++.
HARDWARE ABIERTO
Arduino se basa en microcontroladores de ATmel; sus planos estan disponibles bajo
la licencia Creative Commons, por lo tanto, es posible crear versiones propias de los
médulos, para extenderlos y mejorarlos. Ademas, podemos fabricar nuestra propia
version de las placas, ya sea para entender su funcionamiento, para abaratar costos
© para redistribuirla.
38 [Link]ae ARDUINO
PLACAS DISPONIBLES
Podemos imaginar las placas Arduino como las distribuciones GNU/
Linux, cada una de ellas preparada para atender necesidades de
usuarios particulares, o para ser utilizadas en una serie de proyectos
0 tareas. Es necesario considerar que los modelos oficiales de placas
Arduino alcanzan algunas decenas, pero, si sumamos los modelos no
oficiales y los Arduino compatibles, con facilidad tendremos cientos
En este punto hemos introducido un par de conceptos nuevos
placas oficiales y no oficiales de Arduino. En qué se diferencian?
Por un lado, las placas oficiales son aquellas construidas por la
empresa Smart Projects, por SpartFun Electronics 0 por Gravitech,
las Gnicas que llevan la marca registrada Arduino y que incluyen su logo.
Por otro lado, las placas no oficiales son las que, si bien resultan
compatibles, no pueden utilizar el nombre Arduino. Las disefian
otras compaiiias y, por lo general, se crean para cubrir necesidades
especificas donde las placas oficiales no han Ilegado. En realidad, como
hemos comentado en secciones anteriores, cualquiera puede crear su
propia placa Arduino; en ese caso, pasaria a formar parte de las placas
no oficiales.
Esto es importante a la hora de seleccionar una placa para trabajar
en nuestros proyectos. Por ejemplo, es posible que necesitemos una
placa compatible por alguna caracteristica que no encontramos en una
placa oficial, o que nos interese contar con una placa de desarrollo
oficial, y entonces tendremos que elegir entre las manufacturadas
por las empresas mencionadas antes. En cualquier caso, una de las.
mis utilizadas es la Arduino UNO, sobre todo para quienes recién
comenzamos en el mundo de Arduino. A continua
las caracteristicas de algunas de las placas oficiales.
yn, Conoceremos
i
[Link] 392. €QUE ES ARDUINO? ea
Se trata de la placa mas extendida, la primera que aparecié en el mercado y la
mas utiizada para todo tipo de proyectos. Sus caracteristicas generales son
las siguientes: un microcontrolador ATmega320 de 8 bits a 16 Mhza 5V. Posee
32 kb para la memoria flash con 0,5 kb reservados para el bootloader, 2 kb de
SRAM y 1 kb de EEPROM; ademas ofrece 14 pines digitales y 6 analdgicos.
‘Aunque parece una placa limitada, resulta suficiente para una enorme cantidad
de proyectos.
La Arduino UNO es una placa basica, pero contiene suficientes pines
analégicos y digitales como para hacer frente a nuestros primeros
proyectos. En la imagen vemos la Arduino UNO R3.
40 [Link]eas ARDUINO
Esta placa es similar a la Arduino UNO, pero, en su arquitectura, utiliza un
microcontrolador Atmel SAMD21 MCU de 48 Mhz e integra un core ARM Cortex
MO de 32 bits.
En ella encontraremos 256 kb de memoria flash, 32 kb de SRAM y una
EEPROM de mas de 16 kb por emulacién. Ofrece 14 pines E/S digitales,
y 6 entradas analogicas para un canal ADC de 12 bits, y una salida analégica
para DAC de 10 bits. Se trata de una placa preparada para aquellos que
sienten que Arduino UNO no ofrece lo que necesitan, es decir, nos ayudar
a enfrentar proyectos avanzados.
La placa Arduino Zero supera por mucho las prestaciones de la Arduino
UNO, por esta razén es la adecuada para acompajiarnos en proyectos
de mayor exigencia.
[Link] 412. €QUE ES ARDUINO? a
Arduino Zero Pro
Se trata de una versién mejorada en muchos aspectos en comparacién con la
placa Arduino Zero. Esta opcién integra un microcontrolador de 32 bits, el Cortex
MO+ basado en ARM, que corre a 48 Mhz, y se integra en un Atmel SAMD21 MCU.
Sus demas caracteristicas son similares a la placa Arduino Zero.
La Arduino Zero Pro mejora las prestaciones de cémputo ofrecidas por
la placa Arduino Zero.
Ee
42 [Link]ae ARDUINO
Una forma facil de describir esta placa seria mencionarla como una opcién
con caracteristicas similares a la Arduino UNO, pero que incorpora capacidad
de conexién Ethernet, WiFi, USB y microSD sin que sea necesario agregar
complementos adicionales.
En forma especifica, la Arduino Yin basa su arquitectura en un microcontrolador
‘ATmega32u4 (de 16 Mhz, trabaja a 5V, con una memoria de 32 kb, con 4 kb
reservados al bootloader), y en un chip Atheros AR9331, que es el encargado de
controlar el host USB, el puerto micro-SD y la red Ethernet/WiFi, Es interesante
mencionar que el procesador Atheros soporta distribuciones Linux que se
basan en OpenWrt. Esta placa nos ofrece 20 pines digitales, 12 analégicos, se
complementa con el AR9331 que funciona a 400 Mhz basado en MIPS, es un
chip que contiene RAM DDR2 de 64 MB y 16 MB flash para que podamos utilizar
un sistema Linux embebido.
La Arduino Yan nos permite integrar el poder de los sistemas GNU/Linux
con la facilidad de uso de Arduino.
[Link] 432. €QUE ES ARDUINO?
Esta placa puede considerarse como una mezcla entre las Arduino UNO y las
Arduino Yan. Por un lado, posee las capacidades de almacenamiento de la
Arduino UNO y, por otro, nos ofrece los mismos pines que la placa Arduino Yun.
Se basa en un microcontrolador ATmega32u4 de bajo consumo que trabaja a
16 Mhz, su memoria flash es de 32 kb con 4 kb para el bootloader, su EEPROM
es de 1 kb. Sila analizamos a nivel de voltajes, encontraremos que es igual a
Arduino UNO, pero nos entrega 20 pines digitales y 12 pines analégicos. Como
podemos ver, cuenta con los mismos pines que Yin, pero no incorpora sus
funciones de red.
Sila comparamos con Arduino UNO, Leonardo ocupa menos espacio, utiliza
un conector mini USB, por lo que serd eficiente en proyectos en los que
necesitemos ahorrar espacio.
by
5 Ermer error
oars)
S22cee
PN DR OMRON DE
La placa Arduino Leonardo utiliza un conector mini USB para ahorrar
espacio. Es ideal para proyectos que requieran dimensiones limitadas.
44 [Link]ae ARDUINO
Si trabajamos en proyectos que precisen capacidades de procesamiento
mayores, la placa Arduino Due es lo que buscamos. Se basa en un
microcontrolador Atmel SAM3X8E ARM Cortex-M3 de 32 bits, que trabaja
a 84 Mhz entregando una potencia de calculo superior a otros controladores,
y permite realizar operaciones
con datos de 4 bytes en un ciclo
de reloj.
Presenta una memoria
SRAM de 96 kb e integra un
controlador DMA para acceso
directo a memoria. Si estamos
preocupados por la memoria
flash, esta placa nos sorprende
con 512 kb, un espacio
bastante superior a otras placas
Arduino.
Dispone de 54 pines digitales
y 12 analégicos, ademas
posee conexién USB OTG,
dos conexiones DAC, 2 TWI,
un powerjack, SPI y JTAG.
La Arduino Due se encarga de aumentar la potencia de calculo y la
memoria flash, por lo que es una buena opcién para proyectos exigentes.
[Link] 452. €QUE ES ARDUINO?
Sus prestaciones son similares
a Arduino Due, pero se basa en
una arquitectura AVR. Posee un
microcontrolador ATmega2560
que trabaja a 16 Mhz, con SV.
Este microcontrolador (8 bits)
trabaja con una SRAM de 8 kb,
EEPROM de 4 kb y flash de
256 kb (con 8 kb para el
bootloader). Ademas posee
A pines digitales y 16 analégicos.
Es superior al microcontrolador
‘ATmega320 que encontramos
en la placa Arduino UNO, pero
no llega a compararse con las
soluciones que se basan en ARM
La ultima versién de la placa
Arduino Mega utiliza un
microcontrolador ATMega8U2
en vez de un chip FTDI. Gracias
a esto, ofrece mayor velocidad
de transmisién por USB, y no es
necesario cargar drivers para
Linux 0 MAC.
;
/
4
Lar
La placa Arduino Mega nos ofrece un buen nimero de entradas
digitales, gracias a las que podremos incorporar diferentes médulos para
potenciar nuestros proyectos.
46 [Link]as ARDUINO
Arduino Fio
Siel espacio es una preocupacién,
la placa Arduino Fio podria ser
lo que buscamos. Se trata de
una placa que fue reducida al
minimo, pensada para proyectos
inalémbricos o que deban ser
acomodados en espacios pequefios
Posee un microcontrolador
ATmega328P que trabaja a 8 Mhz.
Debemos tener en cuenta que,
para cargar los programas, sera
necesario utilizar un cable FTDI 0
una placa adicional. Posee 14 pines
digitales y 8 analégicos, y funciona
con 2 kb de SRAM, 32 kb de flash y
1 kb de EEPROM.
Ae iGtate
hitp//[Link] 3U3(@
La Arduino Fio, por sus pequefias dimensiones, es ideal para proyectos
que deban utilizar espacios reducidos. Aun asi, se trata de una placa
Arduino completamente funcional.
[Link] 472. €QUE ES ARDUINO? ea
NTT LET
Como veremos con esta placa Arduino, las capacidades de esta plataforma
alcanzan limites insospechados. LilyPad es una placa disefiada para ser integrada
en prendas de vestir o textiles, es decir, se trata de una versién de Arduino que
podemos usar.
Su arquitectura se basa en dos microcontroladores de bajo consumo
distintos, Atmegal68V y ATmega328V que trabajan a 8 Mhz, a 2,7V y a 5,5V,
respectivamente. Posee 14 pines digitales y 6 analégicos, una memoria flash de
16 kb, 1 kb de SRAM y 512 bytes de EEPROM.
Arduino LilyPad posee una forma distinta, especial para ser incorporada
en prendas 0 articulos que podemos utilizar a diario, Se usa en proyectos
de tejidos inteligentes.
48 [Link]ARDUINO
La placa Arduino Pro utiliza un microcontrolador ATmegal 68 o un Atmega328,
con 8 Mhz o 16 Mhz, Nos ofrece un total de 14 pines de E/S digitales y 6 pines
analégicos. Se trata de una placa que posee entre 32 kb y 16 kb de memoria
flash, dependiendo del controlador que utiice. Ambos modelos ofrecen 512 bytes
de EEPROM
Su nombre puede confundirnos, pero la verdad es que no es una de las placas
mas potentes de la familia Arduino, aunque resulta una excelente opcién para
quienes buscan potencia combinada con un bajo costo.
@
Arduino
[Link]
Pond
ere Gis a Rero ttm
La placa Arduino Pro posee pines laterales de conexién del UART,
regulador 5V incorporado, y se encuentra protegida contra inversion de
polaridad.
[Link] 492. €QUE ES ARDUINO? ee
NTT Ta
Se trata de la versién minima de la placa Arduino
Pro. Con un precio menor y un tamafio bastante
reducido, nos aporta flexibilidad y, por lo tanto,
portabilidad para proyectos especificos. Debemos
tener en cuenta que, para reducir su tamafio, se
ha prescindido de caracteristicas tales como el
conector USB integrado o los conectores de pin.
as
we
La placa Arduino Pro Mini posee un tamafio
muy reducido, pero con caracteristicas
generales similares a su hermana mayor, la
placa Arduino Pro.
v
erereX
pe
ETT
La placa Arduino Micro ofrece una elevada autonomia junto a un tamafio muy
reducido. Su construccién se basa en un microcontrolador ATmega32u4, que
funciona a 16 Mhz. Posee un total de 20 pines digitales y 12 pines analdgicos. Si
queremos compararla, podemos decir que es similar a Arduino Leonardo, aunque
agrega la capacidad de comunicacién USB builtin, por lo tanto, no precisa de la
existencia de un segundo procesador.
Arduino Micro nos ofrece una potencia similar a la placa Arduino
Leonardo, pero en un formato bastante compacto de tan solo 48 x 18 mm.
50 [Link]ae ARDUINO
NCTE
Es una placa que, a primera vista,
llama la atencién por su tamafio y
también por su forma, pero, sila
analizamos mas a fondo, veremos
que posee otras caracteristicas que
nos sorprenderén. Funciona con un
microcontrolador ATmega32u4 que
trabaja a 16 MHz, posee una SRAM
de 2,5 kb, 1 kb de EEPROM, una
memoria flash de 32 kb con 4 kb
para el bootloader.
Entre las novedades que presenta,
encontramos la integracion de
diversos sensores: acelerémetro,
temperatura, luz; también nos
ofrece un zumbador, botones,
joystick, micréfono y, por si todo
esto fuera poco, se agrega un
socket adecuado para conectar una
pantalla TFT LCD.
Arduino Esplora incorpora una serie de sensores y, también, una forma
distinta de las demas placas Arduino.
[Link] 512. €QUE ES ARDUINO?
Placas no oficiales
Ya mencionamos que cualquier placa que haya sido creada para ser
compatible con Arduino o basada en su arquitectura, pero que no pueda
utilizar el nombre oficial se considera una placa no oficial. En este
segmento existen muchas opciones, algunas de ellas son compatibles
a nivel de hardware, por lo que permiten utilizar los shields oficiales,
mientras que otras solo son compatibles a nivel de software, por lo que
Ginicamente podremos utilizar el IDE para programarlas. La eleccién de
una o de otra placa dependera de las necesidades de nuestros proyectos.
Mencionaremos algunas de las placas no oficiales existentes.
@ PLACAS NO OFICIALES DISPONIBLES EN EL MERCADO
PLACA
Almond
PCB
Banguino
Boarduino
bq ZUM
BT-328
ChibiDuino2
ChipkIT
Lenny
Freaduino
52
aay
Open
Bionics
Dimitech
Adafruit
bq
TiisaiDipJp
Majenko
Technologies
Elecfreaks
eee
Ofrece un microcontrolador Atmega 2560, 9 pines E/S
configurables digitales, 2 pines ADC, 256 kb de flash,
4 kb de EEPROM, USB, I2C, UART, SPI, entre otras
caracteristicas.
Posee un microcontrolador ATmega328, es compatible
a nivel de software, pero no a nivel fisico. En cuanto a
caracteristicas, es similar a Arduino UNO.
Es una placa compatible solo a nivel de software con
Arduino. Sus caracteristicas son similares a un Arduino
Diecimila, pero con un tamafio y un valor mas reducido.
Es similar a Arduino UNO, pero incluye un set de tres,
pines para conectar sin empalmes, bot6n de encendido
y apagado, Bluetooth y soporte de mas conexiones por
3.2, ademas posee una conexién micro USB.
Esta placa es compatible con Arduino UNO, pero incluye dos
mintUSB B, un puerto LCD 1602 y un area breadboard.
Es compatible con Arduino Leonardo a nivel fisico. Pose
un microchip PIC32MX270F256D a 40 Mhz, 256 kb de
flash, 64 kb de RAM.
Su creaci6n se basa en la placa Arduino UNO, y es.
compatible en un 10% a nivel de hardware y de software.
[Link]ae ARDUINO
USOS DE ARDUINO
Ya conocimos algunas de las placas Arduino oficiales disponibles en el
mercado y sus caracteristicas generales, también realizamos un repaso
por las placas no oficiales. En este punto, gracias a la informacion
de las diferentes placas, somos capaces de detallar algunos de los
principales usos en los que podemos explotar su potencial
La versatilidad de Arduino hace casi imposible describir en detalle
todo lo que podemos lograr, pero en pocas palabras diremos que,
gracias a Arduino, es posible hacer practicamente de todo, el limite es
nuestra imaginacion. Algunas de sus aplicaciones son las siguientes:
AUTOMATIZACION INDUSTRIAL
Arduino ofrece muchas posibilidades y ha
sido parte importante en proyectos de
automatizacion en industrias, gracias a que
puede funcionar como un controlador légico
programable.
DOMOTICA
Los sistemas de control de domdtica son
més accesibles y pueden ser creados
por entusiastas, gracias a las placas
proporcionadas por Arduino.
PROTOTIPADO
La construccién de prototipos para
diversos proyectos se ha visto beneficiada
gracias a la rapidez que nos ofrece el
trabajo con Arduino.
[Link] 532. €QUE ES ARDUINO? ea
ENTRENAMIENTO ELECTRONICO
‘Arduino es una plataforma excelente para
utilizar en centros educativos, ya sea para
introducir conceptos electronicos 0 para crear
proyectos iniciales sencillos.
ARTE
El arte no es una esfera que se aleje de
la presencia de Arduino, existen muchas
aplicaciones de esta plataforma en la creacién
de arte.
EFICIENCIA ENERGETICA
Desde el control del consumo energético en
nuestro hogar hasta medidores de consumo,
‘todo lo podemos crear con el apoyo de Arduino.
MONITORIZACION
Arduino ha sido parte de proyectos dedicados
‘ala monitorizacién a distancia. Ya sea de
temperatura, nivel de agua o también de espacios
fisicos, todo puede ser monitorizado por Arduino.
ADQUISICION DE DATOS
Arduino es capaz de adquirir diversos tipos de
datos, para ello podemos agregar a nuestros
proyectos algunos de los sensores disponibles
en el mercado.
4 [Link]ROBOTICA
Por supuesto, la robética no podia quedar
fuera de este pequefio listado. Encontramos
diversos proyectos que hacen uso de
Arduino para construir y programar robots.
INTERNET DE LAS COSAS
Més conocido como loT, por sus siglas en
inglés, se trata de lograr la interconexién de
abjetos cotidianos con internet.
OTRAS APLICACIONES
Los usos de Arduino son muchos. Algunos
sectores donde se ha destacado con
proyectos interesantes son la construccién
de drones y la de impresoras 3D.
[Link]
ARDUINO
I Arduino Robot
consta de dos
placas circulares
apoyadas en ruedas
para entregar
movilidad.2. €QUE ES ARDUINO? aS
ES SZ ESS enc
En este capitulo construimos una definicion satisfactoria de Arduino,
conocimos sus principales caracteristicas y, de esta forma, pudimos
comprender sus ventajas. Caracterizamos a Arduino a nivel de hardware,
a nivel de software y, también, mencionamos la importancia de la
comunidad que esta a su alrededor. Conocimos qué es y para qué sirve
el hardware libre y reconocimos a Arduino como un representante de esta
filosofia. Mas adelante presentamos y caracterizamos algunas de las
placas oficiales Arduino mas utilizadas, y conocimos varias de las placas
compatibles (no oficiales) que han sido creadas por otras empresas. Para
terminar, entregamos un listado de posibles aplicaciones en las que se ha
utilizado 0 se puede utilizar una placa Arduino.
56 [Link]Ya conocimos algunas de las placas Arduino oficiales
y también las no oficiales. Ahora es el momento de
caracterizar con mayor profundidad a Arduino UNO,
la placa que utilizaremos en nuestros primeros proyectos,
asi como también aquellos componentes basicos que
usaremos para iniciarnos en el mundo de Arduino.3. ZQUE SE NECESITA? Esa
COMPONENTES NECESARIOS
Para comenzar a trabajar con Arduino necesitamos, en primer lugar,
una placa de pruebas. Podemos utilizar cualquiera de la gama de placas
oficiales 0, también, una compatible. En este caso usaremos Arduino
UNO, por ser la placa mas generalizada.
Pero Arduino UNO no puede trabajar sola, es necesario contar con
una serie de componentes electronicos adicionales, cada uno de los
que nos servira para una tarea especifica y, en conjunto, para lograr
proyectos completos. Para analizar en detalle lo que utilizaremos, los
dividiremos en placa de desarrollo y elementos adicionales.
I Sivolteamos la placa
Arduino, veremos que se trata
del modelo UNO R3, que es el
que utilizaremos para realizar las
tareas y los proyectos integrados
en esta obra.
es
58 ‘[Link]ARDUINO
PLACA DE DESARROLLO
Como mencionamos, para iniciarnos en Arduino utilizaremos la
placa Arduino UNO. Esta es muy versatil y nos ofrece todo lo que
necesitamos para proyectos tanto sencillos como avanzados.
En la actualidad, la ultima version de esta placa es la R3, por lo
tanto, trabajaremos con ella.
29299999 90 (ee
@ee -:
(2°) oes w
——— ce
pV dl ~ aS i
Sy 2 0 Saaae
es © oe
Ca a i : S
Se 5 ARDUINO ORG Ae ay ape
Ee 5 “e+e
Porrerrerg
eg eee
9333933 ee ie)
1 Si volteamos la placa Arduino, veremos que se trata del modelo UNO R3, que es el
que utilizaremos para realizar las tareas y los proyectos integrados en esta obra.
En Arduino UNO encontraremos diferentes secciones y componentes
que es necesario conocer. Tomaremos la placa y la ubicaremos teniendo
en cuenta la posicién correcta del logo de Arduino, de esta forma,
describiremos los componentes en orden. En la siguiente Guia visual
analizaremos los elementos mas relevantes.
59
[Link]3. QUE SE NECESITA?
Guia visual: Arduino UNO
Puerto USB | | Boton de reinicio
Clavijas di
Clavija 13 Led
Led TX y RX
Led de corriente
Conector de corriente
Clavijas GND y 5V
Entrada analégica
Se trata de un puerto USB tal como el que encontramos en otros
Puerto USB
dispositivos, como una impresora. Este lo utilizaremos para entregar
energia a la placa Arduino mientras estamos trabajando con la PC. También es necesario
para cargar los bocetos o sketchs, en definitiva, se trata de la forma de comunicacion de la
placa con la computadora.
[Link]cea ARDUINO
Es un pequefio botén que sobresale de la placa Arduino, su funcién
5 permitirnos resetear el microcontrolador ATmega, de esta forma
eliminaremos lo que hayamos cargado y podremos comenzar con un nuevo proyecto 0 sketch.
Resulta bastante iitil y siempre lo debemos tener en cuenta pues, al principio, podemos
equivocarnos bastante mientras cargamos los bocetos.
Se trata de LEDs que estan perfectamente indicados en la placa Arduino, se
utilizan para verificar que existe comunicacién entre la placa y la computadora.
La forma en que verificaremos la comunicacién es esperando que parpadeen mientras cargamos el
cédigo que hemos generado en el IDE de Arduino 0 cuando se efectia una comunicacién en serie.
Es un activador que se presenta en forma predeterminada en Arduino
UNO, esta indicado con la letra L impresa en la placa. Mas adelante lo
utilizaremos para efectuar la primera comunicacion con nuestra placa de desarrollo.
Se trata del conjunto de clavijas digitales que ofrece Arduino UNO.
Pueden ser utilizadas, por ejemplo, para digitalRead() 0 analogWrite(),
entre otras opciones.
Este LED se encuentra marcado con el texto ON. Cuando la placa esta
recibiendo corriente, por ejemplo desde la computadora a través de!
puerto USB, se encenderd una luz de color verde. Podemos utilizar este LED para verificar que
la placa recibe energia en forma correcta.
Sin duda, se considera el corazén de nuestra placa Arduino
UNO. Es un microcontrolador creado por ATmel, para el caso
de esta placa se trata del controlador Atmega328P-PU.
Se trata del conjunto de clavijas que funcionan como entradas
analégicas, presentes en la placa Arduino UNO. Podemos utilizarlas con
Estas clavijas son adecuadas para otorgar, a los circuitos en los que
trabajemos, corriente de +5V y también una toma de tierra.
En el primer punto conocimos una forma de energizar nuestra
placa Arduino, mediante el puerto USB. Pero este puerto solo
proporcionara energia a la placa mientras la mantengamos conectada a la computadora. Cuando
esto no suceda, utilizaremos el conector de corriente para energizar la placa; este conector
puede trabajar con voltajes que van desde los 7V hasta los 12V.
[Link] él3. QUE SE NECESITA? we
Con los principales elementos de la placa Arduino UNO ya
descriptos, podemos realizar el primer test de funcionamiento. Para
eso, conectamos la placa a la computadora y verificamos que se le
proporcione corriente. Tal como mencionamos en la Guia visual,
utilizaremos algunos de los LEDs que existen en la placa.
Paso a paso: Prueba de conexién con Arduino UNO
01
02
62
Para realizar esta primera prueba de conexién, necesitara una computadora,
una placa Arduino UNO y el cable USB que se proporciona con la placa o que
se adquiere por separado.
En primer lugar, conecte un extremo del cable USB a la computadora,
utilizando uno de los puertos USB habilitados.
[Link]0
0
[Link]
ARDUINO
Luego, conecte el siguiente extremo a la placa Arduino UNO. Para ello use el
puerto USB que se describe en la Guia visual
Con la placa conectada a la PC, verifique el LED de corriente y la clavija
13 LED. Si la conexién y el paso de corriente son correctos, el LED de
corriente, indicado en la Guia visual, deberd mostrar una luz constante de color
verde, mientras que la clavija 13 LED, indicada en la Guia visual, mostrar una
luz parpadeante de color anaranjado.
—— peers
cerry
com 633. QUE SE NECESITA? wes
Funcionamiento
Ahora es momento de profundizar atin mas en las caracteristicas de la
placa Arduino que utilizaremos:
Microcontrolador: ATmega328
Voltaje: 5V
Voltaje de entrada recomendado: entre 7V y 12V
Limite de voltaje de entrada: entre 6V y 20V
Pines digitales 1/0: 14, 6 de ellos son salida PWM.
Entradas analégicas:
Memoria flash: 32 KB (ATmega328), de ellos 0.5 kb son usados
para el arranque.
SRAM: 2 kb (ATmega328)
EEPROM: 1 kb (ATmega328)
> Velocidad de reloj: 16 MHz
vvVVVVY
vy
Las placas Arduino nos ofrecen un conjunto de terminales digitales
que podemos aprovechar como entradas y salidas generales mediante
comandos tales como pinMode() 0 digitalRead(), entre otros, Estos
terminales poseen una resistencia que puede activarse con digitalWrite()
al estar configurado como entrada. En la siguiente tabla, conoceremos
los terminales digitales generales de una placa Arduino y sus usos,
Pero no solo existen pines digitales en la placa Arduino, también
encontramos otros, que mencionamos a continuacién
> Pines analégicos: estos pines soportan la conversi6n analégico-digital
(ADC) de 10 bits mediante analogRead().
> I2C: permiten la comunicaci6n 12C (TWI) gracias a la libreria Wire.
> VIN: mediante este pin, proporcionaremos voltaje a la placa Arduino.
Debemos tener en cuenta que las diferentes placas soportan distintos
rangos de voltaje de entrada por lo que, al utilizarlo para alimentar la
placa, debemos ser cuidadosos
5V: es posible proporcionar alimentacién regulada para alimentar el
microprocesador y otros componentes.
3V3: se trata de una fuente de 3.3V generada por el chip FDTI.
GND: corresponden a los pines de tierra.
AREF: se trata de la referencia de voltaje para las conexiones analogicas.
Reset: podemos ponerlo en LOW para resetear el microcontrolador.
v
vvvy
64 [Link]ARDUINO
PINES DIGITALES EN PLACAS ARDUINO
Bac NM UU ey tee
Serial ORXy11X Se utilizan para recibir (RX) y transmitir (TX)
datos serie TTL.
Interruptores 2y3 Podemos utilizar estos terminales para
externos disparar una interrupcin con un valor bajo,
un pulso de subida 0 bajada, y también un
cambio de valor.
PWM 3,5,6,9,10y11 Nos entrega salidas PWM de 8 bits; para
ello utilizamos la funcion analogWrite().
Con el microchip Atmega8, estas salidas
estaran en los pines 9, 10 y 11.
Reset BT 7h En Arduino BT, se encuentra conectado a la
linea de reset para el modulo Bluetooth.
‘SPI 10, 11, 12,13 Se trata de terminales que soportan
comunicacién SPI.
LED 13 En algunas placas, un LED se encuentra
conectado al pin 13.
I Alexaminar una placa Arduino UNO, verificaremos que el nombre de cada pin se encuentra
indicado en el costado de los conjuntos de entradas.
[Link] 653. QUE SE NECESITA? we
Comparaci6n con otras placas
Aunque ya elegimos a Arduino UNO como la indicada para comenzar
a trabajar, es una buena idea compararla con otra placa oficial, asi
notaremos sus ventajas y, también, sus puntos débiles.
Para efectuar esta comparacion hemos elegido a Arduino Leonardo,
que ya conocimos en el capitulo 2 de este libro, porque se trata de
placas que, a simple vista, tienen un gran parecido.
Veamos primero las similitudes. En realidad se trata de dos placas
que presentan el mismo tamafio y poseen la misma cantidad de pin
que se disponen de igual forma en ambas placas. Estos presentan los
mismos requerimientos de alimentacion, de 7V a 12V, con 6V y 20V
como limites. Ademas, poseen la misma frecuencia de operacion
(16 Mhz) e igual voltaje de operacién (SV).
Pero no todo son similitudes, analicemos ahora sus principales
diferencias.
Microprocesador
Sin duda se trata de la mayor diferencia entre Arduino UNO y
Arduino Leonardo. Arduino UNO utiliza un Atmega328 que no
ofrece comunicacién USB integrada, por lo tanto, debe emplear un
microcontrolador adicional, el ATmega 16u2. En cambio, Arduino
Leonardo utiliza un microcontrolador ATmega32u4 que si integra la
posibilidad de comunicacién USB.
Comunicaci6n I2C
Aunque ambas tarjetas son compatibles con la comunicacién [2C 0 TWIN,
existe una diferencia importante entre ellas, se trata de los pines que
deben utilizarse para la linea de datos seriales y para la linea de reloj,
Arduino UNO utiliza los pines A4 y AS, respectivamente, mientras
que Arduino Leonardo hace uso del pin 2 y del 3.
Puede parecer una diferencia minima, pero la ubicacién diferente
de los pines para este tipo de comunicacién hace que algunos shields
no sean compatibles con las dos tarjetas. En beneficio de Arduino
UNO, debemos considerar que la mayor parte de los shields han
sido disefiados para ella, por lo tanto, Leonardo puede requerir la
realizacién de algunas modificaciones.
66 [Link]ARDUINO
Entradas analégicas y salidas PWM
Como consecuencia del uso de microcontroladores distintos, UNO
y Leonardo ofrecen un nimero diferente de pines, que pueden ser
configurados como entradas analdgicas y salidas PWM.
Arduino UNO ofrece 6 canales de entrada analégica en los pines del
AO al AS, mientras que Arduino Leonardo posee 12 canales de entrada
analdgica, del AO al AS y del A6 al All. Ademas, presenta una salida
adicional de PWM en el pin 13.
Interrupciones externas
En la tarjeta Arduino UNO encontramos los pines 2 y 3, para las
interrupciones 0 y 1, respectivamente. Arduino Leonardo nos ofrece
cinco pines para interrupciones externas: 3, 2,0, 1 y 7.
Memoria
Segun la informacién oficial sobre ambas placas, también hallamos
una pequefia diferencia en el apartado de memoria. En Arduino UNO,
el ATmega328 posee 32 kb de memoria flash, con 0.5 kb para el
bootloader; también tiene 2 kb de SRAM y 1 kb de EEPROM. Por otra
parte, en la Arduino Leonardo, con un microprocesador ATmega32u4,
tenemos 32 kb de memoria flash, con 4 kb que
son utilizados para el bootloader; 2.5 kb de
\
SRAM y 1 kb de EEPROM. La placa
Arduino Leonardo
Comunicaci6n SPI utiliza un
El protocolo de comunicacién SPI 0 interfaz 7
serial periférica es soportado tanto por UNO microcontrolador
como por Leonardo. En Arduino UNO se utilizan .
los pines 0, 11, 12 y 13 para las lineas SS, MOSI,, que integra
MISO y CK, mientras que en Leonardo se utiliza
el conector ICSP, que se encuentra en uno de
conectividad
sus extremos. Al igual que lo que ocurre con USB: el
la comunicaci6n I2C, encontraremos shields
que no son compatibles con la tarjeta Atmega32U4.”
Arduino Leonardo.
[Link] 673. QUE SE NECESITA? ee
Cable de conexi6n
Un punto importante entre las diferencias que se encuentran entre
UNO y Leonardo es el cable que necesitamos para conectarlo a la
computadora. En Arduino UNO es necesario usar un cable A-B, como
el que utiliza la mayoria de las impresoras; en cambio, para Leonardo
necesitaremos un cable A-micro B, como el que se usa para los
teléfonos inteligentes.
I En la Arduino UNO
se utiliza un cable
USB AB mientras
que, para conectar
Leonardo a la PC,
sera necesario un
cable A-micro B.
68 [Link]ARDUINO
ELEMENTOS ADICIONALES
Ya elegimos la placa Arduino UNO como la compaiiera en nuestros
primeros proyectos, ahora es tiempo de detallar los elementos anexos
que utilizaremos. Todos estos elementos pueden ser adquiridos en
tiendas de electronica o también en establecimientos especializados
ademas, si compramos un kit de iniciacién a Arduino, seguro
. Aunque presentaremos un listado de
componentes basico, es posible que se necesiten otros elementos,
esto dependera del tipo de proyecto que deseemos implementar.
obtendremos todo lo necesari
Protoboard
El protoboard no es mas que una placa que utilizaremos para
construir circuitos electronicos. A simple vista, se trata de un
panel lleno de agujeros, en el que podremos conectar los cables y
componentes electronicos, por ejemplo, condensadores y diodos
emisores de luz.
Existen diferentes tipos de protoboards, algunos necesitaran el uso
de soldadura mientras que otros se disefiaron para ser usados en modo
libre de soldadura.
Por ser una alternativa mas sencilla, es recomendable utilizar un
protoboard libre de soldadura.
En su construcci6n, el protoboard funciona como un tablero con
orificios que se encuentran conectados eléctricamente entre si,
siguiendo una distribucion lineal para que podamos ubicar y conectar
diversos componentes en forma sencilla y rapida.
Podemos dividir el protoboard en tres secciones bien delimitadas:
> BUSES: son los caminos que se ubican en ambos costados del protoboard.
Estén marcados con lineas rojas y azules, para indicar los buses positivos
0 de voltaje, y los buses negativos o de tierra, respectivamente. Por lo
general, utilizamos los buses para conectar la fuente de poder.
> CANAL CENTRAL: es la ranura o seccién ubicada justo en el centro del
protoboard, alli podemos colocar los circuitos integrados.
> PISTAS: en a parte central, traspasada por el canal central, se ubican
las pistas; estan indicadas por nimeros y letras, que nos sirven para
ubicarlas.
[Link] 693. QUE SE NECESITA? es
CANAL CENTRAL BUSES POSITIVOS (rojos) y
70
BUSES NEGATIVOS (azules)
1 Podemos encontrar
protoboards de distintos tamafios;
los elegiremos dependiendo de
la complejidad de los circuitos
que deseamos implementar. En la PISTAS
imagen vemos uno de 830 puntos.
La importancia del protoboard radica en que nos permite montar
circuitos 0 prototipos en forma temporal, es decir, es posible crear
un circuito y probar su funcionamiento, para luego desmontarlo y
dejar el protoboard listo para el siguiente experimento. Se pueden
crear circuitos conectando diversos componentes, por ejemplo,
resistencias, condensadores, LEDs, transistores, pulsadores y circuitos
integrados, entre otros. Para efectuar las conexiones, utilizaremos
fiados para ser usados en el protoboard; los
cables especificamente d
conoceremos mas adelante.
Cables de puente
Para trabajar en proyectos simples y también complejos, necesitaremos
un conjunto de cables de puente. Se trata de filamentos conductores,
recubiertos de material aislante en parte de su extensi6n, pero que
deja libres los extremos, mediante los que realizaremos las conexiones
adecuadas mediante conectores terminales.
[Link]ARDUINO
Estos cables se usan para lograr la conexién de componentes en el
protobord y también con la placa Arduino UNO.
Los cables de puente pueden adquirirse en distintas longitudes,
ya que la conexion de componentes debera realizarse a distancias
diferentes. Los cables estan representados con colores variados, de
esta forma, se pueden identificar de manera mas rapida y sencilla
dentro de un circuito.
Si estamos utilizando un protoboard que no requiere soldadura,
solo tendremos que introducir los extremos del cable de puente en
los orificios adecuados, dependiendo del proyecto en el que estemos
trabajando. Antes de energizar el protoboard, podemos utilizar un par
de cables de puente para probar la forma en que debemos conectarlos.
Para lograr una conexidn correcta, presionamos el cable de puente
hasta vencer la resistencia inicial.
I Es bueno probar la conexién de algunos cables de puente,
de esta manera, nos acercaremos a la forma de trabajo que
implementaremos mas adelante y asi podamos conocer el uso
de estos elementos en el protoboard no energizado.
[Link] 7m3. ZQUE SE NECESITA? esa
En este punto, aprenderemos a realizar una conexin basica, para
ello utilizaremos los dos elementos que conocemos: el protoboard y los
cables de puente. Sigamos las instrucciones indicadas en el siguiente
Paso a paso.
Paso a paso: Conexiones basicas
01 Para esta actividad basica, necesitara un protoboard y algunos cables de
puente, tal como se ve en la imagen.
Protoboard no energizado
Es importante recordar que el protoboard no debe estar energizado en el
momento de realizar las pruebas de conexi6n iniciales con los cables de puente. Si
trabajamos con la placa energizada y efectuamos una conexin errénea, podriamos
dajiar la placa al exponerla a la circulacién de corriente por caminos no adecuados.
Las primeras conexiones solo las realizaremos en forma ilustrativa, para conocer
de qué manera debemos conectar los cables de puente; mas tarde analizaremos la
forma correcta de realizar las conexiones para cada proyecto.
72 [Link]ARDUINO
En primer lugar, realice una conexién que servira para que ambos pares de
02 buses sean capaces de conducir corriente cuando les agregue una fuente
de poder, de esta forma ser mas sencillo manipular los circuitos integrados.
Conecte ambos buses teniendo en cuenta sus sectores positivos y negativos.
En algunos protoboards encontrara que la parte media de sus buses esta
03 separada, en estos casos sera necesario establecer un puente que permita
darle continuidad a la corriente suministrada. En caso de requerirse, debe
realizar esta conexién como se aprecia en la imagen de ejemplo.
3
[Link]3. QUE SE NECESITA?
74
Condensador
Los condensadores son elementos capaces de almacenar y emitir
energia en un circuito. Por lo general, son utilizados entre una toma
de corriente y la toma a tierra, por ejemplo, cerca de un servomotor;
gracias a esto es posible suavizar las fluctuaciones de voltaje
El funcionamiento de un condensador es sencillo, utiliza dos placas
o laminas conductoras que se encuentran separadas por un material
aislante. Estas laminas se cargaran eléctricamente al conectar una
fuente de tension o bateria.
Ambas placas se llenaran con la misma cantidad de carga, pero con
diferentes signos, es decir, una tendra carga positiva mientras que la
otra placa tendra carga negativa. Una vez cargadas, se presenta una
tension entre ellas y pueden soltar la carga almacenada cuando se
conecte un receptor de salida.
Entre ambas laminas existe un material aislante 0 dieléctrico
diferente, por ejemplo: tantalio, papel, aire, aluminio, ceramica 0
algunos plasticos, dependiendo del tipo de condensador del que se trate.
La cantidad de carga que es capaz de almacenar el condensador esta
definida por la formula /V.
» C: capacidad del condensador.
> q: carga de una de las placas.
» V: tensién entre las dos placas 0 la tensién del condensador.
Wi Los condensadores 0
capacitores electroliticos
ofrecen, por lo general, mas
capacidad por unidad de
volumen, en comparacién con
otros tipos de condensadores.
[Link]ARDUINO
Tanto la carga como la descarga de un condensador no se realiza
en forma instantanea, por esta raz6n pueden utilizarse como
temporizadores. El tiempo de carga se relaciona con su capacidad y con
la resistencia en serie, puesto que esta hace mas dificil el paso de la
corriente. De la misma forma, su descarga dependera de la capacidad
y de la resistencia de salida.
Existen diversos tipos de condensadores, a continuacion,
describimos los mas utilizados.
VARIABLE
Este tipo de condensador puede cambiar su capacidad en forma mecanica 0
electronica. Existen los trimmers, que permiten elegir entre varios valores de
capacidad, y también los de sincronizacién, que presentan una capacidad entre limites
establecidos.
ELECTROLITICO
Se trata de un condensador que posee una de sus placas formada por liquido idnico.
‘Se destacan por sobre otros condensadores por su mayor capacidad.
CERAMICO
Este tipo de condensador posee cerdmico revestido en laminas metalicas, como
material dieléctrico. Gracias a que la constante ceramica es bastante alta, estos
condensadores poseen una gran capacidad.
DE PAPEL
Los condensadores de este tipo utilizan papel como elemento dieléctrico. Este papel
‘se encuentra cubierto por cera mineral, aceite sintético 0 aceite mineral.
PLASTICO
Estos utilizan una delgada placa plastica como material dieléctrico; entre ellos se
encuentran diferentes clases, dependiendo del tipo de plastico utilizado, por ejemplo,
polipropileno, policarbonato, poliestireno, poliéster, teflon, poliparaxileno, entre otros.
[Link] 53. QUE SE NECESITA? ee
Diodo
Gracias a este elemento, nos aseguramos de que la corriente pase en
una direccién, Si lo conectamos en una direccién, permitira que la
corriente lo atraviese mientras que, en otra direccion, bloqueara el
paso de la corriente.
Si lo observamos, notaremos que se trata de un componente
central que es traspasado por un filamento largo. En general, debemos
conectar el 4nodo al punto de mayor energia en el circuito, mientras
que el catodo se conectara a la toma de tierra o al punto de energia mas
bajo. {Como sabemos cual es el catodo? Lo reconocemos pues suele
estar marcado con una banda indicativa en un lado del cuerpo central
Asi, la corriente fluye desde el anodo hacia el catodo, es decir, desde el
terminal positivo hacia el negativo.
El lado que corresponde
al catodo en un diodo est
indicado por una franja
en el cuerpo principal del
componente.
La principal funcion de los diodos es impedir que la corriente
fluya en dos direcciones, por esta razon pueden ser aplicados en los
siguientes casos
FLUJO DE CORRIENTE
Un diodo permite impedir que la corriente fluya en un sentido no deseado, por
ejemplo, si queremos que Arduino entregue una tensidn sin exponerse a una corriente
de entrada, podriamos utilizar un diodo en la placa Arduino y el componente externo.
CORRIENTE TRANSITORIA
Si utilizamos bobinas 0 inductores, podrian producirse corrientes transitorias,
capaces de afectar partes del circuito en el que trabajamos. Para suprimirlas,
podemos utilizar un diodo en forma de proteccidn.
76 [Link]ARDUINO
CAIDAS DE VOLTAJE
Es posible utilizar la caida de voltaje que se produce entre el anodo y el catodo
(0.7 voltios) al conectar un diodo. Esto es util, por ejemplo, para la conversion
andlogo/digital.
MEDIA ONDA DE CORRIENTE ALTERNA
Para utilizar la corriente alterna del suministro eléctrico normal, es necesario
tratarla de forma especial (transformacién de corriente alterna a corriente directa);
en este proceso utilizamos el diodo. El diodo es capaz de lograr que la corriente
fluya en un solo sentido; como la corriente alterna va en dos sentidos ~en el
semiciclo positivo va hacia un lado, y en el semiciclo negativo, hacia otro-, el
diodo nos permite suprimir una parte de la onda de corriente alterna para lograr
una corriente directa que permanece inestable, es decir, que presenta un rizo,
pero no alterna su signo.
Diodo emisor de luz (LED)
Al igual que los diodos que conocimos en el apartado anterior, este tipo
de componente permite el paso de la electricidad en un solo sentido,
En este caso, veremos que el LED se ilumina cuando pasa la corriente.
En su apariencia visual, se destacan dos filamentos unidos a una
cabeza de color; por lo general, el anodo que se conecta a la corriente es el
filamento mas largo mientras que el cétodo posee una extension menor.
Una definicion correcta de este elemento seria la siguiente: un diodo
LED es aquel que emite luz cuando esta polarizado directamente. Su
funcionamiento es bastante sencillo: al conectarlo con la polarizacién
directa, el semiconductor de la parte superior permite que pase la
corriente por el catodo y el anodo; cuando la corriente circula por el
semiconductor, este emitira luz. Los colores emitidos dependeran
del material con que se fabrique el semiconductor, esta variedad ja
permitido el desarrollo de nuevas pantallas multicolores.
Es importante tener en cuenta que un diodo LED debe ser protegido;
si se encuentra con una pequefia corriente en sentido inverso, no le
pasara nada, pero, si existen picos inesperados, podria llegar a dafiarse.
Una forma de protegerlo, podria ser la instalacion de un diodo de
silicio comtin, en paralelo y apuntando en la direccién opuesta.
[Link] 73. QUE SE NECESITA? we
78
I En un diodo LED, el
dispositivo semiconductor
se encuentra encapsulado
en una cubierta de plastico
que puede estar coloreada,
aunque es solo por razones
estéticas, ya que no influye en
el color de la luz que emite.
Los diodos LED pueden aprovecharse en diferentes aplicaciones,
por ejemplo:
>» CONTADORES: se utilizan para desplegar contadores.
» CORRIENTE CONTINUA: podemos utilizarlos para indicar la polaridad
de una fuente de alimentacién continua.
> CORRIENTE ALTERNA: son adecuados para indicar la actividad que se
presenta en una fuente de alimentaci6n de corriente alterna.
> ALARMAS: es posible usar su emisi6n de luz en dispositivos de vi
y alarmas.
Puente H
El puente H es un circuito disefiado para controlar la polaridad del
voltaje que se aplica a una carga, por ejemplo, a un motor. En otras
palabras, se trata de un circuito que utilizaremos para hacer que un
motor gire en ambos sentidos.
Existen dos posibilidades para contar con un puente H, podriamos
construirlo utilizando algunos pocos componentes individuales
o también conseguir un circuito integrado. Para comenzar, es
recomendable esta segunda opcion.
Para entender el funcionamiento de este componente, debemos
tener en cuenta que un motor de corriente continua determina la
direccién de giro dependiendo de la tensién que apliquemos en sus
terminales. Es decir, si conectamos el terminal 1 del motor al positivo,
y el terminal 2 al negativo de la pila, como resultado obtendremos un
[Link]Bes ARDUINO
sentido de giro especifico; pero, si realizamos la conexi6n del po
y el negativo en forma opuesta, tendremos como resultado un giro en
sentido contrario. Como no es eficiente estar cambiando la conexién
de los terminales cada vez que deseamos invertir el giro del motor,
podemos utilizar un puente H.
El puente H no es mas que una disposicin especifica de
componentes, como transistores y diodos, que nos permiten controlar
la polaridad de los terminales de salida, teniendo en cuenta algunas
funciones 16;
Como mencionamos antes, un puente H se puede fabricar en forma
manual, utilizando transistores y otros componentes, pero también
podemos usar circuitos integrados, tales como el L293B y L293D. De
ellos, el L293D, que presentamos en la imagen adjunta, posee diodos
de proteccién y dos puentes H, y proporciona 600 mA al motor;
ademis, soporta voltajes de entrada que van desde 4,5V y 36V.
vo
as.
HI EIL293DNE es un
puente H que nos servird
para impulsar cargas
inductivas, por ejemplo,
relés, solenoides,
motores paso a paso DC
y, también, bipolares.
Primer LED
El primer LED fue desarrollado por Oleg Vladimirovich Losev en el ario 1927,
aunque llegé a la industria en la década del 60. Actualmente se utiizan en muchas
aplicaciones, por ejemplo, en indicadores de estado (encendido/apagado) de
diversos componentes electrénicos, en dispositivos de sefalizacién, en paneles
informativos, 0 para alumbrar pantallas de cristal liquido, como las de las
calculadoras, las agendas electronicas y los teléfonos méuiles.
[Link] 93. QUE SE NECESITA?
+ Esquema de un circuito integrado con dos puentes H
Ae d
Teen ere
BW Gracias a los pines 2 y 7, podemos controlar el sentido de giro del motor M1, mientras que
los pines 10 y 15 controlaran el sentido de giro del motor M2. Los pines 1 y 9 se encargan de
activar 0 desactivar cada puente H en forma independiente.
Broche de presion de pila
Aunque se trata de un componente muy sencillo, lo necesitamos
para conectar una pila de 9V a clavijas de corriente, que a su vez
conectaremos al protoboard 0 a la placa Arduino.
También podemos encontrarlo con el nombre de conector de
bateria 9V. Se presenta como una estructura que posee dos broches
adecuados para las baterias de 9V, unidas a dos filamentos que seran
los que debemos conectar al protoboard 0 a la placa.
En este punto debemos tener en cuenta que, para realizar la
alimentacién eléctrica de Arduino, podemos proceder de varias formas:
80 [Link] comARDUINO
MEDIANTE EL PUERTO USB
Se trata de la forma mas habitual; conservamos el cable USB conectado a la placa
y ala computadora, de esta forma la mantendremos con corriente. Lo malo es que
necesitamos tener una computadora cerca en todo momento.
UTILIZAR UNA BATERIA 9V Y EL CONECTOR DE CORRIENTE
En este caso, hacemos uso de una bateria 9V; para ello necesitaremos un broche
de presion de pila que, en uno de sus extremos, presente el conector adecuado
para la entrada de corriente de la Arduino UNO.
UTILIZAR UNA BATERIA 9V Y LOS PINES DE ARDUINO
Mediante esta alternativa, también utilizaremos una bateria 9V y un broche de
presién de pila, pero, en lugar de un conector para la entrada de corriente, solo
tendremos los filamentos positivo y negativo. Para realizar la conexién, usaremos
los pines Vin y GND de la placa.
Esta tercera opcion es bastante util, por ejemplo, cuando necesitamos
la misma tensi6n de 9V para algtin componente del circuito; en este caso
es posible hacer la conexion a través de la protoboard. Para conectar de
esta manera procederemos como se indica a continuacion.
Paso a paso: Alimentar Arduino mediante
el protoboard
En primer lugar, conecte
01 1 la bateria 9V al broche
de presion de pila. Debe
efectuar la conexién a la
| pila hasta escuchar el clic
que indica una postura
correcta.
[Link] 813. QUE SE NECESITA? eS
0 Tome os filamentos rojo y negro que corresponden al positivo y al negativo del broche
de presién y conéctelos en los lugares adecuados del protoboard,
03 Para continuar, utilice dos cables de puente para conectar el protoboard con la placa
Arduino. Conecte el polo positivo a Vin y el polo negativo a GND.
82 [Link]ARDUINO
0 Si la conexién se realiz6 en forma correcta, la placa Arduino UNO estard energizada,
puede verificarlo mediante una inspeccién del LED de corriente.
nan
ROO] NOT
Prien
Potencioémetro
Es una resistencia variable que posee tres terminales 0 conectores. Dos de
ellos se conectan a una resistencia fija, mientras que el tercero se puede
mover consiguiendo valores diferentes. Lo importante del potenciémetro
es que podemos elegir el valor por tomar; de esta forma, controlaremos
la intensidad de corriente que fluye por el circuito o la diferencia de
potencial, segtin esté conectado en paralelo o en serie, respectivamente. La
variacion de la resistencia va desde un valor minimo, que generalmente es
de 0 ohmios, hasta un valor maximo Rmax (5k, 10k 0 20k ohmios).
Considerando su forma, encontramos dos tipos de potenciémetros:
LINEALES
Este tipo de potencidmetro tiene forma rectangular, con un control deslizante que
debemos mover para establecer la posicion adecuada.
ROTATIVOS
Son los mas comunes, y son los potenciémetros que utilizaremos para nuestros
proyectos con Arduino. Visualmente se presentan como un dispositivo con un mando
giratorio (perilla) que nos permitiré seleccionar el valor por utilizar.
[Link] 833. QUE SE NECESITA?
=
Si pensamos en la relacin existente en
la posicion y la resistencia, encontraremos
potenciémetros lineales, parab«
exponenciales.
cos 0
1 El potenciémetro rotativo es el mas
comin en proyectos de Arduino. Se trata
de un elemento pasivo que, técnicamente,
funciona como un interruptor.
Conectar un potenciémetro a una placa Arduino UNO requiere el uso
del pin analégico 0, ademas de los pines SV y GND. Podemos proceder
tal como se indica en la siguiente imagen.
+ Conectar Arduino a un potenciometro
I Eneste esquema vemos la forma en que podemos conectar Arduino a un potenciometro.
84
[Link]ARDUINO
Luego necesitaremos un sencillo cédigo que sera el encargado de
leer e interpretar el valor de tension
const int analogPin = AO;
int value;
int position;
void setup() {
)
void 1oop() {
value = analogRead(analogPin) ;
Position = map(value, 0, 1023, 0, 100);
// cédigo para trabajar con el valor medido
delay (1000) ;
Como vemos, es una pequefia porcién de codigo que utilizaremos
para trabajar con el potenciémetro. Aprenderemos en detalle la forma
de trabajar con programacion en el capitulo 5 de esta obra, por ahora
solo la consideraremos un sencillo ejemplo.
Pantalla de cristal liquido
Aunque existen pantallas de cristal liquido en “Las pantallas
variados tamafos, nos bastard con una que .
disponga de dos filas y 32 caracteres en total. de cristal
Estas pantallas se encuentran unidas a a
una pequefia placa de circuito con pines para liquido son
entrada/salida de datos y estan disefiadas capaces de
para que podamos mostrar informacion de
manera grafica. Lo importante es que, mediante representar
Arduino, podremos desplegar informacion .
utilizando estas pantallas. cualquier
Para enviar datos a la pantalla LCD, cardcter
utilizaremos la libreria LiquidCrystal que
encontramos en el IDE. Esto es a través de los alfanumérico.”
pines de entrada/salida de datos que poseen las
placas que vienen unidas a la pantalla de LCD.
[Link] 853. QUE SE NECESITA? cea
Por ejemplo, en una pantalla de dos filas y 16 caracteres en cada una,
hallaremos un listado de pines, como el siguiente (de izquierda a derecha):
Pin 1: VSS 0 GND
Pin 2: VDD o alimentacion +5V.
Pin 3: voltaje de contraste, se debe conectar a un potenciémetro,
Pin 4: se trata de la seleccin de registro, para elegir el dispositivo para
su uso.
Pin 5: pin de lectura/escritura, podemos establecer el estado para escribir
o leer datos (HIGH 0 LOW).
> Pin 6: mediante este pin, podemos habilitar o deshabilitar el LCD.
> Pin 7 hasta el 14: se trata de los pines de datos, mediante ellos se envia o
recibe la informacién.
> Pin 15: es el anodo del LED de iluminacién para la luz de fondo (+5V).
> Pin 16: es el catodo del LED de iluminacién para la luz de fondo (GND).
vvvy
v
I Aqui vemos una pantalla de cristal liquido de 16 caracteres por 2 filas. Este modelo utiliza
caracteres blancos acompafiados por una luz azul de fondo.
Una configuracién basica para utilizar la pantalla de cristal liquido
con una placa Arduino requiere el uso de un potenciémetro de 10 k. El
conector de la derecha se conecta a SV en la placa Arduino, el conector
de la izquierda se conecta en GND de Arduino, mientras que el conector
central se conecta al tercer pin en el LCD, que corresponde al voltaje de
contraste. Luego seguimos las siguientes instrucciones:
86 [Link]cea ARDUINO
El pin 1 del LCD se conecta al GND de Arduino.
El pin 2 del LCD se conecta a 5V en Arduino.
El pin 4 se conecta al pin 12 de Arduino.
El pin 5 se conecta a GND.
El pin 6 del LCD se conecta al pin 11 en Arduino.
Los pines 7, 8, 9 y 10 del LCD se dejan sin conectar.
Los pines 11, 12, 13 y 14 del LCD deben ser conectados en orden a los
pines 5, 4, 3 y 2 de Arduino.
Para terminat, conectamos el pin 15 del LCD a 5V y el pin 16 a GND.
vvVVVVY
v
Una vez realizadas las conexiones, cargamos un codigo de ejemplo
para ver la pantalla en funcionamiento. En el capitulo 5, analizaremos
en detalle la forma en que podemos cargar programas de ejemplo en el
IDE de Arduino.
Motor de corriente continua
Es un dispositivo que puede convertir la energia eléctrica en mecanica,
esto sucede cuando aplicamos electricidad en sus terminales.
La verdad es que estamos rodeados de motores eléctricos, de todos
los tipos y tamafios, por ejemplo, el motor que mueve el automovil,
o los que hacen girar el plato del microondas o proporcionan el
movimiento para reproducir un disco compacto.
En nuestros proyectos con Arduino, generalmente trabajaremos con
pequefios motores de corriente continua (motor de corriente directa o
motor DC -direct current-)por lo que es necesario conocerlos.
En primer lugar debemos recordar que los imanes poseen un polo
positivo y uno negativo, y, mientras los polos opuestos se atraen, los
iguales se repelen. Esto es importante pues se relaciona estrechamente
con la corriente eléctrica ya que, cuando hacemos circular una
corriente eléctrica a través de un conductor que se encuentra en un
campo magnético, este se vera sometido a la fuerza electromotriz
(fuerza mecanica), que resulta ser la base para el funcionamiento de un
motor eléctrico.
En otras palabras, si una corriente circula por un conductor que esta
entre los polos de un iman, se presentara una fuerza mecanica opuesta
a los cambios de la corriente, que intentara hacer girar el conductor
para compensarlo:
[Link] 873. QUE SE NECESITA? ee
I En esta imagen podemos
apreciar un pequefio motor de
corriente continua de 3V, que
presenta 100 RPM.
Algunas de las partes principales que encontramos en un motor de
corriente continua son:
ESTATOR
Es la parte inmévil que, por lo general, incluye imanes potentes fijos, 0 genera un
campo variable mediante corriente alterna.
ROTOR
Aqui se encuentran espiras 0 arrollamientos de hilos de cobre alrededor de un
nicleo, de esta forma la fuerza que se ejerce sobre el rotor se multiplica en forma
proporcional.
Pulsador
Se trata de un elemento sencillo que es capaz de cerrar un circuito cuando
lo presionamos, podemos utilizarlo para abrir o cerrar el paso a una sefal.
El pulsador es, en realidad, un interruptor que mantendra una
posicion de cerrado mientras lo mantengamos pulsado. Por el contrario,
cuando dejemos de pulsarlo, conservara la posicion de abierto.
A simple vista nos encontramos con un pequefio elemento cuadrado
que posee un botén en su parte superior, esto parece evidente en un
pulsador, pero, al examinarlo con mas detalle, veremos que en su parte
inferior se presentan cuatro patillas de conexién, esto es asi porque
ambos pares estan internamente conectados por lo que, en realidad,
funcionan como dos patillas de conexién.
88 [Link]reas ARDUINO
Como sabemos, la funcién de un pulsador consiste en abrir o cerrar
un circuito, por lo tanto, es posible imaginar muchos usos para este
elemento, por ejemplo, controlar un LED, un motor 0 un zumbador,
permitiendo que estos trabajen o dejen de hacerlo.
Sin embargo, debemos considerar que el pulsador presenta un
funcionamiento comparable con el de un timbre, es decir, que cerrara el
circuito y permitira el funcionamiento de otro elemento solo mientras lo
mantengamos pulsado, por esta raz6n no seria practico utilizarlo para
hacer funcionar un motor, pues tendriamos que mantenerlo pulsado en
todo momento.
. | Aunque puede parecer
\ que el pulsador posee
q 4 terminales, la verdad es
que internamente ambos
pares se encuentran unidos,
y se comportan como dos
». terminals.
En este sentido, un uso mas practico seria utilizarlo para indicar,
por ejemplo, que se encienda o apague un LED 0 un motor, con una
sola pulsacién, dependiendo del estado original del componente.
Para esto, necesitamos que la placa detecte que el pulsador fue
presionado y actite en consecuencia, encendiendo o apagando, segiin
si el componente por controlar se encuentra apagado 0 encendido,
respectivamente. Para lograrlo, podemos acompafiar el pulsador y su
correcto conexionado con un programa que le permita decidir la accion
por ejecutar en cada caso. En el siguiente Paso a paso, utilizaremos un
pulsador para controlar el encendido de un LED, conectaremos la placa
Arduino UNO a la computadora mediante USB; por ahora solo usaremos
esta conexi6n para obtener la energia que necesitamos.
[Link] 893. ZQUE SE NECESITA? we
Paso
0
02
a paso: Control sencillo de un LED
Conecte la placa Arduino UNO al protoboard. Para lograr el comportamiento de un
circuito eléctrico de corriente, use un cable que se comporte como anodo, y otro, como
catodo, utilizando los pines GND y 5V. De esta forma energizara el protoboard.
En primer lugar, prepare las conexiones para que se encienda un LED sin necesidad
de utilizar un pulsador. Coloque las conexiones de puente tal como indica la imagen.
[Link]ARDUINO
03 Para continuar, conecte el LED que utilizaremos, en este caso se trata de
un LED verde, y también una resistencia,
4 Al terminar de montar este circuito, conéctelo a la PC mediante USB, vera que el
LED se enciende de forma continua. Las salidas 5V y GND permiten hacer un circuito
igual que como fo haria si utilizara los cables conectados a una pila.
[Link] 23. QUE SE NECESITA? oe
05
06
Ahora, sustituya uno de los puentes por un pulsador, tal como se ve en la imagen.
Con esta configuracién, el pulsador solo se encarga de cerrar el circuito, por lo que
‘no es operativo.
Tees sauce
sey
Por el contrario, si modifica el circuito para unir la esquina inferior izquierda con la
superior derecha, el pulsador sera operativo y tendra que presionarlo para encender
el LED. Esto se logra moviendo el cable de puente que ubicé en la parte superior det
protoboard.
[Link]oes ARDUINO
Como vimos en el apartado 4, es posible controlar un LED sin
necesidad de agregar cédigo, aunque se trata de un ejemplo muy
sencillo es adecuado para entender el funcionamiento de un pulsador.
Optoacoplador
El optoacoplador u optoaislador es un dispositivo que se encarga de
aislar circuitos, es decir, puede separar circuitos dentro de un proyecto
para evitar que algunas de sus partes se vean afectadas por voltajes 0
corrientes excesivos, que podrian causar daiios a algunos componentes.
Pero un optoacoplador no solo puede ser utilizado para aislar
circuitos, ya que también se aplica cuando es necesario realizar el
control de potencia, cuando necesitamos hacer uso de un relé, cuando
precisamos interfaces en circuitos légicos o entre sefiales de corriente
alterna y circuitos légicos, entre otras tareas.
Un optoacoplador es un
componente disefiado para aislar
ciertas partes de un circuito. De
esta forma, se evitan dafios por la
presencia de voltajes 0 corrientes
excesivas.
En su construccién, se trata de un circuito integrado sencillo,
generalmente compuesto por un LED y un fototransistor. Cuando
hacemos circular una sefial eléctrica a través del LED, se encendera;
la luz emitida es detectada por el fototransistor que trabajara en
modo saturacién. De esta forma puede actuar como interfaz entre dos
circuitos, que estarn unidos 6pticamente y asi se protegeran contra
los picos de tension.
[Link] 33. QUE SE NECESITA? oes
Resistencias
Una resistencia es un componente capaz de oponerse al paso de
la corriente, por lo tanto, entrega un cambio en la tensién y en la
corriente. Existen diferentes tipos de resistencias; si tenemos en cuenta
su funcionamiento, podemos agruparlas en tres categorias:
> RESISTENCIAS FIJAS: presentan un valor que no es posible modificar.
> RESISTENCIAS VARIABLES: poseen un valor que nosotros podemos
variar modificando la posicién de un contacto deslizante; se las conoce
como potenciémetros.
> RESISTENCIAS ESPECIALES: varian su valor en funcién de la
estimulacién que reciben de un elemento externo, por ejemplo, luz 0
temperatura.
\. \ <
HW Por lo general, las
resistencias 0 resistores
poseen bandas de color que
Nos indican su valor.
Optoacoplador 4N35
E! 4N35 es uno de los optoacopladores mas utilizados, por lo que seguro nos
toparemos con él en muchos proyectos. Las principales caracteristicas de su
LED son las siguientes: una caida de voltaje tipica de 1.15V para una corriente de
10 mA, la corriente maxima que soporta es de 60 mA y la disipacién de potencia
maxima es de 120 mW. Por otra parte, las caracteristicas de su fototransistor son:
caida de voltaje de colector a emisor de 45V para una corriente de colector de
1 mA, caida de voltaje del emisor a la base de 7.8V para una corriente de emisor
de 100 y/A, caida de voltaje del colector a la base de 100V para una corriente de
colector de 100 yA, ganancia de corriente (Hfe) para una corriente de colector de
2 mA, y una caida de voltaje de colector a emisor de 5V es de 400.
4 [Link]ees ARDUINO
No todas las resistencias son iguales. El valor que las diferencia
se mide en ohmios y las identificamos por medio de las bandas de
color que poseen. Cada una de estas bandas de colores representa
un numero que podemos utilizar para obtener el valor final de la
resistencia o resistor. Las dos primeras bandas hacen referencia a las
dos primeras cifras del valor; la tercera banda nos indica los ceros
que debemos aumentar al valor anterior para saber el valor final de la
resistencia. La cuarta banda se encarga de representar la tolerancia; si
vemos una quinta banda de color, se refiere a su confiabilidad. En la
iguiente tabla, analizamos esta lista de colores,
3 CODIGOS DE COLOR
COLOR BANDA1 BANDA2 _ BANDA 3 (Multiplicador) % TOLERANCIA
Negro 0 O xl
Café 1 1 x10 1%
Rojo 2 2 x100 2%
Naranja iS 3 x1000
Amarillo 4 4 x10000
Verde 5 5 x100000 0,5%
Azul 6 6 1000000
Violeta 7 a 10000000
Gris 8 8 x100000000
Blanco i) 9 1000000000
Dorado 5%
Plata 10%
1 Codigos de color que nos permiten identificar el valor de una resistencia 0 resistor.
[Link] 53. QUE SE NECESITA? ce
Fotorresistencia
Una fotorresistencia, resistencia dependiente de la luz 0
fotocélula es una resistencia del tipo variable, capaz de cambiar el
valor de su resistencia dependiendo del nivel de luz que toque su
superficie. De esta forma, cuanto mayor sea el nivel de luz que toque
su superficie, menor sera su resistencia, por el contrario, su resistencia
aumentara mientras menos luz toque su superficie.
La construccién de una fotorresistencia requiere el uso de materiales
que sean fotosensibles, por esta razén se utilizan sulfuro de talio,
sulfuro de cadmio. sulfuro de vlomo v seleniuro de cadmio, entre otros.
BW Las fotorresistencias
son utilizadas en proyectos
relacionados con iluminaciér
> apagado y encendido de
alumbrado, alarmas, en
medidores de luz, etcétera.
®
El funcionamiento de una fotorresistencia 0 LDR procede de la
siguiente forma: por una parte, cuando no se expone a radiaciones.
luminosas, sus electrones se encuentran unidos firmemente en
los atomos que la conforman; por otra parte, cuando se expone a
radiaciones luminosas, la energia libera los electrones haciendo que el
material sea mas conductor y, por lo tanto, disminuye su resistencia.
Es necesario considerar que las LDR reducen su resistencia cuando son
expuestas a una radiacion luminosa que se encuentra en una determinada
banda de longitudes de onda. Por ejemplo, las fotorresistencias
construidas con sulfuro de cadmio son sensibles a todas las radiaciones
luminosas visibles, pero las fotorresistencias que han utilizan sulfuro de
plomo son sensibles solo a las radiaciones infrarrojas.
% [Link]ARDUINO
Transistor
Es un elemento semiconductor capaz de trabajar como un interruptor
electrénico. Posee tres terminales y puede regular el flujo de corriente
o de tension, por esta razon se utiliza como interruptor o amplificador
en las sefiales electronicas.
Posee tres partes esenciales: el emisor (emite electrones), el
colector (recibe o recolecta electrones) y la base (modula el paso de los
electrones). Si aplicamos una pequeifia sefial eléctrica entre la base y el
emisor, se modulara la corriente que circula entre el emisor y el receptor.
Las funciones de un transistor son, basicamente, dos:
> INTERRUPTOR: permite que pasen o se corten las sefiales eléctricas,
dependiendo de una sefial de mando. Se abre o se cierra, para dejar pasar
‘o cortar la corriente en el circuito.
> AMPLIFICADOR: es capaz de recibir una pequefia sefial y aumentarla.
I Existen diferentes tipos y formas de
transistores. En la imagen, apreciamos
un transistor de unin bipolar, mas
conocido como BUT.
[Link] 73. QUE SE NECESITA?
8
Un transistor puede presentar tres estados posibles:
> ACTIVO: puede dejar pasar mas 0 menos corriente. Actua como un
amplificador.
> CORTE: impide el paso de Ia corriente. No circula intensidad por la base,
Por ello la intensidad de colector y emisor es nula. El transistor entre
colector y emisor se comporta como si se tratara de un interruptor abierto.
> SATURACION: deja que pase toda la corriente. Cuando por la base
circula una intensidad, se aprecia un incremento de la corriente de
colector bastante considerable. Aqui el transistor entre colector y emisor
se comporta como si fuese un interruptor cerrado.
Zumbador piezoeléctrico
Es un elemento bastante interesante, pues podemos utilizarlo
para producir ruidos o detectar vibraciones. Un buzzer 0
zumbador piezoeléctrico hace uso de una propiedad denominada
piezoelectricidad.
Esta propiedad se relaciona con algunos cristales que, cuando son
sometidos a tensiones mecanicas, adquieren polarizacion eléctrica, por
lo que presentan tensiones eléctricas. También, cuando son sometidos
aun campo eléctrico, se deforman por la accion de fuerzas internas.
Lo importante es que, al someterlos a una tensi6n eléctrica variable,
vibraran. Un ejemplo de su aplicacién lo encontramos en circuitos
electrénicos digitales, pues disponen de un reloj interno que vibra,
basado en cristales de cuarzo piezoeléctrico. El cristal que corresponde
a Arduino (microcontrolador ATmega 328) late a 16 Mhz por segundo.
Un buzzer piezoeléctrico
ofrece una calidad de
sonido que no podemos
clasificar como alta
fidelidad, pero es suficiente
para generar tonos
audibles.
[Link]ARDUINO
Teniendo esto en cuenta, al conectar un piezoeléctrico a una sefial
digital, vibrara a una frecuencia que se corresponde con la variacién
eléctrica a la que se expone. Si la frecuencia es audible, podremos
escuchar el zumbido que produce.
Realizar una conexion basica de un zumbador piezoeléctrico a una
placa Arduino es bastante sencillo, solo necesitamos conectar el negativo
a GND y el positivo al pin 9 de la placa. En este punto debemos ser
cuidadosos, pues los buzzer poseen polaridad, por lo tanto, no sonaran si
los conectamos incorrectamente.
Asimismo, es necesario considerar el uso de un pin PWM (por ejemplo
el pin 9), porque la alternancia entre HIGH y LOW es la que entregara el
efecto piezoeléctrico, y seré mas cémodo usar un pin PWM que programar
ese efecto en un pin normal.
Un c6digo de prueba para hacer funcionar el buzzer es el siguiente, lo
analizaremos y ampliaremos en capitulos posteriores:
Sensor de temperatura
Es un sensor que posee la capacidad de cambiar a tensién de salida
dependiendo de la temperatura que sea detectada por su encapsulado.
Los sensores de temperatura, por ejemplo el LM35, poseen su propio
circuito de control, por lo que pueden entregar una tension proporcional
a la temperatura detectada.
Entre los sensores de temperatura, los LM35 son los mas utilizados
por los aficionados a la electronica, y resultan adecuados para nuestros
primeros proyectos. En ellos la tensién entregada es lineal con la
temperatura, por lo que aumentan el valor de la tensién en unos
10 mV por cada grado centigrado detectado. Poseen un rango de medicion
bastante amplio que va desde los -55 °C hasta los 150 °C; para estos
limites entregaran -550 mV y 1500 mV, respectivamente.
[Link] 93. QUE SE NECESITA? wea
100
LEI sensor LM35 es uno de los
sensores de temperatura mas
utilizados. Sus pines extremos sirven
para alimentacién, mientras que el
Z central entrega la medicién en una
vy referencia de tensién a 10 mV/°C.
Sensor de inclinacién
Otro de los componentes importantes para trabajar en proyectos con
Arduino es el sensor de inclinacion. Se trata de un dispositivo que
funciona como un interruptor, abriéndose o cerrandose, dependiendo
de su orientaci6n.
Los sensores de inclinacion, también conocidos como
inclinémetros, se crearon para convertir una magnitud fisica en una
eléctrica. Para estos sensores la magnitud fisica es la inclinacion, y son
capaces de medir desde unos pocos grados hasta los 360°. La magnitud
de salida puede ser en corriente, tension o una sefial digital.
Estos sensores se presentan como cilindros de pocos milimetros
que, en su interior, contienen una o dos bolas conductoras, capaces de
cerrar el circuito con los pines presentes en la parte inferior del cilindro.
Al hacer contacto, la corriente fluira, pero, a partir de un Angulo de
inclinaci6n, el contacto cesara y también el paso de la corriente.
Servomotor
Se trata de un motor que puede girar 180°. Podemos controlarlo
mediante el uso de sefiales eléctricas en forma de pulsos, que son
enviadas mediante una placa Arduino.
Los servomotores, mas conocidos como servos, son utilizados
en tareas especificas, por ejemplo, relacionadas con la robotica, la
automatizacion, paneles solares, entre otros.
[Link]ARDUINO
En una secci6n anterior de este mismo capitulo, conocimos los
motores DC, los que poseen la caracteristica de que pueden girar sin
detenerse. No podemos utilizarlos para que den determinadas vueltas
© que se detengan en una posicién fija, solo se encargan de girar sin
parar hasta que interrumpimos el suministro de corriente. Por esta
raz6n, generalmente no se utilizan en robotica, pues necesitamos
efectuar movimientos precisos y también mantener posiciones fijas.
Para tareas relacionadas con la robética u otras similares, utilizamos
motores paso a paso y servomotores. Estos iltimos son un tipo
especial de motor que permite el control de posicién, se trata de un
sistema que posee elementos electromecanicos y electréonicos.
Los servomotores son
dispositivos electromecénicos
que contienen un motor eléctrico,
engranes y una tarjeta de control,
en una carcasa de plastico.
Podemos clasificar a los servomotores dependiendo de sus
caracteristicas de rotacion
> GIRO LIMITADO: son los mas comunes. Permiten una rotacién de 180°,
por lo que no pueden realizar una vuelta completa.
> ROTACION CONTINUA: son capaces de girar 360°, es decir, pueden
dar una vuelta completa. Son similares a un motor convencional, pero
poseen las caracteristicas adicionales del servomotor y por eso es posible
controlar su posicién y su velocidad de giro.
[Link] 1013. QUE SE NECESITA? we
FEES
En este capitulo realizamos un repaso de los componentes esenciales
que necesitamos para comenzar a trabajar con Arduino. En primer lugar,
elegimos la placa de desarrollo, para esta obra utilizaremos Arduino UNO.
Describimos detalladamente sus pines y las secciones que podemos
encontrar en su estructura, asi como también llevamos a cabo una prueba
de conexién basica con la PC mediante el cable USB. Mas adelante
analizamos el funcionamiento de Arduino UNO y conocimos sus terminales
digitales y, para completar el analisis de Arduino UNO, la comparamos
con Arduino Leonardo, otra de las placas mas utilizadas. Continuamos
con la descripcién de los elementos adicionales que necesitamos, por
ejemplo, el protoboard, los cables de puente, el condensador, el diodo
y los servomotores, entre otros. Para estos componentes entregamos
descripciones detalladas y ejemplos de uso, asi como también
efectuamos algunas tareas paso a paso para utilizarlos.
102 [Link]Arduino
IDE
Download the Arduino IDE
Cee
Pe een)
ARDUINO 1.8.2 Cn es
seis tones ts c Des eid
software canbe used cin bow Te
eo
Cees
Paeye
corer)
Es hora de conocer la forma en que nos comunicaremos
con nuestra placa de desarrollo: el Arduino IDE. Gracias
a esta interfaz de software, contamos con todo Io necesario
para escribir los codigos y enviarlos a la placa para que sean
ejecutados, y de esta forma dar vida a nuestros primeros
proyectos. En este capitulo aprenderemos a instalar
y a utilizar este Entorno de Desarrollo Integrado.4. ARDUINO IDE
104
CARACTERISTICAS GENERALES
Como sabemos, un IDE (Integrated Development Environment) es
un programa que se compone de una serie de herramientas que nos
ayudan en tareas de programaci6n. Existen IDEs que nos permiten
trabajar con varios lenguajes de programacién y plataformas, asi como
también algunos especificos, como Arduino IDE.
Un IDE se compone de un editor de codigo, un compilador, un
depurador y un constructor de interfaz grafica (GUI); en el caso de
Arduino IDE, también nos ofrece las herramientas necesarias para que
podamos cargar nuestros programas en la memoria flash de la tarjeta
Arduino con la que estemos trabajando.
Entre las caracteristicas mas destacadas de Arduino IDE,
encontramos las siguientes:
> GRATIS Y LIBRE: Arduino IDE se distribuye en forma gratuita, por lo
que solo necesitamos acceder al sitio web oficial de la aplicacién para
descargar una copia instalable. También se trata de un software que
se distribuye con una licencia libre, por lo que es posible acceder al
cédigo fuente del IDE y construir el instalador desde él 0 realizar las
‘modificaciones que consideremos necesarias. Para los usuarios comunes,
bastard con descargar el instalador adecuado para el sistema operativo y
proceder con la instalacion. El cédigo fuente de Arduino IDE se encuentra
disponible en la direccién [Link]
1 En el sitio [Link] pademos descargar el
cédigo fuente del Arduino IDE. Solo debemos hacer clic en Clone download.
[Link]> MULTIPLATAFORMA: una de las ventajas de este IDE es que se trata
de una aplicacién multiplataforma, es decir, que puede ser instalado
y utilizado en diferentes sistemas operativos, por ejemplo, Microsoft
Windows, GNU/Linux 0 Mac OSX, entre otros. Para obtener el instalador
adecuado, debemos visitar el sitio web oficial del IDE y, alli, elegir la
opcién que necesitemos.
> INTERFAZ SENCILLA: a interfaz de usuario de Arduino IDE es muy
sencilla, aunque parezca una debilidad por las reducidas opciones que
vemos al acceder por primera vez, pero, a medida que lo conozcamos
ms a fondo, veremos que nos proporciona todo lo que necesitamos y mas
aiin. La disposicién de las areas de trabajo y los ments de opciones, junto
una consola de errores, se retinen en la pantalla principal del IDE;
en resumen, cada opcién justo donde la necesitamos sin que la ventana
principal ocupe toda la pantalla.
@ sketch_marl9a Arduino 1.6.8 -
Archivo Editar Programa Herramientas Ayuda
sketch_mart9a
1G void setup() {
2 // pat your setup code here, to run once:
oid loop() [f]
// pat your main code here, to run ‘repeatedly:
Hi La interfaz del Arduino IDE es bastante sencilla; como vemos en esta imagen, la
seccién dedicada al cédigo ocupa gran parte de la ventana.
[Link]
ARDUINO
1054. ARDUINO IDE
106
> CARGAR PROGRAMAS EN ARDUINO: gracias a las herramientas
de Arduino IDE, podremos cargar los programas que escribamos
directamente en la memoria flash de Arduino, en unos pocos pasos,
sin necesidad de ejecutar complejos procedimientos. De esta forma,
tendremos nuestra placa ejecutando un programa en un tiempo muy
reducido.
> CONFIGURACION INICIAL: la configuracién inicial de Arduino
IDE se realiza en pocos pasos y nos llevar un tiempo minimo. Asi
tendremos las herramientas de programacién listas para usar sin
complicaciones. Mas adelante, en este mismo capitulo revisaremos en
detalle el proceso de configuracién del IDE.
> NUEVAS OPCIONES: la titima versién de este IDE nos propone
algunas caracteristicas novedosas, por ejemplo, deteccién automatica
de la placa conectada, informacién sobre memoria flash y SRAM
ocupada por un sketch o proyecto, autoguardado al compilar y cargar
un sketch, y carga de sketchs via red para la placa Arduino Yin.
Dos Arduinos
Si profundizamos en los antecedentes historicos de Arduino, veremos
que los cinco miembros fundadores crearon la empresa Arduino LLC,
propietaria de la marca Arduino, que entregé disefios y software para
la comunidad que lo quisiera utilizar. En simultaneo, existia Smart
Projects Srl, empresa encargada de fabricar los productos Arduino. Mas
tarde Smart Projects Srl se renombr6 como Arduino Srl y registré la
marca Arduino en Italia.
Como resultado de esto, existen dos sitios de Arduino: por un lado
[Link] y, por otro, [Link]. La primera direccién
es la que corresponde al sitio creado por los cinco fundadores
inales, en él se venden los productos y se entrega el IDE
descargable, listo para programar para Arduino. La segunda direccion
corresponde a Arduino Srl, y en ella también se ofrecen los productos
Arduino y el IDE adecuado para desarrollar nuestros trabajo en Arduino
con mayor celeridad y profesionalismo.
La importancia de esto radica en que tenemos a nuestra disposicién
dos IDEs que, aunque parecen similares, internamente presentan
algunas diferencias. Para esta obra utilizaremos el IDE que se ofrece en
[Link].
[Link]ea ARDUINO
1O,0}
Perinat)
WHAT IS ARDUINO?
I Busqueda en [Link] el IDE que nos ofrece el sitio.
Una de las consecuencias mas importantes, para los usuarios finales,
de esta division entre [Link] y [Link] es que las placas
[Link] podrian no funcionar con el IDE de [Link], y viceversa;
aunque siempre se pueden realizar ciertas configuraciones para
trabajar con la placa y el IDE que prefiramos.
De cualquier forma, las placas antiguas no
deberian presentar mayores complicaciones,
“Tanto [Link]
aunque es probable que las nuevas placas se como [Link]
vayan alejando de uno u otro IDE, y de esta .
forma cueste mas trabajo desarrollar con un IDE son considerados
que no la soporta completamente.
Cada uno de estos IDEs puede tener versiones
oficiales, por lo
diferentes de las librerias incluidas, y esto tanto existen dos
daria como resultado problemas a la hora de
utilizar un sketch especifico. Por otra parte, IDE que con el
también podriamos encontrarnos con mensajes ti
lempo se van
que advierten sobre el uso de una placa no P
certificada, ya que [Link] y [Link] diferenciando.”
tienen su propio identificador de USB.
[Link] 1074. ARDUINO IDE aS
IDEs alternativos
Ademas de los IDEs oficiales para trabajar con Arduino, existen algunas
alternativas interesantes. Entre ellas, encontramos algunas opciones de
programacién visual que nos permiten trabajar con bloques para armar
el programa sin necesidad de escribir codigo.
Entre las alternativas existentes encontramos Ardublock (htt)
[Link]), sistema de bq ([Link] y
S4
Stino ([Link] se trata de un plugin
para el editor Sublime Text. Nos permite desarrollar para Arduino de
manera facil, ya que ofrece acceso muy rapido a toda la estructura del
proyecto, posee autocompletado y otras caracteristicas importantes.
> Atmel Studio ([Link]/microsite/atmel_studio6): se basa
en Visual Studio, y es adecuado para trabajar con Arduino y con los
distintos microprocesadores compatibles de Atmel. Solo es compatible
con Microsoft Windows
> MariaMole ([Link] se trata de un editor
de Arduino bastante ligero, por lo que puede ser ejecutado en
computadoras con recursos limitados. Permite trabajar con opciones de
ordenacién por proyectos, ofrece variadas mejoras visuales y se ejecuta
en diferentes sistemas operativos.
MariaMole =
I MariaMole es un excelente IDE alternativo para trabajar con Arduino; se destaca por su bajo
consumo de recursos, y también por ofrecer una interfaz sencilla y limpia.
[Link] 1094. ARDUINO IDE ea
INSTALACION DEL IDE
Antes de conocer y trabajar con el Arduino IDE, debemos realizar las
tareas que nos permitiran instalarlo. Como sabemos, se trata de una
herramienta multiplataforma, por lo que podremos trabajar en diversos
sistemas operativos. En primer lugar, revisaremos la forma en que
debemos instalar el IDE en un sistema Windows, a diferencia de ellos,
Arduino IDE no solo es un entorno sencillo y claro para ser utilizado
por principiantes con opciones avanzadas para profesionales, también,
es una opcién multiplataforma que no solo nos permite trabajar en
Windows, sino, que también considera procedimientos para instalar
sobre Mac OSX y GNU/Linux.
Paso a paso: Instalar Arduino IDE en Windows
1 Para comenzar ingrese en la direccién [Link]. Haga clic en el enlace
denominado Software, que se encuentra en la barra superior de opciones. En
la ventana que se presenta, baje hasta la seccién Arduino IDE y haga clic sobre
Windows Installer.
Download the Arduino IDE
ARDUINO 1.8.2
oo) =
vounty curios | ERM reviou’neteases
roe ce pores
10 [Link]ea ARDUINO
0 FP Una vez que la descarga haya finalizado, haga doble clic sobre el archivo adecuado
y espere mientras se inicia el asistente de instalacién. En la primera pantalla sera
necesario aceptar el acuerdo de licencia, para eso presione I Agree.
Please review the Kcense agreement before instaing Arduino. If you
‘acceptall terms of the agreement, cick Agree.
's permitted to copy and dstrbute verbatim copies ofthis Icense
t, but changing itis not alowed,
[This version ofthe GNU Lesser General Pubic License incorporates the terms
condtons of version 3 of the GNU General Public License, supplemented
9y the additonal permissions Isted below. ni
1) D_ Seleccione los componentes que seran instalados; es recomendable marcar, al
menos, las opciones Instal1 Arduino Software, Install USB driver, y
Associate ino files, luego presione el botén Next.
‘Check the components you want to install and uncheck the components
you don't want to install, Cick Next to continue,
‘Space required: 397, 1B
[Link] pth4. ARDUINO IDE ea
0 Es posible que aparezca una ventana que indica que se instalaran algunos drivers,
acepte que se instalen; luego de esto el proceso continuara adelante.
[=] Seguridad de Windows
Desea instalar este software de dispositivo?
Nombre: Arduino USB Driver
sage Editor: Arduino LLC
Sor confi anf sft iio 2,
© (s4te sets instla softer de Controlador de proveedors os que coe,
i ie ita
0 5 El proceso de instalacién solo tardara un momento, podra ver su avance gracias a la
barra de la ventana. Cuando este procedimiento se complete, haga clic sobre el botén
Close.
12 [Link]ARDUINO
0 6 En este momento, el IDE de Arduino ya se encontrar instalado en la computadora.
Es necesario saber que, en las nuevas versiones del IDE de Arduino, no se necesita,
instalar los drivers pues vienen integrados en el IDE. Inicie el software y vera su
pantalla de carga.
Boas
Genuino
ARDUINO |
[Link]
Una vez cargado, la apariencia
del IDE sera similar a la que se
ve en la imagen. Mas adelante,
se explicaran las partes
principales que componen esta
aplicacién y c6mo se deben
utilizar,
1134. ARDUINO IDE cas
Si deseamos utilizar el IDE de Arduino en otro sistema operativo,
debemos acceder a [Link], hacemos clic sobre Software y
elegimos la descarga que deseemos. Por ejemplo, el instalador para
Mac OSX, cuyo peso comprimido es de aproximadamente 158 MB.
Si utilizamos el navegador
web Safari, el archivo
sera automaticamente
descomprimido; como
hacemos con todas las
aplicaciones en Mac OSX es
necesario copiar el programa
en la carpeta de Aplicaciones.
Con el IDE de Arduino
instalado, solo resta iniciarlo.
Una vez que el programa se
cargue, veremos la ventana
principal y podremos
comenzar a trabajar.
La interfaz principal de Arduino
IDE para Mac OSX es similar a la
que encontramos en la version para
sistemas Windows o GNU/Linux.
ENTORNO DE TRABAJO
El entorno de trabajo del IDE de Arduino es visualmente sencillo,
se compone de algunas secciones bien diferenciadas donde
encontraremos las herramientas y las opciones para desarrollar,
un apartado donde escribir el codigo, y también espacios donde se
muestran los mensajes y los errores que se presenten. En la proxima
Guia visual se muestran las principales secciones del IDE de Arduino.
En la parte superior de la interfaz principal del IDE, veremos la barra
de ments, en ella se encuentra el acceso a las herramientas y opciones
que utilizaremos a través de este libro.
14 [Link]ee ARDUINO
ARCHIVO
En este ment se encuentran las opciones relacionadas con la gestién de los archivos,
desde aqui podremos guardar, abrir, acceder a los ejemplos y también a los proyectos
recientes. Otras de las opciones disponibles se relacionan con la impresion y la
configuraci6n de paginas.
EDITAR
En este meni se encuentran opciones relacionadas con la gestién de los cédigos con
los que trabajamos. Es posible deshacer la tltima accién, copiar y pegar una porcién
de cédigo, copiar directamente al foro 0 copiar como HTML, también podemos
realizar busquedas, comentar una porcién del cédigo 0 modificar la sangria.
PROGRAMA
En este meni se retinen las opciones adecuadas para verificar nuestro cédigo, subirlo
ala placa Arduino, exportar binarios compilados, acceder a la carpeta del programa o
incluir las librerias necesarias.
HERRAMIENTAS
Entre las herramientas que
encontramos en este mend, se hallan a
el autoformato 0 el acceso al monitor eet
serie, también podemos seleccionar eed
la placa con la que trabajaremos. eed
Para realizar esta ultima tarea,
disponemos de una extensa serie
de posibilidades, entre las que se
encuentra Arduino UNO, la placa que
usaremos en esta obra.
I Podremos elegir la placa Arduino
con la que trabajaremos en el IDE, en
este caso, se trata de Arduino UNO.
AYUDA
E| mend de ayuda nos entrega consejos y referencias de uso para dar los primeros
pasos en la programacién de Arduino. También posee un acceso a las preguntas
frecuentes sobre el uso del IDE y un enlace directo a [Link].
[Link] 54. ARDUINO IDE ea
Guia visual: Interfaz principal de Arduino IDE
Boton
Nuevo
Botén Abrir
Opciones de
Verificar Botén Salvar Informacién | | pestafias
Fade Arduino 1.8.2
Pestafias
i led = 9; the Pt pin the LED ts attached to
1 brightness = 0; how bright the LED 1s
fadesmount = 53
7 the setup routine runs once when you press reset
setupO {
/ declare pin 9 to be an output
pirtodected
»
the Loop routine runs over and over ogain forever
é 1000 {
set the brightness of pin 9:
analogirieeCled, brightness);
Consola de error
En esta barra veremos el nombre del proyecto en el que estamos trabajando,
Anformacion 2 como también la versiGn del IDE que hemos instalado.
6 [Link]ees ARDUINO
acemos clic en este botén, el IDE verificard el programa o sketch que
Botén Verificar oi Prog 4
hemos escrito; si se encuentran problemas, los veremos en la consola de error,
de lo contrario, la misma consola nos entregara informacién relevante sobre el programa verificado.
Mediante este boton, podemos subir el programa ya verificado a la placa
Botén Subir
Arduino. Si presionamos fo presionamos sin tener la placa Arduino conectada
a la computadora, se presentard un problema.
Este botén creara un nuevo proyecto en forma inmediata, veremos otra
ventana donde tendremos acceso a todas las herramientas y opciones
disponibles para trabajar.
Botén Nuevo
Boton Abrip) 4! hacer clic sobre este bot6n, se desplegard un ment que nos permite abrir
tun proyecto almacenado con anticipacién. También nos presenta una serie de
sketchs de prueba listos para cargar y utilizar.
Boton Salvar Mediante este bot6n, podemos guardar el trabajo que hemos realizado hasta
este momento.
Nos muestra los datos que son enviados por Arduino mediante el
puerto serie; ademas, nos permite enviar a Arduino utilizando el
puerto serie. Debemos tener en cuenta que existen alternativas al monitor serie, en algunas
‘ocasiones puede ser necesario acudir a ellas pues la herramienta incluida en Arduino IDE es
muy sencilla, aunque para usuarios principiantes sera suficiente.
Botén Monitor Serie
En esta seccién se presentan las pestafias abiertas, estas corresponden a los
cédigos en los que estamos trabajando. Para activar una u otra pestafa, es
necesario hacer clic sobre su nombre.
Pestafias
‘Si desplegamos este meni, veremos algunas opciones que nos permiten
realizar tareas sobre las pestafias abiertas. Entre las opciones
disponibles, se encuentran: Nueva pestafa, Renombrar, Pestafla anterior y Pestafia siguiente.
Opciones de pestafias
En este apartado podemos escribir o editar el cédigo que corresponde al programa
que deseamos cargar. Se trata de la seccién principal del IDE, pues la utilizaremos
para escribir las acciones por medio del lenguaje de programacién adecuado. Mas tarde lo
cargaremos en la memoria flash de Arduino.
Editor
En este pequefio apartado se mostraran los posibles errores que puedan
presentarse al verificar nuestro c6digo, debemos poner atencién en esta
seccién pues nos entregara la informacién que necesitamos para corregir los posibles problemas.
Consola de error
[Link] 74. ARDUINO IDE
Configuracién inicial
Con el IDE instalado, lo primero que debemos hacer es configurar el
entorno de trabajo. Aunque no se trata de una tarea imprescindible,
es una buena idea completar los pasos que mencionaremos pues nos
permitiran facilitar la edicion de los programas que desarrollemos, ya
que luego de completar esta configuracion inicial, podremos acceder
a toda la informacion que puede otorgarnos el IDE. Para realizar esta
configuracién, seguiremos los pasos que mencionamos a continuacion.
Paso a paso: Configuracion inicial del IDE
a Como primera instanca,inicie
el IDE de Arduino que instalé
siguiendo las instrucciones
expuestas en una seccién anterior.
Cuando aparezca la interfaz
principal del IDE, estara listo
para comenzar el proceso de
configuraci6n inicial.
Configuracion adicional
‘Aunque la configuracién inicial del IDE que presentamos en el Paso a paso deberia
bastar para cualquier usuario principiante, tengamos en cuenta que existen opciones
de configuracién avanzadas que estan reservadas para usuarios con mayor
experiencia. Para acceder a estas opciones avanzadas, debemos abrir el archivo
[Link], que se ubica en la carpeta AppData/Local/Arduinol5. Hay que tener
mucho cuidado al editar las opciones que estan contenidas en este archivo y, tal
‘como se advierte en el IDE, realizar las modificaciones solo cuando el programa no
se encuentra ejecutado.
8 [Link]Cera
eed
Crd
Ca ed
erty
Card
ened
Crerd
>
Pa
XRH
Ee}
a
pro2a Arduino 1.8.2
eo run repes
[Link]
ARDUINO
Si ha iniciado el IDE en un sistema
Windows, tendra que hacer clic
en el ment Archivo, luego
elegir la opcion Preferencias.
Por otra parte, si se encuentra
en un sistema Mac OSX, tendra
que hacer un clic en el meni
Arduino, y, posteriormente, otro
clic sobre Preferencias.
En este punto, verd la ventana de
referencias del IDE, la cual se
divide en dos pestafias: Ajustes
y Red, Para este proceso de
configuracién, utilizaré algunas
opciones que se encuentran en la
pestafia Ajustes.
Lo primero que hara sera buscar la
casilla que corresponde a la opcion
Mostrar numeros de linea.
Esta opcién le permitird ver los
‘ndimeros que corresponden a cada
linea de los programas que realice.
La importancia de esto radica en
que sera mas sencillo ubicar una
linea especifica, sobre todo cuando
trabaje con cédigos extensos.
ng4. ARDUINO IDE
05
06
120
Para continuar, busque la opcién denominada Mostrar salida detallada
para. Junto a esta opcién se presentan dos alternativas: Compilacién y Subir.
Marque ambas casillas, de esta forma tendra acceso a informacién detallada tanto
cuando realice la compilacién del programa como cuando lo suba a Arduino; esta
salida puede incluir datos importantes para ubicar algin problema o dificultad que
pudiera presentarse en el codigo.
1G Arduino Archivo Edt Programs Heramients Ajuda
ers Claudio /Documens Arno xplore
For di ‘Austen re iil Arvin)
Forde Tamaho de Fuerte
Mostrar sida detaliada mientras: Compicion @B ubir
Advertencias del complador: ——_Ninguno
‘Ahora vaya a la opcién denominada Advertencias del compiTador, despliegue
el ment que se encuentra a su lado y elija la opcién Todos. La opcién predeterminada
es Ninguno, que puede ser iitil cuando tenga experiencia en el manejo del IDE,
pero si recién comienza en la programacién con Arduino, bien vale la pena tener a su
disposicién toda la informacion que pueda ayudarlo.
1G hridino hehe Estar Propane Herramientas Aude
or de Tama de Fuente:
scala tera B Auomitico 2 reauler rc Ardulc)
Advetencis del complador: | Ninguno
PE victns nneresdatowe |
[Link]eee ARDUINO
7 La siguiente opcién que marcara es el plegado de cédigo. Esto le facilitara el trabajo
0 cuando maneje cédigos extensos, pues le permitira agrupar y plegar ciertos segmentos
para tener el programa mas organizado, que sea mas entendible y sin que deba
navegar por mucho tiempo para llegar a la linea de c6digo que necesita.
CET eo ee eed
sketch apr02a Arduino 1.8.2
sketch_apr02a
poid setup) {
avoid Loopc) {
8 Para finalizar la configuracién inicial del IDE, elija la ruta que utilizara para
0 almacenar sus proyectos. En forma predeterminada se encontrara con una ubicacion
como la siguiente: Users/Claudio/Documents/Ardui no, pero puede elegir la
ruta que mas le guste, por ejemplo, Escritorio/Proyectos Arduino.
1@_Arduno prone Estar Programa _Herramiectas Ava
uti Documents Arno ee
Mostrar sai etd
2 Mostar nad
4 Nabiac eg
7 Vesta coi
2 paoresivevg 7 }
a |
sers/Claudo/tih
[Link] 2.4. ARDUINO IDE
Una vez que hayamos aplicado todas las opciones que mencionamos
en el Paso a paso anterior, sera necesario hacer clic sobre el archivo
Aceptar, de esta forma las opciones de configuracion que marcamos
se almacenaran y estaran disponibles para todos los proyectos que
iniciemos de aqui en adelante.
Siempre podemos volver a la seccién de preferencias y desactivar
aquellas opciones que nos complican la tarea de escribir cédigo 0 que
no nos convencen del todo.
Librerias
Una libreria es un codigo escrito por terceros que puede ser utilizado
en nuestro programa o sketch. En realidad, se trata de trozos de codigo
que han sido escritos para que sea mas facil realizar la interconexion
de elementos, tales como sensores, pantallas 0 médulos electrénicos.
Por ejemplo, si quisiéramos utilizar un sensor capacitivo touch,
deberiamos escribir un codigo como el siguiente:
trReg |= xBit;
‘+rRegé= ~rBit;
*sout |= sBit;
interrupts ()
while ( !(*rInérBit) && (total CS_Timeout_Millis)
return -2;
noInterrupts () ;
rout |= xBit;
‘trReg |= xBit;
*rRegé= ~rBit;
122 [Link]ea ARDUINO
*route= ~rBit;
*sOuts= ~sBit;
interrupts ();
while ((*rInérBit) 6& (total = CS_Timeout_Millis)
return -2;
else
return
)
Ahora bien, podemos reemplazar esto por un cdigo mas sencillo si
hacemos uso de la libreria denominada CapacitiveSensor, entonces, solo
necesitamos el siguiente codigo:
senseReading = [Link] (30) ;
En este caso, vemos que la orden myCapPad.
capacitiveSensor() realiza el trabajo pues la
variable senseReading contiene el valor que
recibe el sensor capacitivo touch. De esta ‘Las librerias
forma, podemos entender que las librerias g
son conjuntos de
son capaces de convertir tareas complicadas
en accesibles y faciles, asi optimizaremos el funciones que nos
tiempo sin necesidad de programar algo que
esta listo para agregar a nuestros proyectos facilitan la tarea
en forma de libreria.
Lo interesante es que el IDE de Arduino
de programar o
incorpora algunas librerias, gracias a ellas acceder a tareas
es posible mejorar la creacién de los 7 _
programas o sketchs. especificas.
Para simplificar esta idea, mencionaremos
que una libreria no es mas que una coleccién
de funciones que podemos incluir de una
[Link] 1234. ARDUINO IDE
124
forma bastante sencilla y rapida en el sketch, y que es capaz de
proporcionarnos funciones especificas. Por ejemplo, si incluimos la
libreria de cristal liquido, podremos usar facilmente una pantalla LCD.
En Arduino existen tres tipos de librerias: base, estandar y
contribuciones.
Libreria base
La libreria base de Arduino forma parte del IDE, su propésito es
ocultar la complejidad que relaciona el trabajo con el microprocesador,
gracias a esta libreria podemos realizar tareas en forma sencilla sin
necesidad de programar cientos de linea de cédigo.
Esta libreria base es la que diferencia a Arduino si lo comparamos
con el trabajo que debe realizarse para programar microprocesadores
tradicionales. Una de las ventajas de la libreria base o core es que
permite efectuar tareas, como la lectura de datos de una de las
entradas o la escritura de datos en una de las salidas, en forma muy
sencilla y simple de ejecutar.
Un ejemplo claro es la tarea de leer el valor de un pin digital, para
lograrlo solo necesitamos utilizar la funcién digitalRead.
Libreria estandar
Las librerias estandares son aquellas que se incluyen en el IDE de
Arduino, porque los desarrolladores consideraron que se trataba de
funciones necesarias para muchos proyectos, por esta razon se agregan
en forma automatica con la instalacién del IDE, pero no son parte de la
libre!
Estas librerias no seran incluidas en forma automatica en un sketch,
al contrario, tendremos que cargarlas una a una, asi nos aseguramos de
utilizar solo aquellos recursos que se necesiten. Incluir una libreria en
un sketch es una tarea sencilla, solo debemos utilizar la orden #include
seguida del nombre de la libreria, por ejemplo:
ja base o core.
#include
Este c6digo incluira la libreria LiquidCrystal, encargada de
proporcionar las funciones necesarias para trabajar con pantallas LCD.
[Link]Bea ARDUINO
sketch_aprO3a Arduino 1.8.2
sketch_apr03a §
1 #include ), y la linea no terminara con punto y coma (;) como debemos
hacerlo en las demas lineas de cédigo.
Como vemos, las librerias estandares pueden sernos de mucha
utilidad en los proyectos en los que trabajemos, ya que cada una
incorpora una serie de funciones relacionadas con un objetivo
especifico. En la siguiente tabla, analizaremos las diferentes librerias
estandares que se incluyen en Arduino.
Contribuciones
Por ultimo, tenemos las librerias conocidas como contributed, se
trata de librerias creadas por usuarios para resolver problemas 0 ser
utilizadas en situaciones especificas, pero que no son parte de las
librerias estandares que conocimos en la seccién anterior.
Estas librerias pueden ser agregadas a la coleccién de librerias
jas para muchos
estandares si demuestran ser titiles, y son requet
proyectos.
Podemos encontrar estas librerias en diversos sitios de internet,
aunque también existen algunas disponibles en el sitio web de Arduino.
Generalmente las librerias se componen de los siguientes elementos,
comprimidos en un archivo .ZIP: un archivo .cpp (cédigo de C++),
un archivo -h 0 encabezado de C, un archivo [Link], un
archivo readme con informacién adicional sobre la libreria para el
desarrollador y un directorio con un sketch de ejemplo.
En el proximo Paso a paso analizaremos en detalle el proceso de
instalacion de una nueva libreria en Arduino.
‘[Link] 1254. ARDUINO IDE
PP a Sar WD) U2)
WT Tay
ArduinoTestSuite
EEPROM
sD
Ethernet
Firmata
LiquidCrystal
Servo
Stepper
Wire
SoftwareSerial
126
Deitel)
Nos entrega los métodos estandares las funciones que se pueden
utilizar para probar los sketchs antes de cargarlos en la placa
Arduino. Esto es importante pues nos permite asegurarnos de que el
sketch funcione segin lo que hemos previsto y, de esta forma, nos
ahorraremos problemas al probarlos directamente en la placa.
Esta libreria nos permite acceder a la EEPROM de Arduino mediante
las funciones read y write.
Esta libreria entrega funciones basicas para que la placa Arduino
interaccione con las tarjetas SD. Es necesario utilizarla con
precaucién, pues consume mucha memoria del programa.
La libreria Ethernet permite configurar Arduino como servidor para
recibir conexiones de clientes, o como cliente, para conectarse a
servidores.
Permite utilizar los protocolos de comunicacion serie para relacionar
la PC con Arduino. Por ejemplo, podremos controlar servos, motores
0 pantallas desde una PC a través de Arduino.
Nos permite interactuar con pantallas LCD, por ejemplo, para mostrar
datos del GPS, mensajes de situacién del sistema u otra informacion
Util para el usuario.
Nos permite controlar hasta 12 motores servos con Arduino estandar,
y 48 con Arduino Mega.
Nos permite establecer la velocidad de la rotacion del motor, el
numero de pasos que queremos dar y la direccidn de estos pasos.
Esta interfaz se utiliza para comunicar a baja velocidad con una
amplia gama de dispositivos y componentes, por ejemplo, relojes
de tiempo real. Esta libreria nos permite interactuar como maestro 0
esclavo.
Esta libreria es la solucion cuando necesitamos mas puertas seriales
para nuestros proyectos.
[Link]ee ARDUINO
bao) aU Tolle) Sa ote) tate) yy
ATS_begin (inicia el proceso de test), ATS_end (termina el proceso de test), ATS_Test_
DigitalPin (testea un pin de entrada digital dado), ATS_Test_PWM (testea la salida PWM),
ATS_Test_Analoginput (testea la entrada analogica), ATS_Test_EEPROM (testea la EEPROM).
Read (lee el valor de un byte almacenado en una posicidn de la EEPROM), Write (escribe
un valor en una posicion de la EEPROM).
Begin (inicializa la libreria y la tarjeta SD), exists (verifica la existencia de un fichero 0
directorio en la tarjeta), mkdir (crea un directorio en la tarjeta), rmdir (elimina un directorio
en la tarjeta), remove (elimina un fichero de la tarjeta).
Begin (inicializa la libreria y configura los parametros de red), locallP (devuelve la direccion
IP local), dnsServerlP (devuelve la direccion DNS del servidor), server (crea un servidor),
begin (comienza a escuchar posibles peticiones de conexidn).
Begin (inicializa la libreria Firmata), printVersion (envia version del protocolo a la PC),
setFirmwareVersion (establece la version del firmware).
Begin (establece las dimensiones en filas y columnas de la pantalla LCD), LiquidCrystal
(inicializa la libreria y determina los pines usados para comunicar con la pantalla LCD),
print (visualiza datos en la pantalla LCD).
Attach (asigna el servo a un pin), Attached (verifica que el servo esta conectado al pin),
Detach (desconecta el servo del pin), Read (lee el angulo del servo).
Stepper (inicializa la lbrer'a Stepper y establece el numero de pasos por revolucién),
setSpeed (establece la velocidad de rotacién del motor en revoluciones por minuto), step
(gira el motor el nimero de pasos indicado).
Begin (inicializa la libreria Wire y conecta el Arduino al bus I2C como maestro o esclavo),
requestFrom (pide datos del esclavo al maestro), beginTransmission (prepara la
transmision de datos), Send (envia datos del esclavo al maestro o pone en cola bytes para
la transmision de maestro a esclavo).
Begin (activa la puerta y establece la velocidad de transmision en baudios), Available
(comienza a usar la puerta), sListening (devuelve la puerta active en este momento), listen
(escucha a esa puerta y la activa).
[Link] 1274. ARDUI
INO IDE
Paso a paso: Instalar y utilizar una libreria
01
02
128
En primer lugar, ubique en internet la libreria que necesita, para este ejemplo utilizara
la libreria NewPing, que lo ayudara en el manejo de varios sensores ultrasonicos.
Esta libreria en particular se encuentra en la direccién [Link]
cc/Code/NewPing. Haga clic sobre Down oad, luego presione sobre el enlace
DownloadNewPinglibrary y descargue la libreria a fa computadora.
“ Navigation
seleccione la version mas actualizada.
Para algunas librerias, encontrara diferentes opciones de descarga, en este ejemplo
se ve que se encuentran disponibles las versiones 1.7 y 1.8 de NewPing Library,
Downloads
Dowioass Tagh Sanches
Uplosded by Downionda Ota
[Link]ees ARDUINO
03 Una vez que la descarga de la libreria se haya completado, verifique el contenido de la
carpeta. En este caso, se ven todos los archivos que componen la libreria NewPing.
G Todos mis archivos pp, h
Cd Orie emoras Nene cre Newieg
Aalescones
> Exentorio
1) Documentos
© descargas
4 Inicie el IDE de Arduino y despliegue las opciones que se encuentran en el ment
0 Programa, seleccione Incluir Tibreria y luego pulse clic sobre Afiadi r
libreria .ZIP. Antes de realizar este paso, tenga en cuenta el lugar donde
descargé la libreria,
meme eT
ore se a hae da pf een
ee —
cd
Coon
ed
Ethernet
0
Gestor de librerias
Las Ultimas versiones del IDE de Arduino incorporan un practico gestor de librerias,
accesible desde el ment Programa/Incluir librerias/Gestionar librerias. Gracias a esta
utilidad, es posible ver las librerias que se encuentran instaladas, buscar entre un
listado de librerias disponibles, y también instalarlas y actualizarlas mediante unos
pocos clics del mouse.
[Link] 1294. ARDUINO IDE eS
05
06
130
'€ Arduino Archivo Editar Programa _ Hecramient
Utilice fa ventana que se presenta
para navegar hasta la ubicacién
de la libreria comprimida, luego
acepte. El proceso solo tardara
algunos segundos; cuando se
complete, vera un mensaje que
indica que la libreria fue aftadida
sin problemas.
setup
#10000
Para incluir la libreria que se afiadié recién, es necesario utilizar el cédigo
#include, seguido del nombre de la libreria, por ejemplo, #include. También puede agregar esta linea de cédigo en forma automatica si despliega el
meni Programa, haga clic en Incluir libreria y, posteriormente, seleccione la
libreria deseada.
CW ee ee eed
sketch_apr0Sa Arduino 1.8.2
sketch_apr0Sa §
include
3eqvoid setup) {
// put your setup code here, to run once
6}
8E\void Loopt) {
9 // put your main code here, to run repeatedly
ni}
[Link]ees ARDUINO
Si el método anterior no funciona,
intentaremos agregar la libreria en forma “Para instalar
manual, para ello es necesario descargarla
y luego descomprimir. Si estamos en un. una libreria en
sistema Windows, copiamos los elementos
descomprimidos en una carpeta que corresponda
forma manual la
a la libreria, la ruta sera similar a la siguiente: descomprimimos
Mis Documentos\Arduino\libraries. ‘
En cambio, si nos encontramos en un sistema y copiamos
Mac OSX, tendremos que copiar la carpeta que
contiene los elementos descomprimidos en a la carpeta
la ruta Documents/Arduino/libraries. La ruta final libraries”
deberia quedar de la siguiente forma y con los
siguientes archivos:
Mis Documentos\Arduino\libraries\NewPing\[Link]
‘Mis Documentos\Arduino\libraries\NewPing\NewPing.h
Mis Documentos\Arduino\libraries\NewPing\examples,
oe Coster de Uberias
Tipo Todos By Tema _ Todos B
200 boned and ATABGS20E Sigfox module Tis ary slows some Nh level oprins co Sox mee, to
tae uengaton tn eng pce
terete
Cerrar
HE! Gestor de librerias es otra forma de instalar librerias en Arduino; se encuentra disponible en el
menii Programa/Incluir libreria/Gestionar librerias.
[Link] 3314. ARDUINO IDE
132
EJEMPLOS DE CODIGO
Uno de los puntos fuertes del IDE de Arduino es la incorporacion de
una gran cantidad de codigos o sketchs listos para utilizar. Una vez
que iniciamos el IDE, podemos cargar cualquiera de estos programas en
forma directa y probar su funcionamiento en la placa Arduino, luego es
posible realizar algunas modificaciones para obtener variantes en las
acciones que el programa realiza.
Con el IDE ejecutado haremos cli
submenti Ejemplos; de inmediato, veremos que se muestra una gran
cantidad de ejemplos de cédigo, para acceder a cada uno de ellos los
seleccionamos y se presentaran en una nueva ventana del proyecto.
Los ejemplos se encuentran organizados en las siguientes
categorias:
n Archivo y desplegaremos el
> EJEMPLOS CONSTRUIDOS: en este apartado encontraremos
listados de ejemplos catalogados segiin su uso, por ejemplo, basicos,
USB, comunicacién, control, display, entre otros. En cada categoria
se incluyen variados ejemplos de cédigo.
> EJEMPLOS PARA CUALQUIER TARJETA: en esta categoria se
retine una serie de ejemplos que son validos para cualquier tarjeta.
> EJEMPLOS PARA ARDUINO/GENUINO UNO: en esta seccién
se retinen aquellos ejemplos adecuados para la tarjeta que hemos
elegido para trabajar en el IDE. Podemos cambiar esta eleccion
desplegando e! meni Herramientas/Placa.
> EJEMPLOS DE LIBRERIAS PERSONALIZADAS: finalmente,
en este apartado encontramos los ejemplos que se incluyen en las
librerias que hemos instalado utilizando los procedimientos que
describimos en una seccién anterior. En este caso deberiamos ver
los ejemplos que incluye la libreria NewPing.
Cargar un programa o sketch
La carga de un programa en la tarjeta Arduino es un proceso sencillo
al que nos enfrentaremos con frecuencia, pues cada vez que deseamos
probar alguna modificacién en el codigo que escribamos sera necesario
cargarlo a la placa. Esta carga se puede realizar a través del mismo
Arduino sin tener necesidad de utilizar otro tipo de elemento externo.
www .[Link]ea ARDUINO
Para aprender a realizar esta tarea y también verificar la forma de
uso de los ejemplos que incorpora el IDE de Arduino, cargaremos un
ejemplo basico y lo ejecutaremos en la placa.
Como sabemos, al aprender un nuevo lenguaje de programacion es
tipico encontrarnos con el clasico “Hola mundo”, cuando se trata de la
programacién para Arduino también existe un programa basico, pero se
denomina Blink.
Para realizar esta actividad, necesitamos contar con la placa
Arduino, en este caso utilizaremos Arduino UNO, el protoboard, un led,
una resistencia adecuada, algunos cables de puente y también el cable
USB para conectar la placa a la PC donde tengamos instalado el IDE.
Lo primero que debemos hacer es conectar Arduino UNO a la PC
mediante el cable USB, verificaremos que la luz de ON nos indique que
la conexién es correcta.
Luego uti
Herramientas, para seleccionar la placa y el puerto adecuado (la
seleccion del puerto debe realizarse con la placa conectada a la PC).
amos las opciones que se encuentran en el menti
Coie
Ce rd Eee
Es necesario seleccionar el puerto USB para que la comunicacién con la placa Arduino sea
exitosa. Esto debe hacerse luego de conectar la placa a la computadora.
Con la placa y el puerto debidamente seleccionados, elegiremos
el codigo de ejemplo para enviar a Arduino UNO. Esto lo realizamos
en el ment Archivo, en el apartado Ejemplos, para este caso se trata
de ejemplo Blink, que se encuentra en la categoria Basics. Una vez
que lo seleccionamos, se abriré una nueva ventana de proyecto que
contiene el cédigo adecuado. Gran parte del cédigo que aparecera en
la ventana corresponde a comentarios de los desarrolladores; para
ver el codigo que sera ejecutado, debemos desplazarnos hacia abajo.
[Link] 1334, ARDUINO IDE oes
A continuacién copiamos el cédigo que corresponde al ejemplo Blink,
sin los comentarios:
voidsetup() {
pinMode(LED_BUILTIN, OUTPUT) ;
y
voidloop() {
digitalwrite(LED BUILTIN, HIGH);
delay (1000) ;
digitalWrite(LED_BUILTIN, LOW);
delay (1000) ;
Blink Arduino 7.8.2
// the setup function runs once when you press reset or power th
a setup) {
initialize digital pin LED_BUILTIN as an output
pinMode(| 5 ail
+
the loop function runs over and over again forever
Loop {
digitalnritec N, HIGH; —// turn the LED on CHIGH is
deLay(1000); / wait for a second
4 digitalwritec N, LOW; // turn the LED off by maki
delay(1000); wait for a second
}
En esta imagen vemos el cédigo de Blink con los comentarios agregados por los,
desarrolladores.
Ba [Link]Bea ARDUINO
Bela Lc Merle ca esl Lg
BH Aqui vemos el esquema de conexién que utlizaremos para cargar el proyecto Biink.
Debemos tener cuidado de conectar cada elemento de la forma que se muestra.
[Link] 1354. ARDUINO IDE
“Para compilar
y ejecutar el
cédigo que hemos
escrito solo es
necesario hacer
En este punto tenemos la placa conectada a la
PC y también el cédigo que deseamos ejecutar,
por lo tanto, debemos enviarlo a Arduino UNO.
Antes de eso, prepararemos las conexiones que
necesitamos en el protoboard, el esquema de
conexién requerido se muestra en el cuadro que
se encuentra en la pagina anterior.
Con las conexiones realizadas, hacemos clic
en Programa/Subir, de inmediato el cédigo
compilado y, si no se encuentra ningin error,
clic en la opcién se grabaré en la placa; en unos segundos sera
ejecutado, y veremos el led parpadeando. Cuando
AH
Subir! el programa haya sido cargado, observaremos
un mensaje que indica que el procedimiento fue
realizado.
Ahora que hemos cargado nuestro primer
programa en Arduino UNO y logramos que se encienda el LED
conectado, realizaremos algunas modificaciones en el cédigo. Por
ejemplo, si deseamos que el led se mantenga mas tiempo encendido
que apagado, cambiaremos los parametros que se encuentran en delay,
de la siguiente forma’
voidsetup() {
pinMode(LED_BUILTIN, OUTPUT) ;
)
voidloop() {
digitalWrite (LED BUILTIN, HIGH) ;
delay (9000) ;
digitalWrite(LED_BUILTIN, LOW);
delay (1000) ;
d
Luego de esto, repetimos el procedimiento para subir el programa
ala placa y esperamos que se ejecute el cédigo. La modificacion que
efectuamos ordenara al led mantenerse encendido por 9 segundos y
apagado por 1 segundo.
[Link]ees ARDUINO
El programa que cargamos en la tarjeta se mantendra almacenado, aunque desconectemos
y volvamos a conectar el cable USB a la PC. Lo podemos eliminar presionando el botdn Reset,
ubicado en la esquina de la placa, o subiendo un nuevo sketch.
[Link] B374. ARDUINO IDE
BME Resumen Capitulo 04
En este capitulo conocimos las caracteristicas del IDE de Arduino,
analizamos su funcionamiento y aprendimos a configurarlo para obtener
la mayor informacién posible mientras trabajamos en la programacién
de nuestros sketchs. Mas adelante revisamos qué son y para qué sirven
las librerias de Arduino, conocimos los tipos de librerias existentes, y
aprendimos a instalar y agregar una nueva libreria a un proyecto. Para
terminar, revisamos los ejemplos de codigo que incluye el IDE de Arduino
y vimos la forma en que podemos grabar un sketch en la placa y, de esa
forma, ejecutarlo.
138 [Link]aga lit ls
Arduino
CM cio MC
/ the setup function runs once when you press reset or power the board
void setupQ) {
// initialize digital pin LED_BUILTIN as an output
wodeCLEO_BUILTIN, OUTPUT)
p
// the loop function runs over and over again forever
SEivoid loop() {
italWrite(LEO_BUILTIN, HIGH; / turn the LED on (HIGH is the voltage level)
y(1000) ; wait for a second5. PROGRAMAR ARDUINO
ESTRUCTURA BASICA
DE UN SKETCH
Ya sabemos que un programa para Arduino se denomina sketch y
posee la extensién .ino. Un proyecto puede componerse por varios
archivos, pero todos deben estar alojados en la misma carpeta donde
esta el archivo principal.
La estructura basica de un sketch de Arduino es bastante sencilla
y, generalmente, encontraremos dos partes obligatorias, las que se
encargaran de encerrar las declaraciones, estamentos y también
instrucciones: setup() y loop().
1G Instanténes Archivo Edielén Capture
Gigitattritectt
etay(s000);
agitate
deay(3000),
Ejecucién de instrucciones
En esta imagen
se indican las
partes principales
de un sketch de
Arduino, la seccion
setupO y
también la seccion
1o0pO
Debemos tener en cuenta que las instrucciones que escribimos en la seccion
voidsetup() se ejecutaran una vez, cuando se encienda la placa Arduino. Por otra
parte, las instrucciones que escribamos en la secci6n voidloop() se ejecutaran
después de las instrucciones contenidas en voidsetup(), pero lo haran infinitas veces,
hasta que la placa se apague o se resetee.
140
‘[Link]es ARDUINO
Por un lado, en setup() se recoge la configuracién adecuada, por otro lado,
en loop() se encuentran las instrucciones que se ejecutan en forma ciclica.
Ademis de estas dos secciones basicas, podemos encontrar otros
apartados en un sketch
COMENTARIOS
En un sketch podemos encontrar lineas de comentarios, se trata de indicaciones 0
informacion sobre las tareas relacionadas con una linea de cédigo 0 con una parte del
programa. Si se trata de un comentario de varias lineas, debera delimitarse por /* al
comienzo y por */ al final. En cambio, si es un comentario de una sola linea, debemios
comenzarlo con //. Por lo general, encontraremos un segmento de comentarios al
inicio del sketch o también al inicio de cada bloque de cédigo.
VARIABLES
Las variables son adecuadas para guardar informacion, pueden estar referidas a
diferentes ambitos y relacionarse con distintos tipos de datos. Al inicio de un sketch
de Arduino, se declararan las variables globales, las veremos en detalle mas adelante
en este mismo capitulo.
FUNCIONES
Si tenemos bloques de cédigo que utiizaremos a menudo, es posible crear una funcién
para facilitar nuestro trabajo. En este sentido, una funcién es un bloque de cédigo que
encontramos fuera de setup()y loopl), que posee un nombre caracteristico, con uno o
més pardmetros de entrada, y puede devolver o no un valor. Por ejempl
tipo nombreFuncion(parametrol, parametro2, ...)
{
sentencial;
sentencia2;
‘Aunque la funcién no necesite parémetros de entrada, se deben incluir los paréntesis
de apertura y de cierre.
[Link] ua.5. PROGRAMAR ARDUINO oars
Case sensitive
Al programar en Arduino, debemos tener en cuenta que es case:
sensitive, es decir, que es diferente escribir una letra en maytiscula
que en minuscula, por ejemplo arduino y Arduino serian tratados
en forma distinta, o las funciones detalle y DETALLE también son
consideradas diferentes.
No se trata de algo trivial, por ejemplo, si escribimos Serial.
begin(7700); el compilador no nos mostrara errores, pero, si
escribimos [Link](7700); el codigo no se compilara pues detectara
un error en la sintaxis.
Tabulaciones
El uso de tabulaciones no es necesario para que la compilacién del
sketch se realice en forma correcta, aunque se trata de una manera de
escribir cédigo ordenado, claro y comodo tanto para el programador
como para quien debe leer o analizar el codigo en forma posterior.
De esta manera, las tabulaciones nos facilitan la tarea de leer codigo
escrito y nos permite mantener una estructura a la hora de escribirlo.
Teniendo esto en cuenta, el siguiente codigo tabulado:
voidsetup() {
pinMode(LED_BUILTIN, OUTPUT) ;
i:
voidloop() {
digitalWrite(LED_BUILTIN, HIGH) ;
delay (1000) ;
digitalWrite (LED BUILTIN, LOW);
delay (1000) ;
)
tiene el mismo efecto que el siguiente codigo sin tabulaciones
voidsetup() {
pinMode (LED_BUILTIN, OUTPUT) ;
142 [Link]eas ARDUINO
}
voidloop() {
digitalWrite(LED_BUILTIN, HIGH) ;
delay (1000) ;
digitalWrite(LED_BUILTIN, LOW) ;
delay (1000) ;
}
Puntos y comas
En un sketch de Arduino, las instrucciones deben terminar con un
punto y coma, si no agregamos este signo al final de cada linea nos
encontraremos con problemas a la hora de realizar la compilacion. Esto
sucede porque el compilador busca este signo para detectar el final de
cada instruccion.
Asi, la instruccién no presentara problemas:
voidloop() {
digitalWrite(LED_BUILTIN, HIGH) ;
delay (1000) ;
digitalWrite(LED_BUILTIN, LOW) ;
delay (1000) ;
,
Pero, por otra parte, encontraremos errores si
intentamos compilar lo siguiente: “Para marcar
voidloop() { el final de cada
digitalWrite (LED_BUILTIN, HIGH) + ag
delay (1000) instruccion
digitalWrite(LED BUILTIN, LOW) debemos utilizar
delay (1000)
) un punto y
coma (;) ”
[Link] 435. PROGRAMAR ARDUINO oma
AI compilar
este cédigo, nos
encontramos con un
error. Si analizamos
la informacion
presentada, veremos
que el compilador
esperaba un punto y
coma, pero encontré
una llave de cierre.
Copiar mensajes de error
FUNCIONES
Cuando desarrollamos cédigo, una funcién es un bloque de
instrucciones que se encuentran identificadas por un nombre y que
pueden ejecutarse cada vez que lo necesitemos (cuando sea llamada).
Para declarar una funci6n, es necesario saber el tipo de datos
que esta devolvera, por ejemplo un valor entero; luego, debemos
especificar el nombre de la funcién y, posteriormente, las instrucciones
que ejecutara, como en el siguiente cédigo:
Necesidad de las funciones
Si nos apegamos a la estructura de un sketch, podriamos decir que las funciones
no son necesarias pues se trata de un conjunto de cddigo que puede ser insertado
en el lugar del sketch donde haga falta. Pero, entonces, ;cual es la utilidad de las
funciones? En verdad se trata de una forma de generar cddigo limpio y ordenado,
ademas de reutilizar algunos segmentos sin necesidad de reescribirlos todas las
veces que los necesitemos.
144 ‘[Link]ees ARDUINO
intvalor() {
int val;
val = analogRead (pot) ;
val /=
return val;
}
Siguiendo el ejemplo que aprendemos, cada vez que nos
enfrentamos a un nuevo lenguaje de programacién podriamos escribir
una funcién que muestre por el puerto serie Hola Mundo; para ello
escribimos el siguiente codigo:
voidHolaMundo() {
[Link]("Hola Mundo”) ;
En esta funcién encontramos lo siguiente:
> void: la utilizamos cuando la funcién escrita no produce ningtin resultado,
en este caso solo imprime un mensaje.
> HolaMundo: se trata de! nombre de la funcién que estamos escribiendo.
> (): entre los paréntesis ubicamos los pardmetros; para este caso no
existen pardmetros, por esa razén los paréntesis se escriben vacios.
Un programa completo, utilizando la funcién que acabamos de crear,
es el siguiente
voidHolaMundo() {
Serial.print1n(“Hola Mundo”) ;
,
voidsetup ()
{
Serial .begin (9600) ;
}
[Link] M55. PROGRAMAR ARDUINO oma
voidloop()
{
HolaMundo () ;
delay (4000) ;
Parametros
Hasta este momento conocimos qué son y para qué nos sirven las
funciones, pero ejemplificamos su uso escribiendo una funcion
bastante sencilla que no incluye el uso de parametros.
Los parametros pasan informacion a la funcién cuando necesitamos
que esta nos devuelva un resultado. Por ejemplo, imaginemos que
necesitamos una funcién que nos entregue el resultado de una
operacion matematica, como la funcidn no sabe el valor de los
numeros que participaran en la operacién, debemos pasarselos como
parametros. Veamos un ejemplo:
void restar(int c, int d){
int resta = c + d;
Serial.print1n(String(resta) ) ;
En este cédigo vemos los parametros ¢ y d, ambos enteros, que son
pasados entre los paréntesis: (int c, int d), y se encuentran justo después
del nombre de la funcién.
Manipulacion de tiempo
Entre las funciones de manipulacién de tiempo que podemos utilizar en la
programacién de Arduino, tenemos las siguientes: mils funcién(, que se utiliza para
devolver el nimero de milisegundos en el tiempo; funcion de mieras(), que devuelve
el nimero de microsegundos del tiempo.
146 [Link]ARDUINO
VARIABLES
En palabras sencillas, una variable nos sirve para almacenar datos, que
pueden ser consultados y utilizados desde diversos segmentos de!
sketch. Para utilizar un dato especifico, accedemos a él mediante el
nombre de la variable (estas pueden cambiar continuamente, lo cual,
no pasa lo mismo con las constantes cuyo valor nunca cambia)
Existen diferentes tipos de variables, dependiendo de los datos que
almacenamos; entre ellos, encontramos los siguientes:
char: almacena caracteres, ocupa un byte.
byte: almacena un nimero entre 0 y 255.
int: almacena un ntimero entre -32,768 y 32,767, ocupa 2 bytes.
unsignedint: almacena un niimero entre 0 y 65,535, ocupa 2 bytes,
long: ocupa 4 bytes, almacena un nimero entre -2,147,483,648 y
2,147,483,647.
> float: almacena nimeros decimales que van entre -3.4028235E+38 y
+3.4028235E+38.
> double: almacena nimeros decimales, pero dispone de 8 bytes.
> string: almacena cadenas de texto.
vvvyvy
Al declarar una variable, es importante elegir la que menos espacio
utilice pues hay que considerar que se restara ese espacio de la
memoria de nuestra placa. Para declarar una variable, debemos indicar
un nombre y el tipo de variable; ademés, es posible asignarle un valor en
forma inmediata, por ejemplo
charCaracterDo: bi;
byte Numero = 192;
intMiEntero;
unsignedintnumPos = 2212;
Las variables deben tomar nombres mas descriptivos para que
podamos hacer el cédigo mas legible. Como vemos, hemos creado
cuatro variables, aunque solo en tres de ellas asignamos un valor,
dejamos la variable de tipo int sin inicializar. Veamos un ejemplo de
c6digo donde se utilizan variables de tipo int
[Link] a75. PROGRAMAR ARDUINO oa
int £=7;
int g = 9;
inth=f +g;
voidsetup()
{
Serial. begin (9600) ;
[Link]("f + g equals “);
[Link](String(h)) ;
voidloop ()
A
}
En este codigo hemos creado las variables f, g y h, en las dos
primeras almacenamos los datos 7 y 9, respectivamente, mientras que
en la variable h almacenamos el resultado de sumar las variables f y 9.
Ambitos
Las variables pueden ser globales o locales, la diferencia entre ellas
radica en el alcance que poseen, es decir, desde qué lugares del sketch
pueden ser utilizadas. Una variable es global cuando podemos acceder
a ella desde cualquier lugar del sketch, es decir, esta disponible tanto
para setup() como para loop(). Veamos un ejemplo:
Constantes
Podemos entender a las constantes como variables de solo lectura, es decir, no es
posible modificar el valor que les fue asignado; si intentamos hacerlo, el compilador
fos mostrara un error. La definicion de una constante se hace de forma similar
[Link] variable, pero debemos preceder su declaracién con la palabra const. Por
ejemplo, constint numerol=200. En este caso, se trata de una constante de nombre
numero, con el valor 200.
148 ‘ww [Link]Beas ARDUINO
int a= 2;
voidsetup()
{
Serial. begin (9600) ;
Serial .printin(String(a)) ;
}
voidloop ()
{
anzat2;
[Link](String(a)) ;
delay (3000) ;
}
En este caso hemos declarado la variable fuera de setup() y loop(), por
lo tanto, su ambito es global y la podemos utilizar en cualquier parte
del sketch.
sketch_apr06a §
int MiVariable=5;
Elvoid setup() { M@ En este sencillo
+ Serial .begin(9600); codigo hemos creado
5 } una variable global, por lo
é tanto, la podemos utilizar
7Evoid loopc) ff] desde setupQ)
8 Serial. printin(MiVariable); y también desde Toop()
MiVariable-MiVariable+3; En este ejemplo la hemos
1@ } nombrado MiVariable
y le asignamos el valor 5.
149
[Link]5. PROGRAMAR ARDUINO eS
Por otra parte, una variable es local cuando se declara dentro de un
Ambito especifico (dentro de corchetes), de esta forma no podra ser usada
en un ambito distinto. Veamos un ejemplo basado en el cédigo anterior:
voidsetup()
{
int a= 2;
Serial. begin (9600) ;
[Link](String(a)) ;
}
voidloop()
{
asat2;
Serial. print1n(String(a));
delay (3000) ;
En este caso, hemos declarado la funcién dentro de setup(), por lo
tanto, podemos utilizarla solo dentro de ese ambito. Al llamarla desde
loop() obtendremos un error de compilacién. Una posible solucién seria
la siguiente, aunque no es un cédigo correcto pues debemos tener en
cuenta que la variable int dentro de loop() se creara y se destruira con
cada iteraci6n, pero no presentara errores de compilacién:
Consejos para declarar variables
Como vimos, la declaracion de variables no es una tarea compleja, pero, de igual
forma, es necesario tener en cuenta algunas recomendaciones importantes. En
primer lugar, necesitamos examinar muy bien el Ambito que deseamos asignarle a la
nueva variable; dependiendo de esto, la escribiremos en un lugar o en otro. Por otra
parte, también es relevante darle un nombre descriptivo, de esa forma sera mas facil
reconocerla en cédigos extensos, por ejemplo, es mejor una variable denominada
‘SensorDeDistancia que una llamada VariableDos.
150 ‘[Link]voidsetup ()
{
int a= 2;
Serial. begin (9600) ;
Serial .printin(String(a)) ;
voidloop ()
{
int a= 2;
azat2;
[Link](String(a));
delay (3000) ;
DATOS Y OPERADORES
Dos conceptos relevantes que debemos tener
en cuenta a la hora de programar para Arduino
son los datos y los operadores. Los datos
son importantes pues se trata de la materia
prima con la que trabajaremos y, por otra
parte, los operadores nos permitiran generar
ciertas acciones sobre los datos, de esta forma
obtendremos resultados.
En primer lugar, analizaremos los diferentes
tipos de datos con los que podemos trabajar,
esto se encuentra intimamente relacionado con
las variables que conocimos en una seccion
anterior, pues, para declarar una variable,
definimos el tipo de dato que almacenara. Los
tipos de datos mas comunes utilizados en un
ambiente Arduino se muestran en la tabla que
mostramos a continuacién.
[Link]
ARDUINO
“Tal como sucede
con cualquier
lenguaje de
programacién
necesitamos
diferentes tipos
de datos y
operadores para
realizar acciones
sobre ellos.”
1515. PROGRAMAR ARDUINO es
PD eso Waele eWay BLU ene)
TIPODE DATO TAMANO DESCRIPCION
boolean 8 bits Logico simple, verdadero/falso.
byte bits —_Nimero sin signo entre 0 y 255.
char 8 bits Numero con signo entre -128 y 127.
unsignedchar 8 bits Nimero sin signo entre 0 y 255.
word 16 bits _Niimero sin signo entre 0 y 65535.
int 16 bits Numero con signo entre -32768 y 32767. Se
trata del tipo de dato mas usado para propésitos
generales en Arduino.
unsignediong 32 bits Numero sin signo entre 0 y 4294967295. Se utiliza
para guardar el resultado de la funcion millis().
long 32 bits Nimero con signo entre -2,147,483,648 y
2,147,483,647.
float 32 bits _Nimero con signo entre 3.4028235E38 y
3.4028235E38.
I Tipos de datos comunmente utilizados para programar en Arduino IDE.
El tamafio necesario para cada tipo de dato es un aspecto relevante
a la hora de escribir cédigo. Debemos recordar que, por ejemplo, el
procesador ATmega328P es nativo de 8 bits, por lo que posee soporte
integrado para ntimeros de punto flotante. Para trabajar con tamaiios
de memoria mayores a 8 bits, el procesador gestionara secuencias
de cédigo que le permitan segmentar el trabajo, para almacenar el
resultado donde corresponda.
De esta forma, cuando estemos trabajando con un procesador nativo
de 8 bits, lo mejor sera elegir tipos de datos de 8 bits.
Ahora que revisamos los tipos de datos que tenemos a nuestra
disposicién, es tiempo de conocer los operadores que nos permitiran
152 ‘[Link]eas ARDUINO
trabajar con ellos. En la siguiente tabla se muestran, a grandes rasgos,
los tipos de operadores disponibles. Mas adelante analizaremos cada
uno en detalle:
$$ TIPOS DE OPERADORES
as 1s ees DESCRIPCION
OPERADOR OPERADORES
Aritméticos Asignacién Se trata de la forma de entregar 0
asignar un valor.
eee Operaciones aritméticas basicas:
suma, resta, muliplicacion y division.
Médulo Obtiene el resto de la division de un
numero por otro.
Compuestos ++ Los operadores compuestos permiten
abreviar el codigo, por ejemplo,
incrementar en uno el valor anterior.
Estos operadores compuestos
equivalen ax =x +y,x=x-y,
*y, yx =x/yy, respectivamente.
Comparaci6n
Este tipo de operadores nos permiten
comparar dos datos, por ejemplo,
Menor que, mayor que, diferente de,
etcétera.
ny <
Booleanos AND (&&), OR (||) y NOT (!) También se conocen como
operadores légicos. Nos permiten
conectar dos datos mediante el
uso de nexos l6gicos, comparando
dos expresiones para devolver
VERDADERO 0 FALSO.
I Tipos de operadores ofrecidos por el core de Arduino, y algunos ejemplos especificos junto
a su descripcién.
[Link] 1535. PROGRAMAR ARDUINO ES
154
Operadores aritméticos
Los operadores aritméticos son aquellos que mas facilmente asociamos
con operaciones matematicas; en este grupo se encuentran las cuatro
operaciones fundamentales y también la asignacion y el modulo.
operador suma (x=y+20)
operador resta (x=y-10)
operador multiplicacion (x=y*2)
operador division (x=y/3)
operador de asignacién (int numerol=25),
yvvyvy
wept
El operador % 0 médulo se encarga de devolver el resto cuando
un nimero entero es dividido por otro. Por ejemplo en x= 7% 5
obtendremos como resultado 2.
Las operaciones, como la suma o la divisi6n, tendran en cuenta el tipo
de dato que hemos asignado. Por ejemplo, si ejecutamos la operacién 9/4,
pero hemos indicado que los datos son int, obtendremos como resultado 2,
no 2,25 pues el tipo de dato int no reconoce decimales. Si necesitamos
obtener resultados con decimales, sera necesario elegir el tipo de dato float.
Operadores compuestos
Una operacion compuesta integra una operaci6n aritmética junto a una
variable asignada. Entre estos operadores, encontramos el incremento (+4)
y el decremento (--), que se utilizan para aumentar o disminuir el valor
almacenado en una variable, respectivamente.
Podemos usarlos de la siguiente forma:
> X44 para incrementar x una unidad y devolver el antiguo valor de x.
> X+- para decrementar x una unidad y devolver el antiguo valor de x.
> +4#X_ para incrementar x una unidad y devolver el nuevo valor de x.
> =X para decrementar x una unidad y devolver el nuevo valor de x.
Otros operadores compuestos no son mas que una simplificacion
de operaciones complejas y sirven para realizar una operacion
matematica en una variable con otra variable 0 constante. Por ejemplo,
si escribimos x += y, equivale a la expresion x= x+y, 0 si escribimos x-=
y, es igual a la expresion x=x~y.
[Link]ARDUINO
Operadores de comparacién
Utilizaremos los operadores de comparacion en forma frecuente
cuando trabajemos con estructuras condicionales, pues nos permiten
averiguar si una condicién es verdadera. A continuaci6n, presentamos
los operadores de comparacién:
> > mayor que
> << menor que
> >= mayor o igual que
> <= menor o igual que
> igual que
> diferente
El resultado de estos operadores puede ser TRUE 0 FALSE, su
importancia radica en que, aplicados en estructuras condicionales,
nos permitiran determinar el camino que debe seguir nuestro sketch,
dependiendo de si la operacién indicada resulta verdadera o falsa. Por
ejemplo, podriamos verificar el nivel de tensién en un pin de la tarjeta
Arduino y, segiin la lectura, activar o apagar un led.
Algunos ejemplos de operaciones de comparacién son los siguientes:
60 < 120;
30 > 28;
A5<= 32;
20 == 21;
Las dos primeras comparaciones entregaran como resultado TRUE,
mientras que las demas seran FALSE.
[Link] 1555. PROGRAMAR ARDUINO eS
156
Operadores légicos
Cuando necesitamos realizar un analisis sobre mas de alguna condicién
para que se produzca un resultado, es necesario utilizar los operadores
logicos. Los operadores logicos basicos son los siguientes:
» AND (&&): permite validar dos 0 mas condiciones, estas deben cumplirse
todas para que se ejecute el codigo dentro de las Ilaves. Por ejemplo:
if (variablel > variablel && variable3 > variable4) {
digitalWrite(pinLedRojo, HIGH);
}
Si el valor de la variable es mayor que el almacenado en la variable2, y
el valor de la variable3 es mayor que el de la variable4, se ejecutaran las,
instrucciones entre corchetes.
> OR(|j): permite que, al cumplirse cualquiera de las condiciones, se ejecute
el codigo entre las llaves. Por ejemplo:
if (variablel > variablel || variable3 > variable4) {
digitalWrite(pinLedVerde, HIGH) ;
}
Si el valor de la variable es mayor que el almacenado en la variable2, 0
el valor de la variable3 es mayor que el de la variable4, se ejecutaran las
instrucciones entre corchetes.
> NOT (!): este operador ejecuta las sentencias que estan entre llaves
cuando la condicién es evaluada como falsa.
ESTRUCTURAS DE CONTROL
Las estructuras de control son elementos que nos permiten tomar
decisiones baséndonos en los datos que se encuentran disponibles en
determinado momento. Para ello, elegiremos como base los test logicos
que se realizan gracias a los operadores que ya hemos conocido.
[Link]eas ARDUINO
if
Se trata de una de las estructuras de control mas basicas que podemos
utilizar mientras programamos para Arduino. Su sintaxis es la siguiente
if (test) {
// acciones a realizar si el test devuelve ver-
dadero o true
}
Por ejemplo, podriamos desarrollar un sketch que se encargara de
comparar los valores almacenados en dos variables (valor, intensidad
de ruido, etcétera); si el valor que corresponde a la variablel es inferior
al que se encuentra en la variable2, se ejecutara el codigo contenido
entre las Haves del bloque if, de lo contrario se ejecutara la instruccion
que continiia luego del bloque if.
if else
Si necesitamos especificar las instrucciones que deben ser ejecutadas
cuando el resultado del test resulte negativo, podemos complementar
la estructura de control con else:
if (test) {
// acciones a realizar si el test devuelve verdade-
ro o true
}
else {
// acciones a realizar si el test devuelve false
}
if else elseif
Pero eso no es todo, cuando trabajamos con este tipo de estructuras
de control, es posible detallar atin mas las instrucciones que se
ejecutaran, para ello integraremos elseif. La funcion de esta modificacion
es permitirnos detallar el control que ocurre en el bloque if. Gracias a
elseif, introduciremos un test légico adicional dentro de if, teniendo la
oportunidad de ejecutar un bloque de acciones alternativo, por ejemplo:
[Link] 1575. PROGRAMAR ARDUINO
158
if (variablel < variable2) {
digitalWrite(PinLedRojo, HIGH) ;
,
elseif (variablel == variable2) {
digitalWrite(PinLedverde, HIGH) ;
,
else {
digitalWrite (PinLedRojo, LOW) ;
,
En este ejemplo, encenderemos el LED rojo en caso de que la variablel sea
menor a la variable2, pero encenderemos el LED verde si ambas variables son
iguales. Si ninguno de estos test resulta verdadero, encenderemos el LED rojo.
switch case
Es posible programar diferentes bloques if utilizando elseif, cuando
necesitamos que el sketch decida entre varias opciones. Pero en
realidad no lograremos un c6digo facil de leer, para estos casos es
recomendable el uso de la estructura switch case. Esta estructura nos
permite elegir entre varias opciones, su sintaxis basica es la siguiente:
switch (variable) {
case valori:
// instrucciones para variable == valorl
break;
case valor2:
// instrucciones para variable == valor2
break;
case valor3:
// instrucciones para variable == valorl
break;
default:
// instrucciones para otros casos
break;
,
‘[Link]ARDUINO
La instruccién break es opcional, pero al agregarla no se seguiran
analizando los demas casos hasta el final si uno resulta verdadero.
Por otra parte, la instruccién default también es opcional, pero su
importancia radica en que nos permite indicar aquellas acciones que
seran ejecutadas cuando ninguno de los casos anteriores resulte
verdadero. A continuacién, vemos un ejemplo mas concreto del uso de
esta estructura de control:
int vi
voidsetup () {
[Link](9600) ;
}
voidloop() {
if ([Link]()>0) {
=[Link]() ;
switch (x) {
case 20:
Serial.print1n(‘v es 20”);
break
case 50:
[Link]("v es 50 “);
breal
default:
Serial.print1n("v no es 20 ni 50”);
}
En este cédigo que describimos podemos “Podemos
ver como declaramos la variable v sin un
valor inicial, luego de esto, iniciamos la declarar una
comunicacién serial. Leemos un niimero entero 7 7
en el buffer serial y lo guardamos en la variable variable sin un
¥, posteriormente, utilizamos los casos de la valor inicial y
estructura de control para imprimir un mensaje
si el valor almacenado en v es 20, otro mensaje luego asignarle el
si la variable almacena el valor 50 y un mensaje i
diferente si el valor no es 50 ni 20. valor adecuado
[Link] 1595. PROGRAMAR ARDUINO
BUCLES
Los bucles o loops son capaces de realizar una tarea en forma repetit
hasta que se considere completa, estas estructuras son for, while y do while.
El bucle for sera util cuando se necesite ejecutar un bloque de
cOdigo una cantidad determinada de veces. Por lo general, integra un
contador incremental que aumentara hasta que alcance un valor que
prefijamos para que el bucle termine. La primera linea de este bucle es la
instruccion for; esta posee tes partes: inicializacion, test y el incremento
© decremento de la variable de control; posee el siguiente aspecto:
for (int i = 0; i < 100; i++)
En él vemos que i se inicializa en 0, luego, al final de cada bucle
se incrementara en 1 (ya sabemos que i¢+ es una simplificacion que
i+). Con esto aclarado, podemos observar este bucle
en forma completa
corresponde a
voidsetup()
{
Serial. begin (9600) ;
,
voidloop {
for (int i = 0; i < 100; it+){
[Link](i) ;
}
Como vemos, las instrucciones que se encuentran en el interior del
bucle for se ejecutardn hasta que se alcance el valor 100. Cuando esto
suceda, el bucle finalizara. Otro bucle que debemos conocer es while, se
trata de una opcion que se encarga de realizar un test sobre la expresion
que indicamos y ejecuta el bloque de cédigo que encerramos entre llaves,
hasta que la expresion evaluada sea falsa. Su sintaxis es la siguiente
while (expresion) {
// sentencias para ejecutar
160 ‘[Link]es ARDUINO
Teniendo esta sintaxis en cuenta, podemos ver la forma en que se
realiza un bucle while, utilizando el ejemplo que entregamos para el
bucle for:
voidsetup() {
Serial. begin (9600) ;
+
voidloop() {
int i = 0;
while (i < 100){
[Link](i);
itt;
El bucle do while se diferencia porque testea la expresion después
de ejecutar el bucle, de esta forma, nos podemos asegurar de que las
instrucciones contenidas son ejecutadas, al menos, una vez. Su sintaxis
es la siguiente:
do {
// bloque de cédigo
} while (expresién) ;
Al trabajar con cédigos complejos, es necesario tener en cuenta
algunas sentencias especiales, que podemos utilizar cuando trabajamos
con varias funciones y deseamos que la ejecucién del sketch siga algin
camino en particular.
> Break: esta sentencia permite romper la iteracién del bucle para salir de
él sin que sea necesario que se cumplan las condiciones marcadas para
salir.
> Goto: se trata de una sentencia que nos permite marcar el lugar del
cédigo al que realizaremos un salto. La posicién desde la que saltamos se
almacena en la pila del programa para que sea posible regresar.
> Return: es una sentencia que se utiliza para volver de un salto realizado
con goto
[Link] 1615. PROGRAMAR ARDUINO ees
EZ
En este capitulo hemos realizado un recorrido basico por aquellos
aspectos que es necesario conocer antes de programar nuestros sketchs
en Arduino. Conocimos la estructura basica de un sketch, las funciones
de las variables y también su uso. Analizamos los tipos de datos y los
operadores con los que es posible trabajar, y revisamos algunos ejemplos
de las estructuras de control que nos permitiran dotar, a los programas,
de la capacidad de decidir entre varios caminos 0 de ejecutar una accion
en repetidas ocasiones.
162 ‘ww [Link]Trabajar
Es hora de poner manos a la obra, en este capitulo
realizaremos nuestros primeros proyectos sencillos,
para ello utilizamos nuestra placa Arduino junto a un
conjunto de LEDs y algunos componentes adicionales.6. TRABAJAR CON LEDS [users]
164
LEDS Y ARDUINO
Ahora que hemos dado un paseo por algunas bases tedricas y también
hemos revisado los procedimientos adecuados para comenzar a
trabajar con Arduino, es hora de poner manos a la obra.
Existen muchos proyectos sencillos que es posible realizar, pero,
en este capitulo, nos dedicaremos al manejo de los LEDs. Se trata de
pequeiios elementos que nos proporcionan un indicador claro de que
estan funcionando en forma correcta: emiten luz. Asi podremos saber
exactamente qué cambios logramos cuando realizamos una alteracion 0
una modificacién en los cédigos que utilizamos.
Para comenzar, revisaremos en detalle las caracteristicas de un LED.
En pocas palabras, podemos decir que un LED es un diodo, es decir, un
componente que deja pasar la electricidad en un solo sentido.
Si nos acercamos a un LED, veremos que presenta dos patillas,
yuna es mas larga que la otra. La patilla mas larga corresponde al
anodo o polo positivo mientras que la mas corta es el todo 0 polo
negativo. Como sabemos, la corriente entrar por el polo positivo y
saldra por el polo negativo.
IH Eneste diagrama, se aprecian las
partes que componen un LED, y la
relacién entre el anodo y el catodo.
PCT)
www .[Link]ARDUINO
Una vez que pongamos esto en claro, no tendremos problemas para
conectar LEDS a los circuitos que disefiemos, aunque nos queda otro punto
importante: las resistencias. En capitulos anteriores hemos mencionado la
importancia de utilizar resistencias junto a los LEDs, pero zqué resistencia
debemos utilizar en un caso especifico? Para esta pregunta, no existe una
respuesta directa pues es necesario hacer uso de la ley de Ohm
Ley de Ohm
Esta ley se encarga de relacionar el voltaje, la corriente y la resistencia,
y nos entega las formulas adecuadas para calcular cualquiera de estas
magnitudes, aunque necesitaremos conocer dos de las magnitudes para
calcular Ia tercera,
Be CRO)
Crea CUN Tana Cone SOLS) PLU cata)
Vv
I Resumen de las intensidades que es posible calcular mediante la ley de Ohm.
Necesidad de una resistencia
Conectar una resistencia junto a un LED no es una tarea sin importancia, ya que
se trata de una actividad completamente recomendable, pues, si no lo hacemos,
podriamos dafar el LED o disminuir su vida util. Es necesario considerar que, para
un LED comin, el voltaje de operacién puede estar entre 1,8 Vy 2,2 V; el voltaje del
LED estaré en la base de la eleccidn de la resistencia, por esta razon es necesario
que miremos sus caracteristicas técnicas.
[Link] 1656. TRABAJAR CON LEDS ae
166
Por ejemplo, si tenemos un circuito sencillo en el que conectaremos
un LED a la placa Arduino, necesitaremos calcular el valor de la
resistencia para decidir cual utilizar. Para ello aplicamos la ley de Ohm
y. como necesitamos dos de las magnitudes, tenemos lo siguiente:
> VOLTAJE: los pines de la placa suministran 5 V.
> INTENSIDAD: podemos obtenerlo en la hoja de especificaciones 0 en la
web oficial de Arduino; para la placa Arduino UNO se trata de 20 mA.
Teniendo estos datos, realizamos la siguiente reflexion: si la
intensidad corresponde a 20 mA (miliamperios), 0 lo que es igual,
0,02 amperios; y el voltaje que caera en la resistencia es de 5 V (un LED
consume entre 1,8 V y 2,2 V), por una sencilla operacion matematica
deducimos que la resistencia debe consumir 3,2 V como minimo.
Luego de esto aplicamos la formula de la ley de Ohm y escribimos
los valores que tenemos: R= V/I
=Ve32V .
Reba Hey = 100
Esto corresponde al valor minimo; por supuesto, utilizar una
resistencia de 220 © en este caso podria ser una buena idea. Con estos
conceptos claros, pongamos manos a la obra.
EL PROYECTO BASICO: BLINK
Ya conocimos la forma de cargar un ejemplo basico en nuestra placa
Arduino UNO; para ello hicimos uso de Blink, uno de los cédigos que
se encuentran disponibles en el IDE. En esta ocasién trabajaremos
con este codigo ya cargado en la placa, y lo profundizaremos y
modificaremos para obtener diferentes resultados.
En primer lugar, efectuaremos la conexion de un LED a nuestra
placa. En este punto es importante mencionar que, aunque una forma
completa de conectar un LED es utilizando un protoboard, cables
de puente y resistencia adecuada, también lo podemos conectar
directamente a la placa. Para saber como hacerlo, sigamos las
instrucciones del siguiente Paso a paso.
[Link]aE ARDUINO
Paso a paso: Conectar un LED directamente
01 Como ya se completaron los pasos necesarios para conocer la placa Arduino UNO, se
instalé el IDE y se conocié la forma correcta de cargar un sketch en la placa, en esta,
ocasién se revisard cémo se conecta un LED en forma directa. Necesitara la placa
Arduino UNO, un LED y el cable USB para conectarla a la PC.
2 Antes, se vera la forma de conectar un LED mediante el protoboard, esta vez se hara
0 en forma directa. En este punto es necesario mencionar que la placa ya dispone de
tun LED incorporado, por lo que es posible testear cédigo aun si no se conecta un LED
externo. Este LED se encuentra indicado con la letra L.
OO ———
reer ts
—
eh
Cle ed
[Link] 1676. TRABAJAR CON LEDS
03
04
168
Para realizar la
conexién de un LED
en forma directa,
conecte la pata mas
larga 0 positivo al ping
digital 13 y la pata
mas corta al ping GND.
Tenga en cuenta que
la placa ya incorpora
una resistencia en ef
ping 13, por lo tanto,
no se dafiara el LED
conectado.
Ejecute el IDE de Arduino y cargue el ejemplo Blink, se trata del mismo cédigo que se
present6 en un capitulo anterior, por ahora no realice modificaciones en el cédigo.
vB ett] +)
a 1 pin [Link] as on output
« %
?
neateG Ny MIG); the LED on oltag
1000) or second
m5 the LED off by making the voltage LOW
(1000); or @ seco
[Link]05
0
ARDUINO
Conecte la placa a la
computadora mediante
el cable USB y cargue
el sketch en la placa
Arduino UNO. De
inmediato vera que el
LED parpadea, segin
las indicaciones del
sketch Blink
Ahora desconecte el cable USB, y la placa quedara sin energia, pero el sketch cargado
seguird en Arduino. En este punto es posible utilizar la energia de una fuente externa,
or ejemplo, una bateria de 9 V. Para efectuar la conexién, utilice los pines GND y Vin.
Con fa bateria
conectada a la
placa Arduino, se
seguira ejecutando
el sketch que guard6,
de esta forma el
LED conectado
directamente se
encendera y apagara
segiin el cédigo, un
segundo encendido y
un segundo apagado,
[Link] 1696. TRABAJAR CON LEDS
Podemos simplificar este cédigo para que, haciendo uso del minimo
cédigo que nos permita encender el LED, escribamos el siguiente sketch
voidsetup () {
pinMode (13, OUTPUT) ;
}
voidloop () {
digitalWrite(13,HIGH) ;
}
“Si utilizamos
un pin distinto
al 13, sera
necesario
conectar una
resistencia de
protecci6n, de
esta forma no
dafiaremos el
led conectado.”
voidsetup() {
Como vemos, se trata de un cédigo muy
sencillo, pero que nos serviré como punto de
partida para entender lo que se encuentra en la
base del encendido del LED.
Como sabemos, en setup() es posible establecer
el uso que le daremos al microcontrolador 0
iniciar las variables que necesitamos en el sketch,
por otra parte, en loop() podemos establecer los
procesos que se ejecutaran en forma repetitiva
De esta forma, en este cddigo de ejemplo
usamos setup() para establecer que el pin 13
entregue un voltaje cuando lo decidamos. Si
seguimos analizando el cédigo, vemos que
utilizamos loop() para establecer el pin 13 en
HIGH, asi podemos obtener 5 V en él.
Para terminar, usamos digitalWrite() para iniciar
el pin y establecer el estado HIGH, que mantendra
encendido el LED conectado. Si deseamos mantener
el LED apagado, solo necesitamos efectuar una
pequeia correccién en el codigo:
pinMode(13, OUTPUT) ;
,
voidloop () {
digitalWrite(13,LOW) ;
}
170
[Link][users] ARDUINO
Ahora bien, para acercarnos al sketch Blink debemos conocer la
funci6n delay(), adecuada para lograr un retraso en la ejecucion de
un comando, Para usar esta funci6n, indicamos entre paréntesis los
milisegundos que durara el retraso, por ejemplo delay(1000) para un
retraso de mil milisegundos o, lo que es igual, un segundo. Ahora
veamos esta modificacién en nuestro cédigo:
voidsetup () {
pinMode (13, OUTPUT) ;
,
voidloop () {
digitalWrite (13, HIGH) ;
delay (500) ;
digitalwrite (13, LOW) ;
delay (500) ;
Como vemos, hemos utilizado delay(500), que en la practica se trata
de medio segundo en el que el LED estar encendido y medio segundo
en el que permanecera apagado.
Ahora intentemos otras modificaciones, reduciendo el valor que
indicamos en delay(), probemos, por ejemplo, con 400, 300, 200 y 100,
respectivamente. En cada caso, carguemos el sketch modificado en la
placa y observemos el funcionamiento del LED.
Blink Arduino 1,8.2
HH A\cargar este
cédigo, obtendremos
tun LED que parpadea
Levoid setupOt
2 pinMode(13, OUTPUT; rapidamente pues
- LoopOt permanece una
void
Crigteaaertenci3 i; décima de segundo
delay(10p); encendido y una
digitalWritec13,LoN; décima de segundo
5 ipeeise): apagado; para
+
lograrlo utiizamos
delay(100).
[Link] mm6. TRABAJAR CON LEDS ee
CONTROLAR UN LED
Ya sabemos como encender un LED conectado a Arduino y, también,
como controlar su parpadeo, para ello hicimos uso de delay() y
modificamos el valor que le pasamos como parametro.
Pero es tiempo de avanzar un poco mas; para lograrlo integraremos la
posibilidad de decidir en tiempo real cuando se enciende o se apaga el LED.
Para este ejemplo seguiremos utilizando el LED que conectamos
directamente a la placa Arduino UNO, mediante el pin 13.
Pero, antes de continuar con las instrucciones necesarias,
debemos detenernos para conocer el Monitor serial. Se trata de una
herramienta ofrecida por el IDE de Arduino, que nos permite enviar y
ver los datos que se manejan a través del puerto serie. Es una forma
sencilla y répida de establecer una comunicacién serial con la placa
Arduino, por esta razon debemos utilizarlo para controlar el LED.
Blink Arduino 1.8.2
Blink §
void setupOnt
pimodec13, OUTPUT);
}
aigitalwritec3, Lon);
delay(100);
?
172
Para acceder al
Monitor serial dentro
del IDE de Arduino,
oid LoopOL es necesario que la
digttalwri tec13, HI;
[Link](9600): esta sentencia se encarga de inicializar la
comunicacién serial. El ntimero 9600 nos indica la cantidad de baudios
(nimero y simbolos por segundo) que manejard el puerto serie.
Utilizaremos esta sentencia siempre que necesitemos comunicarnos con
Arduino mediante el puerto serie.
> [Link](‘1’): esta sentencia le indica, al microcontrolador, que
debe imprimir un caracter a través del puerto serie. La ventaja de esta
sentencia es que agrega un salto de linea cada vez que envia un dato; esto
es muy itil cuando estemos utilizando el Monitor serial.
Si subimos este sencillo sketch a la placa Arduino, veremos que el LED
TXT parpadeara cada vez que se envie un dato a través del puerto serie,
y, si desplegamos el Monitor serial, verificaremos que, al tiempo que se
envia un dato, este se imprime en la ventana junto aun salto de linea. Ya
estamos comunicandonos con la placa Arduino a través del puerto serie
éPrograma o sketch?
Los cédigos que desarrollamos para Arduino son denominados sketch y no programas,
pero {cual es la razon para utilizar una designacion y no otra? IDE de Arduino se origina
en Processing, un lenguaje en el que los codigos son considerados bocetos 0 sketchs.
De esta forma Arduino ha heredado el IDE de Processing, también su forma de guardar
el codigo y el nombre que utilizamos para los programas, es decir, sketch.
[Link] 1736. TRABAJAR CON LEDS [Users]
174
Ahora bien, partiendo de este cédigo que nos permite efectuar la
comunicacién serial, realizaremos algunas modificaciones para declarar
que usaremos el pin 13 como salida. Ademis, necesitaremos una de
las estructuras selectivas que aprendimos en el capitulo 5, ya que
debemos verificar la tecla que se presiona desde el teclado.
Para comenzar, declararemos el uso del pin 13, esto lo hacemos
mediante:
pinMode(13, OUTPUT) ;
Luego, mediante un if else verificaremos el valor de input, en este ejemplo
encenderemos el LED si el valor es 2, de lo contrario lo apagaremos:
if (inpu’ 2)
digitalWrite(13, HIGH);
)
else
{
digitalwrite(13, LOW);
En este codigo utilizamos if para verificar el valor de input, si se trata
de 2 ejecutaremos el cédigo que esta entre los corchetes: digitalWrite(13,
HIGH), es decir, encenderemos el LED. Por otra parte, usamos else para
ejecutar el codigo digitalWrite(13, LOW), cuando el valor de input sea
distinto a2.
Debemos incluir la declaracion de uso del pin 13 en setup(), mientras
que la estructura if else ira en loop()
int input;
voidsetup() {
pinMode (13, OUTPUT) ;
Serial .begin (9600) ;
voidloop() {
[Link]oa ARDUINO
if ([Link]()>0) {
input=[Link]();
if (input=='2"){
digitalWrite(13, HIGH);
)
else
{
digitalWrite(13, Low);
Manejamos el LED conectado directamente a la placa, utilizando el
pin 13 y GND. Luego conectamos la placa a la computadora mediante el
cable USB y subimos el sketch que acabamos de comentar.
Desplegamos el Monitor serie y escribimos 2, luego presionamos.
ENTER y veremos que el LED se encendera. Si realizamos el mismo
procedimiento, pero presionando otra tecla, el LED se apagara.
seis
Scrat. beyin(30) e var
oF ingute' 23
)
t
aioitatmrstecas, 190;
?
I Utilizaremos el Monitor serie para establecer una comunicacién serial con Arduino; en este
ejemplo encendemos el LED si presionamos 2 y luego ENTER; con otra tecla lo apagamos.
[Link] 1756. TRABAJAR CON LEDS [users]
INCORPORAR ITERACIONES
Para complejizar un poco mas el trabajo con LEDs, en Arduino
podemos hacer uso de las iteraciones.
Una forma sencilla de conectar y encender varios LEDs seria
repetir, tantas veces como necesitemos, las instrucciones que
nos permiten encender un LED; de esta forma lograriamos como
resultado la posibilidad de encenderlos todos. En primer lugar,
sera necesario declarar todos los pines requeridos en setup(), de la
siguiente forma
voidsetup()
{
pinMode( 13, OUTPUT) ;
pinMode( 12, OUTPUT) ;
pinMode( 11, OUTPUT) ;
pinMode( 6, OUTPUT) ;
}
Pero utilizar un ciclo for en esta declaracién nos ahorrara cédigo
y har que nuestro sketch sea mas eficiente. Esto es posible pues
sabemos que la instrucci6n basica debe ser repetida un nimero
determinado de veces, por lo tanto, una instruccin for combinada
con una variable que cambiara dependiendo de las veces que
se ejecuten las instrucciones, sera una alternativa perfecta para
declarar los pines en setup(). Analicemos el siguiente codigo:
Pines
Debemos tener en cuenta que los pines digitales en Arduino tienen dos estados:
On y Off. Generalmente utilizamos HIGH y LOW pues nos permiten leer el
cédigo en forma mas sencilla. Los pines digitales entregan una potencia de
salida de 5 V (HIGH), por lo que hay que tener cuidado al realizar conexiones a
los pines digitales; en primer lugar, debemos estar seguros de que el elemento
conectado es capaz de manejar 5 V.
176 [Link]oes ARDUINO
voidsetup ()
{
inta=0;
for (a= 6 ; a<14 ; att)
pinMode( a , OUTPUT) ;
)
Aqui inicializamos la variable a como int, es decir, como un entero
luego utilizamos el ciclo for para trabajar con esta variable, teniendo en
cuenta tres pardmetros
» variable: en este caso se trata de la variable a, que se ha inicializado con
un valor 0 (a=0), pero al entrar al ciclo for le asignamos un valor 6:
> comparacién: se trata de la condicién que se debe satisfacer para que se
ejecuten las condiciones dentro del ciclo for; en este caso se ejecutaran
mientras la variable a sea menor que 14: a<14.
> cambio en la variable: se refiere al incremento 0 decremento que su
la variable con cada iteracién del ciclo for; en este caso la variable a
aumentard en 1 cada vez: a++.
Luego especificamos las instrucciones que se ejecutaran mientras la
condicién evaluada contintie siendo verdadera
pinMode( a , OUTPUT) ;
Esta instruccién nos permite inicializar los pines que corresponden
a cada valor que se almacenara en la variable a. En realidad, el ciclo for
estard ejecutando las siguientes instrucciones, una por cada iteracion
pinMode( 6 , OUTPUT);
pinMode( 7 , OUTPUT) ;
pinMode( 8 , OUTPUT) ;
pinMode( 9 , OUTPUT) ;
pinMode( 10 , OUTPUT) ;
pinMode( 11 , OUTPUT) ;
pinMode( 12 , OUTPUT) ;
pinMode( 13 , OUTPUT) ;
[Link] 76. TRABAJAR CON LEDS
178
Ya tenemos declarados los pines necesarios mediante un ciclo
for, pero gpodemos hacer lo mismo con loop()? Como trabajaremos
con varios LEDs, utilizar un ciclo for en loop() puede ser una buena
idea. Para implementarlo, recordemos el codigo que utilizamos para
encender un solo LED en forma intermitente:
voidloop() {
digitalWrite(13,HIGH) ;
delay (500) ;
digitalwrite(13,LOW) ;
delay (500) ;
)
Gracias a este cédigo, el LED conectado permanecera encendido
por medio segundo y apagado por otro medio segundo. Ahora bien,
si quisiéramos encender los LEDs que hemos inicializado, podriamos
copiar este cédigo para cada LED que conectaremos, pero nuevamente
obtendriamos una solucion poco eficiente. Veamos cémo utilizar un for
para resolverlo
for (b= 6; b< 14 ; bt)
{
digitalWrite( b , HIGH)
delay (500) ;
digitalwrite( b , LOW);
delay (500) ;
}
En este caso utilizamos los siguientes parametros
> variable: usamos la variable b, a la que asignamos el valor 6: b=6.
> comparacién: indicamos que las instrucciones dentro del ciclo se ejecuten
mientras la variable b sea menor que 14: b<14.
> cambio en la variable: en este caso, la variable b aumentara en 1 con
cada iteracion: b++.
Dentro del ciclo, encontramos las instrucciones que seran ejecutadas
en cada iteracién:
[Link]ARDUINO
// Proporciona electricidad al pin almacenado en b
digitalwrite( b , HIGH) ;
// Mantiene encendido el LED por medio segundo
delay (500) ;
// Quita la electricidad al pin almacenado en b
digitalwrite( b , LOW);
// Mantiene apagado el LE!
delay (500) ;
por medio segundo
Estas instrucciones se repiten para cada uno de los pines que
declaramos en setup(), por lo tanto, el resultado sera que todos los LEDs
conectados se encenderan y se apagaran. Nuestro cédigo completo
queda de la siguiente forma:
voidsetup ()
{
int a=0
for (a= 6; a< 14; att)
pinMode( a , OUTPUT) ;
}
voidloop ()
{
int b= 0;
for (b= 6 ; b< 14 ; b++)
{
digitalwrite( b , HIGH) ;
delay (500) ;
digitalwrite( b , LOW);
delay (500) ;
}
Ahora solo nos queda escribirlo en el IDE de Arduino y proceder a su
compilacién, asi podremos verificar que no existan errores de sintaxis.
[Link] 1796. TRABAJAR CON LEDS
sketch_aprl2
4 setup
{
nae;
forCa=6;0
+ be)
Aigitamnriter b , HIGH ;
delay (500) ;
@igitalwriter b , LOM:
olay (500) ;
i Luego de escribir
el codigo, hacemos
clic en Verificar/
Compilar, que
se encuentra en el
menti Programa.
Como vemos en
esta imagen, la
compilacién ha sido
correcta,
Ahora earmaremos el circuito, para ello necesitaremos la placa
Arduino, un protoboard, cables de puente, ocho LEDs y una resistencia
Debemos seguir las instrucciones del siguiente Paso a paso.
Paso a paso: Conectar varios LEDs
01) #7 _ \
180
Para comenzar, retina los
materiales que necesite para
llevar a cabo las instrucciones
entregadas en este Paso a paso:
protoboard, cables de puente,
LEDs, placa Arduino y cable
usB.
[Link]ees ARDUINO
0 Conecte los LEDs, al protoboard, luego utilice cables de puente para unir el extremo
negativo de cada LED con la linea negativa del protoboard.
0 3 Ahora agregue una resistencia. A continuacién, una cada uno de sus extremos con las
lineas negativa y positiva que se encuentra en uno de los extremos del protoboard.
[Link] 1816. TRABAJAR CON LEDS
04; 98998484
Es tiempo de unir el protoboard
alla placa Arduino UNO. Para
esto, use un cable de puente que
ira desde el pin GND hasta la
linea positiva del protoboard.
05 Para continuar, utilice los cables de puente necesarios para conectar el extremo
positivo de cada LED con los pines 6 al 13 de la placa Arduino,
182
[Link]0
ARDUINO
Con todas tas conexiones ya realizadas, conecte la placa Arduino a la computadora,
para ello utilice el cable USB.
sketch_aprl2b §
void setup)
A {
nta=0;
for (a= 6; a< 14; a+)
pinModec a , OUTPUT) ;
+
void LoopQ
{
nt b=
for (b= 6; b< 16; bi)
{
digitalmriter b , HIGH) ;
delay (500) ;
digitalwritec b , LOW);
1 delay ($00) 5
?
[Link]
Suba el sketch a la placa
Arduino, en este punto verifique
que la compilacién sea correcta,
y solucione cualquier posible
error de sintaxis que pudiera
aparecer.
1836. TRABAJAR CON LEDS
sketch_apri2b
void setup()
{
nta=0;
for (a= 6; a< 14; at)
pinModeC a , OUTPUT) 5
6 }
void Loop()
aS ft
tr b=;
1 for (b= 6; b< 14; bi)
{
digitalritec b , HIGH) ;
delay (20) ;
digitalwritec b , LOND;
c delay (10) ;
}
}
184
Si la carga del sketch se realiza
en forma correcta, deberia ver
los LEDs parpadeando uno a
la vez, siguiendo una secuencia
‘ordenada y con intermitencias de
medio segundo.
Para lograr otros efectos,
puede tocar el cédigo y
subirlo nuevamente a la placa
Arduino. Por ejemplo, para
que el juego de luces vaya mas
rapido, reemplace las lineas
delay (500) por delay(10).
Cargue el nuevo sketch y vea
‘cémo funciona.
[Link]ARDUINO
Teniendo como base este c6digo, es posible generar algunas
modificaciones para lograr efectos interesantes, por ejemplo,
analicemos el siguiente sketch
voidsetup()
{
int a=0;
for (a=6;a<14;
pinMode( a , OUTPUT) ;
}
voidloop ()
{
int b = 0
for (b= 6 ; b < 12 ; bt+t)
:
digitalWrite( b , HIGH) ;
delay (50) ;
digitalWrite( b , LOW);
delay (50) ;
}
for (b= 13 ; b> 6 ; b--)
{
digitalWrite( b , HIGH) ;
delay (50) ;
digitalwrite( b , LOW);
delay (50) ;
,
Al subirlo a la placa vi
forma progresiva, pero llegan hasta el final de la linea y vuelven,
encendiéndose una a una. Otra posibilidad es la siguiente:
emos que las luces LEDs se encienden en
voidsetup ()
{
int a=0
for (a
[Link] 1856. TRABAJAR CON LEDS [USERS]
186
pinMode( a , OUTPUT) ;
)
voidloop ()
{
int b =0
for (b= 6 ; b< 14 ; b=b#2)
“
digitalWrite(b , HIGH) ;
delay (100) ;
digitalWrite( b , LOW);
delay (100) ;
}
for (b= 5 ; b< 14 ; b=b+2)
{
digitalwrite( b , HIGH) ;
delay (100) ;
digitalwrite( b , LOW);
delay (100) ;
}
En este caso, los LEDs se encenderan, pero saltandose un lugar,
posteriormente repite la secuencia, pero se iran encendiendo los LEDs
que en el primer ciclo permanecieron apagados.
ENCENDER SEIS LEDS
EN SECUENCIA
Realizaremos un sistema de conexi6n distinto al que venimos utilizando
para los LEDs. Utilizaremos seis LEDs de diferentes colores, cada uno
conectado a su propia resistencia; los LEDs se activaran en secuencia,
ya sea desde el exterior hasta el centro o viceversa; se encienden los
LEDs de igual color en cada iteraci6n. Ubicaremos los LEDs de forma que
los colores aparezcan como una secuencia organizada de luces. Para
completar estas instrucciones, necesitamos lo siguiente:
[Link]ARDUINO
Dos LEDs azules.
Dos LEDs rojos.
Dos LEDs amarillos.
Seis resistencias de 220 ohms.
Placa Arduino UNO.
Protoboard.
Cables de puente.
>
>
>
>
>
>
>
setup()
Como hicimos en los proyectos anteriores, en primer lugar es necesario
configurar los pines que utilizaremos; en este caso se trata de los
pines 4 al 9 como OUTPUT. Como ya sabemos, es posible hacerlo de la
siguiente forma:
pinMode( 4 , OUTPUT) ;
pinMode( 5 , OUTPUT);
pinMode( 6 , OUTPUT) ;
pinMode( 7 , OUTPUT) ;
pinMode( 8 , OUTPUT) ;
PinMode( 9 , OUTPUT) ;
Pero podemos hacer que este cédigo sea més eficiente gracias a un
ciclo for:
voidsetup ()
{
intLed = 0 ;
for ( Led = 4 ; Led< 10 ; Led++)
pinMode( Led , OUTPUT) ;
}
loop()
Ahora que ya hemos configurado los pines que utilizaremos, es
tiempo de trabajar sobre loop(). En esta ocasi6n, trabajaremos con dos
esquemas de c6digo, uno para controlar los primeros tres LEDs y el
segundo para controlar los tres LEDs restantes.
[Link] 1876. TRABAJAR CON LEDS ea
El primer bloque de cédigo que utilizaremos corresponde al grupol,
es el que manejara los tres primeros LEDs, conectados a los pines 4, 5 y
6. El cédigo de esta funcién serd el siguiente:
for (intLed = 4; Led< 7; Ledt+
{
digitalwrite(Led, HIGH) ;
digitalWrite(Led + 2 * paso + 1, HIGH)
delay (200) ;
digitalWrite(Led, LOW);
digitalWrite(Led + 2 * paso + 1, LOW);
delay (200) ;
paso-
y
Ahora trabajaremos con el grupo2, el que controlara al segundo grupo
de LEDs, es decir, a los que se encuentran conectados a los pines 7, 8 y 9,
paso = 0;
for (intLed = 6; Led> 3; Led--)
{
digitalwrite(Led, HIGH) ;
digitalWrite(Led + 2 * paso + 1, HIGH)
delay (200) ;
digitalWrite(Led, LOW);
digitalWrite(Led + 2 *
delay (200) ;
pasot+;
}
Con esto, nuestro cédigo quedaré de la siguiente forma
voidsetup ()
{
intLed = 0
for ( Led = 4 ; Led< 10 ; Led++)
pinMode( Led , OUTPUT) ;
}
188 [Link]ARDUINO
voidloop ()
{
int paso = 2
for (intLed = 4; Led< 7; Led++)
{
digitalWrite(Led, HIGH) ;
digitalWrite(Led + 2 * paso + 1, HIGH);
delay (200) ;
digitalWrite(Led, LOW) ;
digitalWrite(Led + 2 * paso + 1, LOW);
delay (200) ;
paso-~;
)
Paso = 0;
for (intLed = 6
{
digitalwrite(Led, HIGH) ;
digitalWrite(Led + 2 * paso + 1, HIGH);
delay (200) ;
digitalWrite(Led, LOW);
digitalWrite(Led + 2 * paso + 1, LOW);
delay (200) ;
Led> 3; Led--)
pasott;
}
)
Ahora debemos iniciar el IDE de Arduino para 7
ingresar el cédigo y, luego, compilarlo para Luego de
detectar cualquier problema que pueda aparecer. escribir cualquier
A continuacion, armaremos el circuito adecuado
para ejecutar el codigo que ya desarrollamos. cdédigo debemos
compilarlo para
detectar posibles
errores.”
[Link] 1896. TRABAJAR CON LEDS
Paso a paso: Circuito para encender 6 LEDs
0 Para comenzar, retina los elementos que necesitard para armar este circuito, en este
caso se trata de seis LEDs en tres colores diferentes, seis resistencias, cables de
puente, Arduino UNO y protoboard.
2 Conecte los LEDs en el protoboard, deberan quedar conectados en linea en el
siguiente orden: azul, rojo, amarillo, amarillo, rojo, azul. Por comodidad, puede dejar
algunos espacios entre cada LED.
190 [Link]ARDUINO
0 J Como se declaré el uso de los pines 4 al 9, conecte cables de puentes a los pines
adecuados en la tarjeta Arduino UNO.
4 Para continuay, conecte los cables de puente a los LEDs que ubicé en el protoboard,
0 Comience por el pin 4, que ird conectado al primer LED azul, el pin 5 que ira conectado al
primer LED rojo y el pin 6, que ira conectado al primer LED amarillo. Posteriormente, los
pines 7, 8 y 9 deberan conectarse a los segundos LEDs amarillo, rojo y azul.
05 Conecte las resistencias para unir la linea negativa de la parte inferior del protoboard
con los LEDs. Utilice una resistencia para cada LED.
191
[Link]6. TRABAJAR CON LEDS oa
0 Conecte uno de los extremos de un cable de puente a la linea negativa del protoboard.
Conecte el otro extremo al pin GND de la placa Arduino UNO.
BR S,O] Oa
Cees a
Con las conexiones ya realizadas, debe compilar el sketch que desarrollé antes.
Verifique que fa compilacién se realice sin problemas, de lo contrario busque y
solucione los posibles errores que puedan presentarse,
sketch apel2b
setup
{
Led = 0;
for C Led = 4; Led < 10 ; Ledss)
pirbodec'Led
)
void 100pO
{
pose = 25
for Cint Led = 4; Led < 7; Lede+)
{
digitalwritected, 116;
digitaltirite(Led + 2 * paso + 1, M10);
elay(200);
digitalwiritected, Lom
digitalnrite(ted + 2 * paso + 1, LOD;
etay(200);
paso--;
)
paso = 0:
for C
{
aigitalwritected
igitalnriee(ted +
detav(200):
ed = 6;
192 [Link][users] ARDUINO
038 Conecte Ia placa Arduino UNO a la computadora mediante el cable USB y cargue el
sketch mediante la opcién Subir, que se encuentra en la barra superior de opciones.
Con el sketch cargado, vera que los LEDs se encenderdn en secuencia: los dos azules,
luego los dos rojos y finalmente los dos amarillo.
SECUENCIA DE 8 LEDS
Para complejizar un poco lo que venimos haciendo con Arduino,
trabajaremos con un grupo de ocho LEDs, pero en esta ocasién lo
activaremos con diferentes secuencias de encendido ¢ incorporaremos un
pulsador que nos permitira cambiar el tipo de secuencia que se utiliza,
En primer lugar realizaremos las conexiones necesarias para que
nuestro circuito funcione; para ello necesitaremos la placa Arduino
UNO, un protoboard, ocho LEDs, ocho resistencias de 220 0 y una de
1K, ademas de un pulsador.
Antes de conectar los diferentes elementos, hay que considerar
lo siguiente. Para los LEDs, de un lado debemos conectar todos los
catodos a las resistencias de 220 , las que a su vez se conectaran a
GND, por otra parte, conectaremos los anodos a los pines 2 al 9 de la
placa Arduino.
Por su parte, el pulsador se debe conectar de un lado a 5 V y del otro
una resistencia a tierra. Necesitamos un cable conectado al pin AO para
permitir cambiar de secuencia cada vez que el pulsador sea presionado.
[Link] 1936. TRABAJAR CON LEDS [users]
iagrama de conexion
En esta imagen vemos el diagrama de conexin propuesto para este proyecto.
A continuacién, analizaremos un ejemplo de codigo que podemos
utilizar para encender los 8 LEDs en diferentes secuencias:
int saltar=0;
voidsetup() {
pinMode (AQ, INPUT) ;
Fi3) {
salta:
}
while (digitalRead(A0)==HIGH) {}
}
if (saltar==0) {
secuencial () ;
}
if (saltar==1) {
secuencia2() ;
,
if(saltar==2) {
secuencia3() ;
t
if (saltar==3) {
secuenciad () ;
,
Ahora nos ocuparemos de programar las diversas secuencias de
encendido para los 8 LEDs. Para la primera secuencia usaremos lo siguiente
void secuencial () {
for (int i=2; i<=9; itt){ //Pin 2 al 9
digitalWrite(i, HIGH);
digitalWrite(i-1,LOW) ;
delay (50) ;
[Link]
ARDUINO
1956. TRABAJAR CON LEDS
196
d
for (int i=9; i>=2; i--){
digitalWrite(i, LOW);
digitalWrite(i-1,HIGH) ;
delay (50) ;
}
}
Para crear la segunda secuencia, utilizaremos el sigu
te codigo
void secuencia2 () {
int k=11;
for(int i=6; i<=9;it+t){
digitalWrite(i, HIGH);
digitalWrite(k-i, HIGH) ;
delay (50) ;
}
for(int i=9; i>=2;i--){
digitalWrite(i, LOW) ;
digitalWrite(k-i, LOW);
delay (50) ;
}
}
Ahora crearemos la secuencia de encendido numero tres, podemos.
utilizar un cédigo como el siguiente:
void secuencia3() {
for(int i=2; i<=9; itt) {
digitalWrite(i,HIGH) ;
delay (50) ;
}
for(int i=9; i>=2;i--){
digitalWrite(i,LOW) ;
delay (50) ;
}
}
[Link][users] ARDUINO
Finalmente, necesitamos una cuarta secuencia, podemos copiar el
siguiente codigo de ejemplo:
void secuencia4() {
Ly
for(int i=2; i<=5;i+t){
digitalWrite (i,HIGH) ;
digitalWrite (k-i, LOW) ;
}
delay (150) ;
for(int i=2; i<=5;i++) {
digitalWrite(i,LOW) ;
digitalWrite (k-i, HIGH) ;
}
delay (150) ;
}
int
Una vez que creamos las secuencias de encendido, las probamos
para ver su funcionamiento antes de implementar el circuito general
También es posible efectuar algunas modificaciones que nos entreguen
variaciones en el encendido de los LEDs o rotarlos sin necesidad de que
debamos usar el pulsador. Las posibles combinaciones son infinitas.
BE clue me meet) t erg
‘Mi Lograremos
diferentes:
variaciones teniendo
‘como base la
creacion de distintas
secuencias de
encendido, a las
que accederemos
mediante un
pulsador o en forma
automatica,
[Link] 1976. TRABAJAR CON LEDS [users]
ER ESN
En este capitulo revisamos qué son los LEDs y para qué sirven.
Analizamos sus principales caracteristicas y aprendimos la forma en que
podemos aprovecharlos en nuestros proyectos con Arduino. Trabajamos
en diversos proyectos con LEDs, en los que aprendimos a conectarlos
de diferentes formas, ya sea directamente o mediante un protoboard,
generamos secuencias de encendido incorporando varios LEDs y
creamos sketchs completos que subimos a la placa Arduino UNO para
probar su funcionamiento.
198 [Link]Ya pudimos trabajar en nuestros primeros proyectos basicos
utilizando Arduino, para ello hicimos uso de una tarjeta
Arduino UNO junto a algunos componentes sencillos.
En este capitulo conoceremos qué son los sensores y para
qué sirven, ademas, veremos como pueden ayudarnos a
complementar nuestros proyectos.7. SENSORES aoa
{QUE ES UN SENSOR?
En pocas palabras, podemos definir un sensor como un dispositive
que tiene la capacidad de medir magnitudes fisicas 0 quimicas para
convertirlas en magnitudes eléctricas, que pueden ser manejadas por
una placa como Arduino.
Las magnitudes fisicas 0 quimicas que son detectadas por un
sensor se denominan variables de instrumentacién, estas son muy
diversas, por ejemplo: temperatura, distancia, humedad, movimiento,
presion, desplazamiento, ph, entre muchas otras.
‘°
| Fae)
MI Existe una gran cantidad de
sensores, preparados para trabajar
con diferentes magnitudes o
variables de instrumentacion.
200 [Link]as ARDUINO
El sensor tomara estas variables de instrumentacién y las convertiré en
magnitudes eléctricas, como resistencia eléctrica, capacidad eléctrica, tension 0
corriente, etcétera
Un sensor puede definirse mediante diferentes caracteristicas, como
las que mencionamos a continuacion:
RANGO DE MEDIDA
Se trata del dominio en la magnitud medida donde puede aplicarse el sensor, es decir,
corresponde al espacio en el que el sensor es capaz de detectar la magnitud o la
variable de instrumentacién para la que fue creado.
PRECISION
Esta caracteristica corresponde al error de medida maximo esperado cuando se utiliza
un sensor especifico para exponerlo a una variable de instrumentacién.
OFFSET 0 DESVIACION DE CERO
Es el valor de la variable de salida cuando el sensor se enfrenta a una variable de
entrada nula 0 cero. Sinos enfrentamos a un rango de medida que no presenta un
valor nulo para la variable de entrada, puede establecerse otro punto de referencia
para lograr la definicion de offset.
RESOLUCION
Se trata de la minima variacién de la magnitud de entrada que puede ser detectada en
la salida del sensor.
RAPIDEZ DE RESPUESTA
Esta caracteristica se relaciona con la existencia de un tiempo fijo o la dependencia de
cuanto varie la magnitud que deseamos medir con el sensor.
DERIVAS
Se trata de magnitudes que son capaces de influir en la variable de salida que es
entregada por el sensor utilizado. Por ejemplo, condiciones ambientales, como
humedad 0 temperatura, o desgaste del sensor.
REPETITIVIDAD
Se relaciona con los errores esperados cuando repetimos la misma medida en varias
oportunidades.
[Link] 2017. SENSORES fusers]
202
Clasificacion
Los sensores, dependiendo de los datos de salida que entregan, pueden
clasificarse en dos grandes grupos: digitales y analégicos.
En primer lugar, debemos entender que los sensores digitales
son aquellos capacitados para cambiar de estado de cero a uno o de
uno a cero (HIGH, LOW) cuando se enfrentan a un estimulo que sean
capaces de leer. No pueden ofrecer estados intermedios, y los valores
de tension correspondientes son solo dos: 5 V y 0 V, aunque también
podrian presentarse valores muy cercanos.
I En esta imagen podemos
apreciar un sensor de luz
E1BH1750 es un sensor de
intensidad que puede medir
la luz ambiente.
En correspondencia, una sefial eléctrica digital es interpretada por
los microcontroladores como un valor binario, es decir, 0 - 1 0 FALSE -
TRUE 0 LOW - HIGH
Al trabajar con Arduino el 0 0 LOW se corresponde con el intervalo
0V-1 Vy el 1 oHIGH corresponde al intervalo 2 V ~ 5 V. Es importante
tener en cuenta que un valor entre esos intervalos es interpretado con
un solo valor binario.
Hasta aqui tenemos todo claro, existen sensores que son capaces de
entregarnos magnitudes que se ajustan a 0 y 1, pero la verdad es que,
en nuestro contacto con el mundo exterior, rara vez nos encontraremos
solo con la posibilidad de medir este tipo de magnitudes, por ejemplo,
la temperatura no va solo de frio a caliente, o la humedad no va desde
hiimedo a no hiimedo, es decir, existen magnitudes que nos ofreceran
lecturas de salida que se extienden en una linea donde existen diversos
www [Link]ca ARDUINO
valores consecutivos. Para nuestra referencia a la temperatura,
podemos encontrar valores que van, por ejemplo, desde -5 grados
hasta 35 grados, dependiendo del rango de medida del sensor que
estemos utilizando.
Como ya hemos visto, los sensores digitales son capaces de
transformar los datos que extrae del entorno en un valor que va desde
0 Va5 \V, catalogandolos como 0 y 1 0 LOW y HIGH. Por otra parte,
los sensores analogicos son capaces de diferenciar cualquier valor
intermedio, por lo tanto, resultan adecuados para medir variables de
instrumentacion, como temperatura, ph o luz, entre otras magnitudes.
Aqui vemos un
sensor que es capaz
de detectar gas.
Sa
-
a
Cv
oe
oe
‘En el trabajo
Una sefial analogica es capaz de tomar con Arduino
cualquier valor en su voltaje, se trata de una
seftal que se puede representar mediante podemos
funciones matematicas, por ejemplo, la sefial incorporar
eléctrica que utilizamos en casa, pues se trata Ae
de una sefial que presenta una onda senoidal. sensores digitales
En la Tabla 1, conoceremos algunos ejemplos y analégicos.”
de sensores digitales y analégicos.
[Link] 2037. SENSORES ca
SENSORES DIGITALES Y ANALOGICOS
ANALOGICO
Posicién lineal y angular Potenciometro Sensor Hall
Desplazamiento y deformacion _ Galga extensiométrica
Magnetorresistivo
Velocidad lineal y angular Dinamo tacométrica Detector inductivo
Aceleracion Acelerémetro
Presion Piezoeléctrico Manometro digital
Caudal Turbina
Temperatura Termistor NTC
Proximidad Capacitive
Inductivo
Fotoeléctrico
De luz Fotorresistencia
IW En esta tabla vemos algunos ejemplos de sensores digitales y analégicos.
ENTRADAS EN ARDUINO
Como sabemos, la placa Arduino no solo es capaz de enviar senales,
sino que ademas puede leerlas, para ello utilizara entradas tanto
analégicas como digitales ubicadas en los extremos de las tarjetas. El
principal objetivo de estas entradas es recibir datos de los sensores
conectados a la placa y también comunicarse con los shields, que
conoceremos en un capitulo posterior.
Para seguir la linea que Ilevamos en esta obra, presentaremos las
entradas analogicas y digitales considerando la placa Arduino UNO, que
es la que venimos utilizando en nuestros proyectos.
204 [Link]ma ARDUINO
Entradas analégicas
En la placa Arduino UNO, las entradas analogicas corresponden a los
pines AO al AS, es decir Analogico 0, Analégico 1, Analégico 2, etcétera.
Estas entradas son capaces de recibir y leer valores de tension que
van desde 0 Va 5 V, con una resolucion de 1024 0 10 bits.
i En esta imagen
hemos indicado
la posicién de las
é [.0) UNO entradas analégicas
bel eat de la placa Arduino
ener sy . Bi) UNO. Como vemos,
se trata de los seis,
pines rotulados desde
el AO al AS.
ENTRADAS ANALOGICAS
La sintaxis basica de leer la informacion desde una de estas entradas
es la siguiente:
leer = analogRead (pin) ;
Por supuesto, debemos reemplazar ciertas partes de este codigo
dependiendo de lo que deseamos ejecutar. Por ejemplo, sera necesario
escribir el nombre de la variable donde almacenaremos la lectura en
lugar de leer, y reemplazar pin por el ntimero de pin que leeremos (este
pin va desde el 0 hasta el 5), por ejemplo:
valorl = analogRead(2) ;
Este cédigo almacenara la lectura que corresponde a la entrada
analégica 2, en la variable denominada valor1.
[Link] 2057. SENSORES cea
206
Leer un sensor de temperatura
Para ejemplificar el trabajo con las puertas analogicas, utilizaremos el
sensor analégico de temperatura LM35, que conectaremos a la placa
Arduino UNO, y leeremos los valores que nos presenta, utilizando el
monitor serie del Arduino IDE.
El sensor que utilizaremos, el LM35, ofrece una precision de 0.5 °C
mientras que su sensibilidad es de 10 mV/°C, esta calibrado para trabajar
con grados Celcius y puede leer valores entre los -50 °C y los 150 °C.
Para ejemplificar su uso, realizaremos una pequeiia aplicacion que
requiere de pocas conexiones, solo precisamos la placa Arduino, un
protoboard, algunos cables de puente y el sensor LM35.
El montaje de los componentes es bastante facil, debemos tener
en cuenta que la pata +Vs debe conectarse al pin 5V, la pata Vout se
conectara al pin que utilicemos para realizar la lectura, y la pata restante
debera conectarse al pin GND.
Una vez que hemos realizado las conexiones adecuadas, trabajaremos
en el codigo, para ello nece:
Para comenzar declaramos las variables adecuadas, una para almacenar
la temperatura y otra para declarar el pin de entrada que usaremos:
taremos iniciar el Arduino IDE.
float leer-temp;
intpinentrada = 0;
Como vemos, la variable leer-temp es de tipo float, porque
necesitamos trabajar con valores decimales.
Para continuar, abrimos el puerto serial; como aprendimos en el
capitulo 5, esto lo realizamos en setup()
Serial. begin (9600) ;
Lo siguiente sera escribir las lineas que nos permitan leer el pin
adecuado, transformar el valor de lectura a grados y escribirlo por el
puerto serial. Aunque parece una tarea bastante compleja, puede ser
realizada en unas pocas lineas de codigo:
leer-temp = analogRead(pinentrada) ;
[Link]ea ARDUINO
+ Conexiones para el sensor LM35
En este esquema podemos verificar la manera correcta de efectuar las conexiones para, en
forma posterior, leer los datos entregados por el sensor LM35.
Lectura analogica
Antes de leer la informacién desde una entrada analégica, debemos tener en cuenta
algunos conceptos importantes. La lectura se encargara de entregarnos un valor que
puede estar entre 0 y 1023. Este valor final ser proporcional al nivel de la sefal de
entrada que se detecte en el pin. Por ejemplo, si tenemos una entrada nula, el valor
que veremos es cero, sila entrada es de 2.5 V, el valor presentado sera 511, por
otra parte, para una lectura de 5 V, el valor que veremos sera de 1023.
[Link] 2077. SENSORES
208
leer-temp = (leer-temp / 1023 * 5 / 0.01);
[Link] (leer-temp) ;
[Link](* grados \n”);
delay (2000) ;
}
El cédigo completo tendra el siguiente aspecto:
float leer-temp;
intpinentrada = 0;
voidsetup ()
{
Serial begin (9600) ;
,
voidloop ()
{
leer-temp = analogRead(pinentrada) ;
leer-temp = (leer-temp / 1023 * 5 / 0.01);
[Link] (leer-temp) ;
[Link](* grados \n”);
delay (2000) ;
)
Como ya tenemos experiencia en la carga de sketchs a la placa
Arduino, lo tinico que nos queda es conectar la placa a la PC y efectuar
los pasos necesarios para cargar el cédigo.
Con la carga del sketch terminada y las conexiones correctamente
realizadas, desplegamos el Monitor serial y veremos las lecturas
que son realizadas a través del pin digital, estas corresponden a las
mediciones efectuadas por el sensor de temperatura, con una espera de
dos segundos entre cada medicién. Si deseamos modificar esta espera,
sera necesario cambiar el valor contenido en la linea
delay (2000) ;
[Link]aoa ARDUINO
/dev/ttyACMO
i Enviar
15.15 grados
17.11 grados
18,08 grados
IEEn este esquema verificamos la n
posterior, leer los datos entregados por el sensor LM35,
inera correcta de efectuar las conexiones para, en forma
Un c6digo que puede servirnos de base para trabajar con cualquier
sensor analégico es el que se describe a continuaci6n, solo sera
necesario cambiar la relacion voltaje/variable. Para ello, es preciso
considerar tres pasos principales: ADC del voltaje analégico procedente
del sensor, obtener el voltaje del sensor y, finalmente, obtener la
variable del sensor. El codigo base, disponible en [Link].
es, es el siguiente:
floatade;
float voltaje;
float variable;
floatrel_voltaje_variable = 100.00;
voidsetup ()
{
[Link](9600) ;
}
voidloop ()
{
adc = analogRead(pin_sensor) ;
[Link] (adc) ;
voltaje = adc * 5 / 1023;
[Link](voltaje) ;
[Link] 2097. SENSORES waa
variable = voltaje * rel_voltaje_variable;
Serial. printin (variable) ;
delay (1000) ;
}
Entradas digitales
Las entradas fitales corresponden a los pines | al 13, es decir, los
mismos que las salidas digitales. Se trata de entradas que, a diferencia de
las analdgicas, solo son capaces de comprender dos estados de sefial de
entrada: HIGH y LOW o lo que es igual 1 y 0, o valores cercanos a 5 Vy 0 V.
Los pines digitales se encuentran configurados como entradas en
forma predeterminada, pero también es posible hacerlo en forma
manual y, para ello, utilizaremos el siguiente codigo:
PpinMode (pinentrada, INPUT) ;
Por otra parte, si necesitamos almacenar en una variable los valores
captados en una entrada digital, debemos usar el codigo:
variable2 = digitalRead (pinentra
Con las conexiones
realizadas y el sketch
cargado, utilizamos
el monitor serial para
ver las mediciones de
temperatura informadas
Por el sensor LM35.
210 [Link]fusers] ARDUINO
SENSORES PARA ARDUINO
Hasta este punto ya conocimos el funcionamiento y las caracteristicas
de los sensores; también, hemos apreciado la forma en que debemos
conectarlos y acceder a sus lecturas desde Arduino.
Es importante considerar que existe una gran cantidad de sensores
compatibles con Arduino disponibles en el mercado; por lo general,
se trata de elementos que poseen un bajo costo por lo que integrarlos
en nuestros proyectos no requerira que desembolsemos una gran
cantidad de recursos.
Para iniciarnos en el uso de los sensores y su conexidn con Arduino,
puede ser una buena idea adquirir un kit de sensores. Estos paquetes
de elementos incorporan variadas opciones incluyendo sensores, pero
también actuadores compatibles con Arduino.
No es el objetivo de este libro realizar un repaso completo por todos
los sensores existentes en el mercado, tarea que, por lo demas, es
casi imposible, pues cada dia aparecen nuevos sensores o versiones
actualizadas que poseen nuevas caracteristicas. En este apartado, mas
bien buscamos presentar una pequefia seleccién de sensores para que
el lector sea capaz de identificarlos y conocer su funcionamiento al
tiempo que los utiliza en sus proyectos.
En esta imagen vemos
tno de los kits de sensores
mas populares para Arduino.
Se trata de un conjunto de
37 sensores y actuadores
compatibles con Arduino,
[Link] ail7. SENSORES ca
Sensor de temperatura KY-001
El médulo KY-001 integra un sensor DS18B20, que permite medir
la temperatura. Se trata de uno de los sensores mas utilizados en
proyectos de electronica, por lo que su documentacion es bastante
amplia. Entre los usos mas populares de este sensor, encontramos la
posibilidad de medir la temperatura ambiente de una habitacion, de un
automovil, del interior de una computadora, entre otras.
Sus principales caracteristicas son las siguientes:
> Rango de voltaje: 3.0Va5.5V
> Rango de temperatura: -55 °C a + 125 °C 0 67 °F a 257 °F
> Rango de precision: +0.5 °C
Para utilizar este sensor, necesitaremos descargar la libreria OneWire;
luego la incluimos en el sketch y, en este caso, iniciamos en el pin 10,
de la siguiente forma:
#include
OneWireds (10) ;
En esta imagen se presenta el
médulo KY-001, que integra un
sensor de temperatura DS18B20;
es uno de los mas utilizados en
proyectos de electronica.
212 [Link]ao ARDUINO
Sensor de vibracion KY-002
El funcionamiento basico de este modulo sensor de vibraciones es
similar a un switch, pues es capaz de detectar una vibracion y cierra un
circuito. Si nos basamos en esto, podremos dotar a nuestro proyecto 0
placa Arduino de la capacidad de detectar movimientos.
Para utilizar este modulo, debemos conectarlo al pin 10 de la placa
Arduino; al detectar una vibracién, puede encenderse un LED que se
encuentre conectado al pin 13.
Un sensor de vibracion
permite cerrar un circuito
cuando se detecta una
vibracién, de esta forma
se puede encender un LED
ara indicar la presencia de
‘movimiento.
Un ejemplo del cédigo que es posible usar con este sensor de
vibracion es el siguiente, se trata del cédigo ofrecido para probar el
funcionamiento del sensor KY-002.
intLed = 13 ;
int Shock = 10;
int val;
voidsetup ()
{
pinMode (Led, OUTPUT) ;
pinMode (Shock, INPUT) ;
}
[Link] 237. SENSORES aaa
voidloop ()
{
val = digitalRead (Shock) ;
if (val == HIGH)
{
digitalWrite (Led, LOW);
} else {
digitalWrite (Led, HIGH);
z
Sensor de campo magnético KY-003
Este modulo incorpora un sensor de efecto Hall, que nos permite
detectar la aparicion de campos magnéticos. En presencia de un campo
magnético se creara una sefial en alto, que, dependiendo del codigo
utilizado, puede encender un LED.
Los sensores de tipo Hall son muy utilizados tanto en la industria
automotriz como en la medicién de fluidos o en la deteccién de
metales, entre otras aplicaciones.
BEI médulo KY-003
incorpora un sensor de campo
magnético que funciona segun
los principios del efecto Hall
214 [Link]oa ARDUINO
Su principal ventaja es que funcionan a i
distancia, aunque precisan estar cerca del Los sensores de
campo magnético, pero sin contacto fisico. campo magnético
El principio de funcionamiento de este tipo ;
de sensores se relaciona con la circulacion de no necesitan
una corriente eléctrica en un semiconductor establecer
en presencia de un campo magnético; de esta _
forma, los electrones seran desviados gracias al contacto fisico
campo magnético, ofreciendo una tension que para detectar
es perpendicular a la corriente y a dicho campo. .
Al medir esta tension que se origina por el alteraciones
efecto Hall, es posible trabajar con sensores y magnéticas.”
medidores de campo magnético. Un ejemplo de
c6digo que nos permite trabajar con este sensor
de campo magnético es el que vemos a continuacién
intLed = 13
int SENSOR = 10 ;
int val ;
voidsetup ()
‘
pinMode (Led, OUTPUT) ;
pinMode (SENSOR, INPUT) ;
)
voidloop ()
{
val = digitalRead (SENSOR) ;
if (val == RIGH)
{
digitalWrite (Led, HIGH);
v4
digitalWrite (Led, LOW);
)
)
[Link] 2157. SENSORES ca
216
Sensor emisor infrarrojo KY-005
En nuestro entorno, estamos en contacto con sensores infrarrojos
en diversas ocasiones, por ejemplo, en tareas tan sencillas como
manipular televisores o reproductores de musica.
El modulo KY-005 incorpora un sensor emisor infrarrojo y posee las
siguientes caracteristicas:
CORRIENTE: 30 a 60 mA
CORRIENTE DE PULSO: 0.3a1A
VOLTAJE INVERSO: 5 V
POTENCIA DE DISIPACION: 90 mW
RANGO DE TEMPERATURA: -25 a + 80 °C
TEMPERATURA DE ALMACENAMIENTO: -40 a +100 °C
>
>
>
>
>
>
En esta imagen podemos ver el
médulo KY-005, se trata de un sensor
emisor de infrarrojo.
Un ejemplo de cédigo que puede utilizarse con el médulo KY-005 es
el siguiente:
# Include
int RECV_PIN = 11;
IRrecvirrecy (RECV_PIN) ;
decode_resultsresults;
voidsetup ()
{
[Link] (9600);
[Link] ();
[Link]os ARDUINO
,
voidloop () {
if ([Link] (éresults)) {
[Link] ([Link], HEX) ;
[Link] ();
,
,
Sensor ultrasénico HC-SRO4
A diferencia de lo que podemos pensar, este tipo de sensor es
adecuado para medir distancias y, también, esquivar obstaculos. Se
trata de un sensor bastante versatil, cuyas principales aplicaciones se
relacionan con la robdtica.
Su funcionamiento se basa en la emision de ultrasonidos, que no
pueden ser detectados por el oido humano. Esto se realiza a través
de uno de los dos cilindros que se presentan en el sensor: el sonido
enviado rebotara en los objetos y sera captado por el otro cilindro
que compone al sensor.
Uno de los usos mas comunes de este sensor es la medicion de
distancias, por lo que debemos considerar su rango de operaci6n,
pues ofrece una sensibilidad que va entre los 2 y los 400 cm, con una
precision de 3 mm.
La informacion que nos entrega este sensor es el tiempo que
transcurre entre la emisi6n del ultrasonido y su recepcién, por la
misma razon, debemos proceder a traducir esto en una distancia.
BEI sensor ultrasénico
HC-SRO4 se compone
de dos cilindros, uno
de los cuales emitira un
ultrasonido que rebotard
en los objetos y sera
captado a través del
otro cilindro.
[Link] 2177. SENSORES
Para lograrlo, tengamos en cuenta que la velocidad del ultrasonido en
el aire presenta un valor de 340 m/s, o lo que es igual 0,034 cm/microseg.
De esta forma, para proceder a calcular la distancia, debemos
considerar que v=d/t (velocidad es igual a la distancia dividida en
tiempo). Por lo tanto d=vt
Teniendo esto en cuenta, podemos probar el funcionamiento del
sensor ultrasénico realizando las conexiones adecuadas. Este sensor
presenta cuatro pines, que deben ser conectados de la siguiente forma’
» VCC debe conectarse a la salida de 5 V de Arduino.
> Trig debe conectarse al pin digital de la placa que utilizaremos para enviar
el pulso ultrasénico.
» Echo debe conectarse al pin digital que recibira el eco del pulso enviado.
> GND debe conectarse a tierra.
Finalmente, veamos un ejemplo del cédigo que utilizaremos con el
sensor ultrasonico HC-SR04
long distancia;
long tiempo;
voidsetup() {
Serial. begin (9600) ;
pinMode (9, OUTPUT) ;
pinMode (8, INPUT) ;
}
voidloop () {
digitalwrite(9,LOW) ;
delayMicroseconds (5) ;
Sensor de humo
Se trata de un sensor bastante utilizado en sistemas de deteccidn de incendios. En
esencia, este sensor es capaz de detectar humo y gas. Se puede calibrar mediante
el uso de un potenciémetro, y la sefial de salida que entrega puede ser conectada a
una entrada analdgica de una placa Arduino.
218 [Link]ARDUINO
digitalwrite(9, HIGH);
delayMicroseconds (10) ;
tiempo=pulseIn(8, HIGH) ;
distancia= int (0.017*tiempo) ;
[Link] ("Distancia “);
[Link] (distancia) ;
[Link](" cm”);
delay (1000) ;
}
SMM Cem celta em Clerc WUce Te)
En esta imagen vemos una representacion de la conexién que debemos realizar entre el
‘sensor ultras6nico y la placa Arduino.
[Link] 2197. SENSORES ca
220
Sensores LDR
El sensor LDR o fotorresistor es un tipo de sensor capaz de variar
su resistencia en funcién de una magnitud fisica. En realidad se
trata de un componente cuya resistencia varia con la cantidad de luz
que percibe. Es utilizado para medir la iluminaci6n en dispositivos
electrénicos: si existe mas luz, menor sera la resistencia eléctrica; si
existe menos luz, la resistencia eléctrica sera mayor.
Un cédigo que podemos usar como ejemplo para trabajar con un
sensor LDR es el siguiente:
intLed1
intLed2 = 3;
intLed3 =
intpinLDR = 0;
intvalorLDR = 0;
voidsetup ()
{
pinMode(Ledi, OUTPUT) ;
PpinMode(Led2, OUTPUT) ;
pinMode (Led3, OUTPUT) ;
Serial begin (9600) ;
}
voidloop()
{
digitalwrite(Ledi, LOW);
digitalWrite(Led2, LOW);
digitalWrite(Led3, Low);
valorLDR= analogRead (pinLDR) ;
[Link](valorLDR) ;
if(valorLDR> 256)aos ARDUINO
{
digitalWrite(Led1, HIGH) ;
}
if(valorLDR> 512)
{
digitalwrite(Led2, HIGH) ;
}
if(valorLDR> 768)
{
digitalWrite(Led3, HIGH) ;
}
delay (200) ;
}
[Link] 2217. SENSORES fusers]
ERRZ ESA
En este capitulo conocimos en detalle qué es un sensor y para qué
sirve. Analizamos las caracteristicas de este tipo de componentes y
los clasificamos en dos grandes grupos: los sensores analégicos y
los sensores digitales. Conocimos las entradas analdgicas y digitales
en Arduino y practicamos la forma en que podemos leer un sensor de
temperatura conectado a la placa Arduino UNO. Después analizamos en
detalle algunos de los sensores disponibles en el mercado, y revisamos
ejemplos de su uso y del sketch que podemos utilizar en nuestros
primeros proyectos.
222 [Link]Deteccion 08
de luz
En el capitulo anterior conocimos qué son los sensores y
como podemos aprovecharlos en nuestros proyectos con
Arduino. En esta ocasi6n, trabajaremos en detalle con un
sensor LDR, para lograr proyectos que sean capaces de
efectuar la detecci6n del nivel o la intensidad de la luz.8, DETECCION DE LUZ
224
FOTORRESISTENCIA
Ya tenemos los conocimientos basicos que nos permitiran enfrentar un
proyecto algo mas complejo. Sabemos crear nuestros primeros sketchs
y también subirlos a una placa Arduino, aprendimos a compilar los
programas y a detectar las posibles fallas que pudieran presentarse.
Con todo esto sobre la mesa, ademas de la informacin que hemos
recabado sobre los diversos componentes que pueden ser utilizados
en proyectos electronicos, podemos realizar un proyecto como el que
presentamos a continuacién.
En el capitulo 7 de este libro conocimos los sensores, vimos qué
son y para qué podemos utilizarlos, aprendimos que existe una gran
gama de sensores, pero analizamos las caracteristicas esenciales de
algunos de ellos, por ejemplo, de los sensores LDR.
Este tipo especifico de sensor, denominado sensor LDR o
fotorresistencia es capaz de variar su resistencia en funcién de la
luz que recibe, por esta razén lo utilizaremos en un proyecto que nos
permita medir el nivel de luz existente en un momento determinado.
Las fotorresistencias pueden
encontrarse en diversos tamafios,
pero todas cumplen con una
funcion esencial, modificar su
@ eo resistencia en funcidn de la luz a la
ue son expuestas.
Sabemos que una fotorresistencia no es mas que un sensor de luz
de tipo resistivo, por lo tanto, es capaz de cambiar su valor segin
la cantidad de luz que incide sobre ella. Teniendo esto en cuenta, la
conectaremos a Arduino para leer la cantidad de luz que existe en el
ambiente ya sea interior como exterior.
Funcionamiento
Para entender el funcionamiento de una fotorresistencia, es necesario
conocer la relacién matematica que existe entre la iluminancia y la
resistencia de un sensor LDR, esto se expresa en una funcién matematica:
[Link]mee ARDUINO
wa)
Al analizar esta formula, saltan a la vista algunos elementos
importantes, y es necesario definirlos: RO corresponde a la resistencia
a una intensidad 10, ambos valores son conocidos.
Por otra parte, la Constante gamma corresponde a la pendiente de
la grafica logaritmica o la pérdida de resistencia por década. Su valor
Lipico es de 0.5 a 0.8
Si queremos obtener valores mas precisos para la fotorresistencia
que deseamos utilizar, es una buena idea consultar el datasheet
que corresponde al componente, por ejemplo, para la familia de
fotorresistores GLSS corresponden los datos que mostramos aqui.
$8 DATOS DE LOS FOTORRESISTORES GL55
MODELO GL5516 GL5528 GL5537-1 GL5537-2 GL5539 GL5549
150
150 150 150 150 150
30° + 70° -30° + 70° -30°+ 70° -30° + 70° -30° + 70° -30° + 70°
540, 540 540, 540 540 540
510 10-20 20-30 30-50 50-100 100-200
500 1000 2000 3000 5000 10000
0.6 06 07 08 09
2a) 25 25 25 25
IH Datos correspondientes a las fotorresistencias de la familia GL55.
[Link] 2258. DETECCION DE LUZ eS
En todo caso, debido a las variaciones propias del proceso de
construccién de estos componentes, no podemos utilizar esta
informacion en forma absoluta. La recomendacién es efectuar un
proceso de calibracién preliminar, de esta forma, enfrentaremos la
posibilidad de que pequefas diferencias entre componentes den como
resultado grandes variaciones en el momento de efectuar la medicién
Otros componentes necesarios
La fotorresistencia se convierte en el componente principal para la
realizacion de este proyecto. Utilizaremos una fotorresistencia de
la familia GL55, pues estas se encuentran entre las mas comunes y
accesibles y, ademas, necesitaremos contar con otros componentes.
Ya sabemos que la resistencia LDR, en este caso de la familia GL55,
sera el componente principal, pero vamos a definir otros elementos que
también son necesarios.
Como siempre, contaremos con una placa Arduino. Podemos elegir
entre muchas opciones disponibles en el mercado, pero, siguiendo el
trabajo que hemos realizado en este libro, utilizaremos la Arduino UNO.
Ya hemos visto que se trata de una placa bastante potente y versatil, por
eso no tendremos problemas a la hora de implementar las conexiones y
los cédigos necesarios.
No es posible efectuar la conexi6n de la placa Arduino a la
fotorresistencia en forma directa, o por lo menos no es lo recomendado,
por esta razon también utilizaremos un protoboard. Este elemento nos
permitira conectar en forma precisa todos los componentes involucrados
Diferencias de construccion
Existen muchas fotorresistencias diferentes; sus variaciones no solo dependen del
fabricante, sino también del material utilizado en su construcci6n. Las resistencias
LDR solo reducen su resistencia si existe una radiacién luminosa situada en una
determinada banda de longitudes de onda. Por ejemplo, las construidas utilizando
sulfuro de cadmio serdn sensibles a todas las radiaciones luminosas visibles,
mientras que las que han sido construidas con sulfuro de plomo solo seran
sensibles a las radiaciones infrarrojas.
226 [Link]ARDUINO
en el proyecto y trabajar con mayor comodidad. Ademas, debemos.
contar con una resistencia y varios cables de puente.
Con estos elementos basicos en nuestro poder, estaremos listos para
iniciar la implementacién del proyecto.
PLACA ARDUINO UNO
- © | RESISTENCIA
CABLES DE PUENTE
FOTORRESISTENCIA
1 Componentes que necesitamos para desarrollar este proyecto.
EL PROYECTO
Para entender lo que perseguimos con la ejecucién de este proyecto,
debemos profundizar atin més en las caracteristicas del componente
principal: el fotorresistor.
Un fotorresistor o Light Dependent Resistor es un dispositive capaz
de variar su resistencia en funcidn de la luz que recibe, por esta raz
n,
lo utilizaremos en conjunto con las entradas analégicas de la placa
Arduino, para obtener una estimacién del nivel de luz existente.
La constitucién de un fotorresistor se basa en la presencia de un
semiconductor, por lo general de sulfuro de cadmio (CdS). De esta
forma, cuando la luz incide sobre él, algunos de los fotones que lo
constituyen seran absorbidos; debido a esto los electrones pasan ala
banda de conduccién, lo que finalmente disminuira la resistencia que
presenta el componente o fotorresistor.
[Link] 2278. DETECCION DE LUZ ee
De esta forma, el fotorresistor es capaz de disminuir su resistencia
a medida que aumenta la luz que se proyecta sobre él, Sus valores
tipicos seran de 1 Mohm, cuando enfrentamos el resistor a la oscuridad
total, y de 50-100 Ohms, cuando se enfrenta a la luz brillante.
BUM a ct ss)
Los materiales fotosensibles més utiizados para la fabricacién
de las resistencias LOR son el sulfuro de talo, e! sulfuro de cadmio,
el sulfuro de plomo y el seleniuro de cadmio. En esta imagen verios
‘sus simbolos electrénicos.
Debemos tener en cuenta que la variacién de la resistencia en un
fotorresistor es bastante lenta; por esta razén, no es un elemento
eficiente cuando deseamos medir variaciones de luz rapidas, por
ejemplo, las que podria producir una fuente de luz artificial que se
encuentra alimentada por corriente alterna. La variacién de la resistencia
iré de 20 a 100 ms segun el modelo de fotorresistencia que utilicemos.
Aunque esto puede parecer una enorme desventaja, dependiendo del
proyecto en que estemos trabajando sera mas bien una caracteristica
deseable, pues la fotorresistencia es un sensor que nos ofrece una
gran estabilidad. Pero siempre debemos considerar que no es posible
aplicarlo a cualquier tipo de proyecto.
Por ejemplo, si deseamos medir la iluminancia, un fotorresistor
no sera adecuado, debido a su limitada precision en variaciones de
Aplicaciones de las fotorresistencias
Aunque en esta ocasi6n utilizaremos una fotorresistencia para crear un proyecto
bastante sencillo, su aplicacién puede apoyarnos en diversos proyectos avanzados,
por ejemplo, en iluminacién, apagado y encendido de alumbrado mediante
interruptores crepusculares, en la implementacion de alarmas, para manipular
camaras fotograficas y también en el funcionamiento de medidores de luz. Los
fotorresistores que pertenecen a la clasificacién infrarroja pueden ser utilizados
tanto en el control de maquinas como en procesos de deteccidn de objetos.
228 www [Link]ARDUINO
luz rapida, pero, en cambio, si deseamos medir la intensidad de la
luz ambiental tanto en interiores como en exteriores, seguro estamos
frente al sensor adecuado
Teniendo en cuenta los puntos que mencionamos hasta este
momento, utilizaremos este sensor LDR para averiguar medidas
cuantitativas sobre el nivel de luz en interiores y en exteriores.
+ Conexiones para el sensor LM35
a
>
S Mi En esta imagen
2 podemos ver el
esquema que
corresponde a la
conexion de una
fotorresistencia con
la placa Arduino UNO.
Se trata del esquema
eléctrico que usaremos
para este proyecto.
229
[Link]8. DETECCION DE LUZ
Para lograrlo conectaremos este sensor a
\
Debemos una entrada analogica de la placa Arduino
conectar el sensor
UNO mediante el uso de un protoboard. Luego,
podremos jugar con cl cédigo para, por ejemplo,
LM35 auna hacer reaccionar un LED cuando el nivel de luz
exceda un limite que hayamos establecido con
entrada anal6gica — anterioridad o para acceder a informacién sobre la
deArduino!” lectura del nivel de iluminacion que es detectada
230
por el sensor LDR.
Resultados esperados
Considerando lo que hemos aprendido sobre el funcionamiento y la
aplicaci6n de los LEDs y también sobre el uso del Monitor serie del
Arduino IDE, perseguiremos cuatro resultados basicos en el trabajo que
llevaremos a cabo en este proyecto.
> [Link] un sketch que nos permita activar un LED solo cuando la
intensidad de la luz legue a un nivel que definiremos con anticipacién.
> 2. Implementar el codigo necesario para hacer parpadear un LED mientras
el sensor LDR conectado reciba la cantidad suficiente de luz.
> 3. Implementar el sketch adecuado para leer los valores que corresponden
al nivel de iluminacién detectado por la fotorresistencia conectada a
nuestro circuito.
> 4. Encender algunos LEDs conectados al protoboard, dependiendo de la
intensidad de luz que sea detectado por el sensor LDR.
CONECTAR EL CIRCUITO
Ahora que ya conocemos el proyecto que deseamos Ilevar a cabo
y también los resultados que esperamos, es momento de efectuar
la conexion del circuito. En primer lugar reunimos los elementos
necesarios, es decir, la placa Arduino UNO, la fotorresistencia, una
resistencia y algunos cables de puente. Con todos los elementos
dispuestos para trabajar, solo debemos seguir las instrucciones que
presentamos en el siguiente Paso a paso.
[Link]ARDUINO
Paso a paso: Conectar el circuito
0
02
Para comenzar, conecte la fotorresistencia a la placa Arduino UNO, debe hacerlo en u
espacio central, que le permita trabajar con comodidad con los demas elementos que
es necesario incluir en el circuito.
Agregue una resistencia al circuito, conéctela justo en la linea siguiente a la
fotorresistencia, esto es importante pues después las uniré mediante un cable de puente.
[Link] 2318. DETECCION DE LUZ eS
03 Ahora una la resistencia y la fotorresistencia, para ello use un cable de puente que
una el extremo derecho de un elemento con el extremo derecho del otro elemento, tal
como se ve en la imagen de ejemplo.
0 En este punto tiene las conexiones necesarias en el protoboard listas, debe conectarlo
a la placa Arduino, pero eso sera en un paso posterior. En este momento, prepare los
tres cables de puente que usara para conectar Arduino con el protoboard.
En primer lugar, conecte el pin AO de la placa Arduino UNO con un extremo de la
resistencia, Para esto, debe conectar el cable de puente en la placa y luego en la linea
que corresponde a uno de los extremos de la resistencia,
232 [Link]ARDUINO
0 Conecte uno de los extremos del segundo cable de puente al pin GND de la placa
Arduino UNO, el otro extremo del cable de puente debera conectarse a la linea que
corresponde al otro extremo de la resistencia, tal como se ve en la imagen de ejemplo.
0 El tercer cable de puente proporcionara el voltaje necesario a su circuito, para ello
conecte uno de sus extremos al pin 5V de la placa Arduino UNO, el otro extremo debe
ser conectado al extremo que queda libre en la fotorresistencia. Para conectarlo,
Utilice uno de los puntos de conexién que corresponde a la linea donde se encuentra
conectada la fotorresistencia,
En este punto ya tiene su circuito
‘creado, como ve, solo ha utilizado unos
pocos componentes. Para terminar sera
necesario conectar la placa Arduino
UNO a la computadora. Como siempre,
tendré que utilizar el cable USB
earn ; 4
nie | adecuado. Efectie la conexién con la
PC y verifique que la placa se encuentre
energizada, para ello observe los LEDs
incorporados en Arduino UNO.
oars
[Link] 2338. DETECCION DE LUZ [users]
Ya tenemos el circuito creado, se trata de la disposicion basica que
nos serviré para probar diversos sketchs, que nos permitirén trabajar
con la fotorresistencia. Es decir, trabajaremos teniendo en cuenta la
cantidad de luz que recibe este sensor.
CREACION DE LOS SKETCHS
Como veremos a continuacién, sera necesario crear un sketch
basico que nos permita leer la informacién proporcionada por la
fotorresistencia; partiendo de esto sera posible efectuar algunos
cambios para alterar el comportamiento de un LED conectado a la
placa Arduino. Podremos, por ejemplo, encender un LED cuando la
intensidad de la luz alcance cierto punto o hacer parpadear el mismo
LED dependiendo de la luz que Hlega a la fotorresistencia. También es
posible utilizar el Monitor serie para leer los valores que corresponden
ala lectura de intensidad de luz que realiza la fotorresistencia y que
leeremos a través del pin AO.
Para lograr todo esto, primero debemos crear un sketch basico y,
posteriormente, iremos incorporando algunas modificaciones para
lograr que nuestro proyecto sea cada vez mas completo.
Hemos dividido el proyecto en cuatro resultados esperados, en cada
uno de ellos intentaremos resolver uno de los planteamientos que
efectuamos en una seccién anterior, relacionados con este proyecto.
Resultado 1
Para concretar este resultado, antes recordemos el primer planteamiento’
> 1. Crear un sketch que nos permita activar un LED solo cuando la
intensidad de la luz Hlegue a un nivel que definiremos con anticipacion.
Para efectuar esta tarea, iniciaremos el Arduino IDE y crearemos un
sketch que contenga las siguientes porciones de codigo.
En primer lugar, definimos tres constantes, se tratara de los valores
que corresponden al LED integrado en la placa Arduino UNO, el pin que
utilizaremos para leer la informacién entregada por la fotorresistencia
234 [Link]ARDUINO
y el valor que utilizaremos como punto de corte para encender 0
apagar el LED, para este ejemplo utilizaremos un valor de corte de 200:
constint LED = 13;
constint LDR = A0;
constint valor = 200;
Luego escribiremos el apartado setup(), para este sketch utilizaremos
las lineas de cédigo que nos permitan establecer los pines que
usaremos. Marcamos LED como salida y LDR como entrada, de la
siguiente forma
voidsetup() {
pinMode (LED, OUTPUT) ;
pinMode (LDR, INPUT) ;
}
En el apartado loop() utilizaremos el cédigo que nos permita
comparar la lectura obtenida por LDR con el ntimero almacenado en la
constante valor, recordemos que para este ejemplo se trata de 200. Si es
mayor que valor, encenderemos LED, de lo contrario lo apagaremos. El
cédigo que necesitamos es el siguiente
voidloop() {
int input = analogRead (LDR) ;
if (input >valor) {
digitalWrite(LED, HIGH) ;
}
else {
digitalWrite(LEDPin, LOW);
}
}
La apariencia del cédigo completo es la siguiente, notemos que
hemos definimos las contantes fuera de setup() y loop().
constint LED = 13;
constint LDR = A0;
[Link] 2358, DETECCION DE LUZ
constint valor = 200;
voidsetup() {
pinMode (LED, OUTPUT) ;
pinMode(LDR, INPUT) ;
}
voidloop() {
int input = analogRead (LDR) ;
if (input > valor) (
digitalWrite(LED, HIGH) ;
,
else {
digitalWrite(LEDPin, LOW);
)
)
Una vez que hayamos ingresado el cédigo completo en el Arduino
IDE, debemos compilarlo, para ello solo es necesario hacer clic sobre
la opcién Verificar/Compilar. Si no encontramos ningiin error, podremos
cargarlo a la placa Arduino UNO; en caso de que se presente algiin
error, sera necesario solucionarlo antes de continuar.
‘sketch apri26 Arduino 1.8.2
sketch aprl2b
onst int LED = 135,
‘onst int LOR = AQ;
fonst int valor = 200;
4 setup {
pintiodeCLED, OUTPUT);
pinModeCLDR, INPUT);
)
4 Lo0p0) {
int input = onalogReadcLon);
tf Cinput > valor) {
digitalNritecLeD, HIG;
}
else {
digttalwri tecLeo,
om;
1H Como vemos en esta
imagen, no solo hemos escrito
el codigo que necesitamos
ara encender o apagar el LED
dependiendo del valor que nos
informe la fotorresistencia,
también lo hemos compilado, y
no encontramos errores.
[Link]ee ARDUINO
Una vez que tengamos el sketch compilado, lo cargamos en la placa
Arduino, mediante un clic en la opci6n Subir, que se encuentra en la
barra superior de herramientas dentro del IDE. Cuando la carga del
sketch haya finalizado, podremos verificar que el LED L de la placa se
enciende en presencia de un nivel adecuado de luz, por ejemplo, si
ponemos la mano sobre la fotorresistencia (con lo que recibira menos
luz), el LED L se apagara.
Podemos efectuar algunas modificaciones al sketch para probar
huevos resultados; es posible modificar la constante valor y, de esta
forma, cambiaremos el valor de intensidad que utilizaremos para
encender o apagar el LED L.
constint LED = 13;
constint LDR = A0;
constint valor = 150;
Otra modificacién interesante que har posible ver en forma mas
clara un LED encendido es conectar un LED directamente al pin 13 de la
placa Arduino. Como sabemos, este pin incorpora una resistencia, por
lo tanto, podemos utilizarlo para conectar un LED directamente.
@ Si conectamos un LED directamente al pin 13 de la placa Arduino UNO, podremos ver
con mayor claridad cuando se enciende 0 se apaga, dependiendo del nivel de luz que reciba
la fotorresistencia.
[Link] 2378, DETECCION DE LUZ eS
238
Resultado 2
Para continuar con el proyecto que nos enseiia a utilizar una
fotorresistencia, recordemos el segundo planteamiento que nos
impusimos:
> 2. Implementar el cédigo necesario para hacer parpadear un LED
mientras el sensor LDR conectado reciba la cantidad suficiente de luz.
Para esto podemos basarnos en el codigo que utilizamos en la
seccion anterior y realizarle algunas modificaciones.
En primer lugar, necesitamos contar con las constantes adecuadas
para este proyecto. Igual que en el caso anterior, usaremos el
pin 13 para el LED y el pin AO para leer la fotorresistencia, pero
estableceremos un valor de corte de 150:
constint LED = 13;
constint LDR = AQ;
constint valor = 150;
En el apartado setup(), necesitamos las lineas de codigo que nos permitan
indicar los pines necesarios y sus funciones. Utilizaremos LED como salida
y LDR como entrada, tal como hicimos en el resultado anterior:
voidsetup() {
pinMode (LED, OUTPUT) ;
pinMode (LDR, INPUT) ;
y
En el apartado loop() efectuaremos algunos cambios. Si bien
compararemos la lectura obtenida por LOR con el ntimero almacenado
en la constante valor, que para este ejemplo se trata de 150, el
cambio estar en que esta vez no solo encenderemos y apagaremos
el LED adecuado, sino también lo haremos parpadear. El codigo que
necesitamos es el siguiente:
voidloop() {
int input = analogRead(LDR) ;
if (input > valor) {
[Link]ARDUINO
digitalwrite (LED, HIGH) ;
delay (50) ;
digitalwrite (LED, LOW);
delay (50) ;
}
else {
digitalWrite(LEDPin, LOW);
)
}
El sketch completo es el siguiente:
constint LED = 13;
constint LDR = A0;
constint valor = 200;
voidsetup() {
pinMode (LED, OUTPUT) ;
PinMode (LDR, INPUT) ;
)
voidloop() {
int input = analogRead (LDR) ;
if (input > valor) {
digitalWrite(LED, HIGH) ;
delay (50) ;
digitalWrite(LED, LOW) ;
delay (50) ;
}
else {
digitalWrite (LED, LOW);
}
}
Una vez que hayamos compilado y cargado el sketch en la placa Arduino
UNO, podremos verificar que el LED integrado parpadea mientras la
fotorresistencia obtenga un nivel mayor de luz al indicado en la constante
valor. Si cubrimos la fotorresistencia con la mano, el LED se apagara.
[Link] 2398. DETECCION DE LUZ eS
Wi Aligual que sucede
con el resultado
obtenido en la
seccién anterior,
el LED parpadeara
mientras el nive! de
luz recibida por la
fotorresistencia sea
mayor al establecido
en variable, que
en este caso se trata
de 150.
En este sketch podemos tocar algunos valores para obtener
diferentes comportamientos. En primer lugar es posible cambiar
la constante almacenada en valor, de esta forma modificaremos el
umbral adecuado para que el LED parpadee, por ejemplo, para elevarlo
podriamos establecerlo en 250:
constint LED = 13;
constint LDR = AQ;
250;
constint valor
Otra modificacién que es posible realizar se encuentra dentro del
delay que sigue cada vez que el LED se apaga y enciende, asi podemos
lograr que este parpadeo se haga mas rapido o mas lento, por ejemplo
if (input > valor) (
digitalWrite (LED, HIGH) ;
delay (150) ;
digitalWrite(LED, LOW) ;
delay (150) ;
}
240 [Link]ARDUINO
Resultado 3
La tercera actividad que nos propusimos lograr en este proyecto:
> 3.[mplementar el sketch adecuado para leer los valores
que corresponden al nivel de iluminacién detectados por la
fotorresistencia conectada a nuestro circuito.
Como vemos, aqui daremos un paso més grande, pues intentaremos
leer los valores recogidos por la fotorrs ncia, relacionados con la
intensidad de la luz que recibe, y mostrarlos utilizando el monitor
serie. Para lograrlo, utilizaremos el siguiente sketch, que presentamos
y explicamos por secciones.
Primero debemos establecer las constantes que utilizaremos en este
sketch, Necesitamos cuatro constantes: resistencia en la oscuridad,
resistencia a la luz, resistencia de calibracion, y el pin que usaremos
para leer los datos de la fotorresistencia (recordemos que segiin
nuestro circuito se trata del pin AO)
ist
constlong A = 1000;
constint B = 15;
constintResCal = 10;
constint LDR = A0;
También necesitaremos dos variables que nos permitiran efectuar
algunos calculos que veremos mas adelante:
Es el momento de trabajar en setup(), en esta ocasion necesitamos
iniciar el monitor serie, pues lo utilizaremos para mostrar los valores
que obtendremos desde la fotorresistencia:
voidsetup()
{
Serial. begin (115200) ;
,
[Link] 2418. DETECCION DE LUZ
242
Para este sketch necesitamos incluir el siguiente cédigo en toop(),
se trata de los calculos que precisamos para luego mostrar los datos
adecuados utilizando el Monitor serie
voidloop ()
{
Va = analogRead (LDR) ;
41 = ((1ong)Va*A*10) /( (long) B*ResCal* (1024-Va) ) ;
[Link](il) ;
delay (1000) ;
y
El sketch completo quedaria de la siguiente forma:
constlong A = 1000;
constint B = 15;
constintResCal = 10;
constint LDR = AQ;
int va;
intil;
voidsetup()
{
Serial. begin (115200) ;
}
voidloop()
{
Va = analogRead (LDR) ;
il = ((1ong)Va*A*10) /( (long) B*ResCal* (1024-Va) ) ;
[Link] (il);
delay (1000) ;
3
[Link]ae ARDUINO
Luego de compilar y verificar que el sketch no contenga errores, lo
subimos a la placa Arduino UNO.
En esta imagen
std setup
ad aici podemos apreciar
que nuestro sketch se
vot teope ha subido a la placa
Va = enologend(. ‘Arduino sin problemas,
11 = (Clorgy¥ar4*109/¢Clong)B*ResCol*a0R4-Ve)?: Por lo tanto, asumimos
Serta printin(st); que no existian errores
tay(i000);
2 de codificacion.
Si ejecutamos el Monitor serie, veremos
que se escriben las lecturas entregadas por la
fotorresistencia. Como en el codigo indicamos
delay(1000), las mediciones se haran con un
segundo de diferencia entre ellas, podemos
modificar esto alterando el valor que pasamos
como parametro en delay.
Si ponemos la mano y oscurecemos de
alguna forma el entorno de la fotorresistencia,
veri
En el monitor serie es
posible ver cada una de las
lecturas informadas por la
fotorresistencia. En este
caso hemos oscurecido
el ambiente para obtener,
Por pantalla, valores mas
bajos.
aremos que los valores mostrados por el
monitor serie se veran afectados.
WANS Se EGogepass
[Link] 2438. DETECCION DE LUZ eS
ERE
En este capitulo hemos trabajado con un sensor conocido como
fotorresistencia. En primer lugar conocimos su funcionamiento y
revisamos sus principales caracteristicas. Posteriormente vimos la forma
en que podemos aprovecharlo en un circuito y obtener mediciones desde
Arduino. Creamos un proyecto en el que buscamos obtener diferentes
resultados, partiendo desde un sketch basico que modificamos en
diferentes etapas. Logramos que un LED se encienda dependiendo del
nivel de luz que llegue a la fotorresistencia, también hicimos parpadear
el LED dependiendo del nivel de luz existente y, por ultimo, pudimos
acceder a las lecturas relacionadas con el nivel de luz detectada por la
fotorresistencia, utilizando el monitor serie.
244 [Link]NT
de sonidos
sketch_may02a
1 int pinSonido
2 int cantTonos 2
int tonos[] = {261, 349, 392, 440, 392, 330, -10, 261, 349, 392, 440, 392,
2;
10;
Cint i = @; i < cantTonos; i++)
neCpinSonido, tonos[i]);
y(500) ;
noToneCpinSonido);9, EMISION DE SONIDOS
246
ELEMENTOS NECESARIOS
Para Hlevar a cabo este proyecto, necesitamos contar con algunos
elementos que hemos presentado y utilizado en capitulos anteriores
una tarjeta Arduino UNO, un protoboard y también cables de puente.
Pero ademas agregaremos un buzzer o zumbador.
El buzzer o zumbador no es mas que un transductor
electroactistico capaz de producir un sonido 0 un zumbido continuo o
intermitente de un mismo tono. Podemos utilizarlo como mecan
de sefalizacién o aviso y lo encontramos aplicado en automéviles,
electrodomésticos o despertadores.
Este elemento también se conoce
como buzzer piezoeléctrico o piezo
speaker, y su principal caracteristica
es su capacidad de transformar la
electricidad en sonido.
no
Bi Los buzzers son componentes
electronicos muy accesibles,
econdmicos y faciles de adquirir.
Si nos detenemos en la construccién del buzzer, encontramos
que se trata de elementos electrénicos que se forman mediante la
combinacion de dos discos de distintos materiales. Uno de estos discos
es metalico y el otro puede ser de ceramica; como ambos poseen
propiedades piezoeléctricas, al encontrarse frente a un voltaje los
discos se repelen produciendo un sonido. Si la diferencia de tensién se
pone a cero, los discos vuelven a su posici6n original y se produce un
nuevo sonido.
Cuando el circuito se controla mediante un circuito oscilante
externo, podemos hablar de un transductor piezoeléctrico. Por otra
parte, si el circuito oscilador se incluye en el componente, podemos
hablar de un zumbador piezoeléctrico.
[Link]me ARDUINO
En el mercado también
se encuentran buzzers
integrados en médulos.
Es posible encontrar los buzzer aplicados en el disefio de alarmas y
controles aciisticos, que requieran un rango de frecuencia estrecho, por
ejemplo, en aparatos domésticos y de medicina.
Funci6on tone
Aunque no se trata de un elemento fisico, es necesario mencionar una
funcién de Arduino que usaremos para completar este proyecto, se
trata de tone.
Esta funcién nos permite crear sonidos en forma sencilla, solo
seleccionando el pin de salida y la frecuencia. Su sintaxis es la siguiente
tone (pinsalida, frecuencia) ;
Es necesario considerar que la funcién tone trabaja intercambiando
los valores HIGH/LOW a una frecuencia especifica en el pin de salida
que indiquemos. Realizara esto hasta que indiquemos otra frecuencia
o hasta que ordenemos que se detenga, para ello debemos usar la
funcién noTone, de la siguiente forma
noTone(pinsalida);
Mediante esta funcién lograremos un tnico tono al mismo tiempo;
para lograr un tono distinto, primero debemos detener el anterior €
invocar un nuevo tono con otra frecuencia. A continuacién, vemos un
ejemplo sencillo del uso de estas funciones:
[Link] 2479, EMISION DE SONIDOS
248
constintpinSonido
voidsetup()
{
}
voidloop()
{
tone(pinSonido, 440);
delay (1000) ;
noTone (pinSonido) ;
delay (500) ;
tone (pinSonido, 523, 300);
delay (500) ;
i
EL PROYECTO
En a seccién anterior conocimos en detalle qué es un buzzer y para
qué sirve; como se trata de un componente electronico nuevo para
nosotros, trabajaremos en la realizacion de un pequefto proyecto que
nos permita utilizarlo en conjunto con una placa Arduino.
En este proyecto buscamos lograr varias tareas:
> [Link] el buzzer directamente a la placa Arduino UNO y
generaremos el cédigo necesario para que este componente emita
sonidos.
> [Link] el buzzer conectado a la placa Arduino, intentaremos
reproducir una serie de sonidos que representen una escala musical.
> [Link] con el mismo circuito original, intentaremos
combinar una cantidad de sonidos para que se escuche una melodia
reconocible, para ello trabajaremos sobre el sketch basico que
resulté de la tarea nimero dos.
[Link]ARDUINO
Manos a la obra
Dividiremos el trabajo en secciones; en cada una de ellas crearemos el
circuito y el cédigo que necesitamos, de esta forma iremos completando:
el proyecto al tiempo que realizamos las tareas propuestas.
Resultado 1
Para comenzar a trabajar, recordaremos nuestra primera tarea:
> [Link] el buzzer directamente a la placa Arduino UNO y
generaremos el cédigo necesario para que este componente emita sonidos.
Para lograrlo, solo necesitamos tres componentes: una placa Arduino,
un protoboard y un buzzer. La conexién que debemos efectuar es
bastante sencilla; en realidad, podemos prescindir del protoboard pues
solo necesitamos conectar ambos extremos del buzzer a los pines 13 y
GND. Considerando que el buzzer posee polaridad, es necesario conectar
el cable rojo al pin 13 y el cable negro al pin GND.
Una vez que hemos realizado las conexiones necesarias, debemos
trabajar en el sketch. Al igual que el circuito, el cédigo para hacer
funcionar el buzzer sera bastante sencillo. Crearemos las variables que
utilizaremos en el sketch, en esta ocasién necesitamos dos variables, una
para asignar el pin que utilizaremos y otra para almacenar la frecuencia a
Ja que se emitira el tono, en este caso usamos el pin 13 y trabajamos con
una frecuencia de 220, que corresponde a la nota la
intpinsonido = 13;
int frecuencia = 220;
[Link] 2499, EMISION DE SONIDOS ames)
Para este sketch no necesitamos integrar codigo en setup(), por esta
razon lo dejamos vacio, aunque si lo escribimos’
voidsetup ()
{
}
En el loop() es necesario establecer el inicio del zumbido, para ello
usamos la funcién tone, que conocimos en la secci6n anterior; debemos
pasar como parametros las variables que definimos al inicio del sketch,
de la siguiente forma:
tone (pinsonido, frecuencia) ;
+ Conexion del buzzer a la placa Arduino
Tal como vemos en este diagrama, la conexidn del buzzer a la placa Arduino es realmente
sencilla, pues solo necesitamos utilizar los pines 13 y GND.
250 [Link]ARDUINO
Para detener el zumbido usamos la funcién noTone, pasando como
parametro el pin que estamos utilizando:
noTone (pinsonido) ;
Ya hemos definido el inicio del zumbido y también su final, pero,
para que este bloque de instrucciones tenga sentido, es necesario
anteponer un delay; de
sta forma el zumbido se presentara de manera
intermitente, por ejemplo, podemos utilizar un delay de un segundo
tone (pinsonido, frecuencia) ;
delay (1000) ;
noTone (pinsonido) ;
delay (1000) ;
Con esto, nuestro cédigo completo quedara de la siguiente forma:
intpinsonido = 13;
int frecuencia = 220;
voidsetup ()
{
}
voidloop ()
{
tone (pinsonido, frecuencia) ;
delay (2000) ;
noTone (pinsonido) ;
delay (1000) ;
}
Ahora podemos ejecutar el Arduino IDE y cargar el cédigo propuesto,
luego lo compilamos para verificar que no exista algiin error.
Una vez que hemos compilado el programa lo cargamos en la placa
Arduino; al hacerlo notaremos que el buzzer emite un zumbido, esto se
debe a que estamos usando el pin 13 que se posiciona en HIGH cuando
energizamos la placa Arduino.
[Link] 2519, EMISION DE SONIDOS
eoe sketch mayO2a Arduino 1.8.2
sketch_may02a
nt pinsonido = 13;
2 int frecuencia = 220;
oid setupQ
Bt
6}
& ta tho
9 toneCpinsont do, Frecuencia);
delay(2000);
2 noTone(pinsontdo);
3 detayc1000);
Wi Después de
cargar el cédigo
en el Arduino IDE,
lo compitamos
ara verificar que
no existan errores
légicos; con la
compilacién correcta,
lo cargamos en la
placa Arduino.
Podemos trabajar con este codigo modificando el delay que hemos
asignado, de esta forma obtendremos nuevos resultados. También es
posible modificar la frecuencia que establecimos, aunque consideremos
que un zumbador tiene una capacidad limitada para reproducir sonidos
en forma fiel, por lo tanto, con algunas frecuencias ni siquiera respondera.
BM acne acu CRM EM Cer)
1 Podemos lograr el mismo resultado conectando el buzzer directamente a la placa Arduino,
‘sin necesidad de utilizar el protoboard como intermediario.
252
[Link]ARDUINO
Resultado 2
» [Link] el buzzer conectado a la placa Arduino, intentaremos reproducir
una serie de sonidos que representen una escala musical.
Como ya hemos creado el circuito basico, solo nos queda trabajar
sobre el cédigo que necesitamos. Primero establecemos la variable que
corresponde al pin que utilizaremos como salida, de la siguiente forma
intpinSonido = 13;
Ademés, es necesario definir una variable que almacene la cantidad
de tonos que reproduciremos y, también, debemos definir un vector
que almacene los tonos que correspondan a las notas de la escala
natural, tal como vemos a continuacion
intcantTonos = 10;
int tonos[] = {261, 277, 294, 311, 330, 349, 370,
392, 415, 440};
En setup() crearemos un bucle for que pueda recorrer el vector que
almacena los tonos de la escala; de esta forma, el buzzer emitiré una
frecuencia por cada elemento que compone el vector, asi escucharemos
los diferentes tonos que, por supuesto, corresponden a la escala natural:
for (int i = 0; i [Link] con el mismo circuito original, intentaremos combinar una
cantidad de sonidos para que se escuche una melodia reconocible, para ello
trabajaremos sobre el sketch basico que resulté de la tarea nimero dos.
Como vemos, hay que trabajar con el circuito conectado originalmente y
también sobre el sketch que resulté de la tarea naimero dos.
Para este sketch, usaremos las mismas variables que creamos para el
resultado naimero dos:
u
»
8
intpinSonido =
intcantTonos = 10;
[Link]ARDUINO
También necesitamos un vector que almacene los tonos que seran
emitidos por el buzzer, pero en esta ocasién realizaremos algunas
modificaciones, el cédigo debera quedar de la siguiente forma:
inttonos[] = {261, 349, 392, 440, 392, 330, -10,
261, 349, 392, 440, 392, -10, -10, 261, 349, 392,
440, 392, 330, -10, 330, 349, 330, 261, 261};
Igual que en el caso anterior, necesitamos un bucle for que recorra
el vector que contiene los tonos adecuados; de esta forma, el buzzer
emitira un sonido especifico por cada elemento del arreglo:
for (int i = 0; i
CCFL, pero presentan un mayor consumo con un tiempo de vida mas reducido
que la iluminacién LED. Por otra parte, la iluminacion LED puede encontrarse en
un solo color o también en RGB, aunque la iluminacion blanca es mas usada. La
iluminacin LED también puede presentarse como una matriz de fondo o estar en
los bordes del display.
CONTRASTE
Se refiere a la relacién que existe entre la intensidad mas brillante y la mas oscura.
ANGULO DE VISION
Esta caracteristica corresponde al angulo maximo que el usuario puede utilizar para
visualizar lo que aparece en el display sin que se pierda demasiada calidad,
NUMERO DE CARACTERES
Como imaginamos, existen diversos tamafios de LCD. Para nuestros proyectos
electronicos, necesitamos saber la cantidad de caracteres que es capaz de mostrar, por
ejemplo, existen algunos tamafios més utilizados, como 16x2, 20x4 u 8x2 caracteres.
Este es uno de los displays més utiizados en proyectos electrénicos de pequefia
envergadura, se trata del panel de 8x2.
[Link] 26310. DISPLAY LCD Y RELOJ DIGITAL ee
264
Comunicaci6n
Ya conocemos qué es un display LCD y cuales son sus caracteristicas,
ahora revisaremos las formas en que podemos comunicarnos con este
componente
> SERIAL UART: se debe utilizar un backpack para comunicarse usando
los puertos TX y RX del microcontolador. Podemos conseguir uno de estos
elementos con soporte para 2 0 para 4 lineas, y también para graficos
entre 160x128 y 128x64.
> SERIAL A PARALELO: necesita contar con un circuito integrado que se
conecte por IC o SPI al puerto SDA, y el reloj al SCL de Arduino con ta
ibreria Wire.
> EN PARALELO: se trata de la opcién mas utilizada, se puede realizar la
comunicacién en forma directa con Arduino utilizando los pines del 0 al 7,
© del 0 al 4 si queremos enviar la mitad de los datos; esto hara el proceso
mas rapido y la diferencia no es detectada por el ojo humano.
Por ejemplo, para conectar un display de 16x2 necesitamos
considerar que, en el panel LCD encontraremos los siguientes pines:
> RS (Register Select): se trata del pin que controla la memoria del
LCD e indica qué registro de la memoria sera el que se lee 0 escribe.
El pin RS se encarga de controlar en qué lugar de la memoria LCD se
escriben los datos, por lo tanto, mantiene lo que veremos en pantalla 0
donde se buscaran los siguientes datos para mostrar.
> RW (Read/Write): es el pin de lectura y escritura que dird si se escribe
en memoria o si se lee en cada momento, por lo tanto, permite elegir el
modo de lectura o de escritura.
> E (Enable): se trata del pin que habilita los registros.
> DBO-DB7: corresponden a los pines de datos, es decir, son los pines desde
los que se obtienen los bits que legan al registro. La numeracién de estos
pines puede variar dependiendo del fabricante o también del modelo det
display. Debemos tener en cuenta que los valores de estos pines son bits
que se escriben en un registro o valores que se estan leyendo.
> Vo: es el pin de contraste. Mediante este pin es posible alterar el contraste
de la pantalla para que los caracteres se aprecien de mejor forma.
> Vdd: se trata del pin de alimentacién, por el que entra la tensién que
normalmente es de +5 V.ARDUINO.
> GND: este pin se encarga de complementar al pin anterior, se trata del pin
de alimentacién que se conecta a tierra
> BL1y BL2: corresponden a los pines de retro iluminacion. Se encargan
de controlar la luminosidad del display, también pueden aparecer con los
simbolos Bkit+ y Bkit-.
Pines de un display LCD
[Link]
@ En esta imagen
vemos un esquema
de los pines que
encontramos en un
display LCD. En este
caso se trata de un
display de 16x2.
26510. DISPLAY LCD Y RELOJ DIGITAL ea
+ Conexi6n de un display LCD a una placa Arduino
En este esquema
observamos un
ejemplo de conexién
de un display LCD
con una placa
Arduino. En este
caso se muestra la
conexion directa, es
decir, sin utilizar un
protoboard.
266 [Link]ea ARDUINO
Para lograr una conexi6n en paralelo de un display LCD con la placa
Arduino, debemos observar lo siguiente’
> Elpin RS del display debe conectarse a la E/S digital en el pin 12.
El pin Enable del display se conecta a la E/S digital en el pin 11.
> Los pines D4 a D7 se conectan a las E/S digitales desde el pin 5 hasta el
pin 2 de la placa Arduino.
> Los pines de voltaje y tierra se conectan a +5V y GND.
> Elpin Vo, que se encarga de controlar el contraste, se conecta a un
potenciémetro. Luego de esto, es posible ajustar el potenciémetro para
que el texto se presente con el contraste que deseemos.
v
Para lograr una conexién correcta del display LCD, podemos hacer
uso de un esquema de conexién, esta es la forma mas rapida de
entender de qué manera debemos conectar la placa, utilizando lineas
claras y mostrando los componentes mediante simbolos electrénicos.
Con la conexion realizada, intentemos mostrar nuestros primeros
caracteres en el display. En primer lugar debemos incluir la libreria
LiquidCrystal, que conoceremos més adelante, en este mismo capitulo:
#include
También es necesario que iniciemos los pines que utilizaremos, de la
siguiente forma:
Liquidcrystal led(12,11,5,4,3,2);
[Link] 26710. DISPLAY LCD Y RELOJ DIGITAL
+ Esquema de conexion de un display LCD
Cemoyer
au)
BK1 t+ O}
Erste)
OC
I Si seguimos este esquema, es realmente sencillo lograr la conexidn correcta de un display
LCD con la placa Arduino.
268 [Link]ee ARDUINO
Para continuar, indicamos el ntimero de columnas que corresponden
al display que utilizaremos, en este caso se trata de un panel de 16x2
[Link](16, 2);
Ahora si podemos imprimir un mensaje por pantalla, para lograrlo
usamos [Link]:
[Link] («Primer mensaje») ;
Finalmente, pondremos el cursor en la columna 0 de la linea 1, para
sefialar el lugar desde el que comenzaran a imprimirse los caracteres
indicados mas arriba:
led. setCursor (0,1);
El codigo completo quedara de la siguiente forma
include
Liquidcrystal 1cd(12,11,5,4,3,2);
void setup() {
[Link](16, 2);
[Link] ("Primer mensaje”) ;
}
void loop() {
led. setCursor (0,1); “En este punto
) el potenciémetro
nos ayudara
Como sabemos, ahora solo nos queda en el ajuste de
compilar este codigo y luego subirlo a la placa
Arduino. Si el texto no se aprecia correctamente, Contraste del
podemos utilizar el potenciémetro para ajustar display LCD. u
el contraste.
[Link] 26910. DISPLAY LCD Y RELOJ DIGITAL ee
Zz}
sketch_may03a §
#include
Jvoid setupC) {
[Link](16, 2); compilado este
[Link]("Comohacer eu"); sencillo cédigo que
LiquidCrystal 1cd(12,11,5,4,3,2); I Como vemos en
esta imagen, hemos
os permitira mostrar
un pequefio mensaje
void Loop fl
lcd. setCursor(@, 1); en la pantalla del
display de 16x2,
270
Libreria LiquidCrystal
Esta libreria nos proporciona lo que necesitamos para trabajar con un
display LCD conectado a una placa Arduino. Su principal funcion es
permitirnos crear un objeto que pueda representar al display, para el
que existan las operaciones de bajo nivel, y que podamos gestionarlas
en forma sencilla. Esta libreria nos ofrece diversos métodos simples,
tal como mencionamos a continuaci6n:
> Método LiquidCrystal(): se trata del constructor de la clase
LyquidCrystal, es adecuado para crear un objeto de esta clase, que
usaremos para gestionar el display LCD y realizar las tareas que
necesitamos. Los argumentos que recibe son un conjunto de ntimeros
que corresponden a pines de la placa Arduino conectados a los pines del
display. Algunos ejemplos de su uso son los siguientes:
Liquidcrystal MiDisplay (12, 11, 5, 4, 3, 2);
LiquidCrystal(Rs, E, D4, D5, D6, D7);
Liquidcrystal(Rs, rw, E, D4, D5, D6, D7);
Liquidcrystal(Rs, E, DO, Dl, D2, D3, D4, D5, D6,
D7);
[Link]ee ARDUINO
> Método hegin(): es necesario para inicializar el display, puede recibir
dos argumentos ~Ia anchura en caracteres y la altura en ntimero de filas—
que corresponden al display.
> Método clear(): este metodo se encarga de limpiar el display y poner el
cursor en el primer caracter de la primera fila. Corresponde a borrar la
pantalla del display.
> Método home(): este método se encarga de situar el cursor en el primer
caracter de la primera fila, pero a diferencia del método clear(), no
borrarré el display.
> Método setCursor(): este método permite poner el cursor en una
ubicacién especifica, los argumentos que recibe son la posicién en la fila
y también el numero de fila. Para contar los espacios debemos comenzar
desde cero.
> Método write(): se encarga de escribir una cadena en el display, el
argumento que debemos pasar al método es la cadena que deseamos
mostrar. A continuacién vemos un pequefio ejemplo de este método:
#include
LiquidCrystal 1cd(7, 8, 9, 10, 11 , 12);
void setup() {
[Link](16, 2);
[Link]("Texto mostrado”) ;
void loop() { }
> Método print(): este método es parecido a write(), pero permite enviar
‘itimeros enteros al display en distintas bases de numeracién. Un ejemplo
de su uso es el siguiente:
[Link] (numero, BASE) ;
En este cédigo tenemos el parametro BASE, se trata de una constante
que puede ser BIN (binario), OCT (octal), DEC (decimal) o HEX
(hexadecimal).
[Link] 2710. DISPLAY LCD Y RELOJ DIGITAL ea
> Método cursor() y noCursor(): se utilizan para que el cursor sea visible
en el display y para hacerlo invisible, respectivamente; no requieren
pardmetros.
> Método blink() y noBlink(): podemos usar estos métodos para hacer que
el cursor parpadee o no lo haga, primero debemos hacerlo visible mediante
el método cursor‘).
> Método display() y noDisplay(): mediante estos métodos es posible
activar 0 apagar el display LCD. Estos métodos no reciben argumentos.
> Método autoscroll() y noAutoscroll(): gracias a estos métodos podemos
hacer que el contenido mas antiguo que se escriba en el display se
desplace, desapareciendo por el principio de la linea, de esta forma dejara
espacio al final de la linea para mostrar los nuevos contenidos. Por otra
parte, si deseamos desactivar el autoscroll, debemos usar el método
noAutoscroll().
> Métodos scrollDisplayLeft() y scrollDisplayRight(): estos métodos
hacen que el contenido se desplace un caracter a la izquierda o a la
derecha, En conjunto con el método autoscroll() lograremos que los
caracteres se desplacen en el sentido que deseemos.
> Métodos leftToRight() y rightToLeft(): mediante estos métodos podemos
indicar el sentido de la escritura en el display.
> Método createChar(): nos permite crear hasta ocho caracteres
adicionales e identificarlos con los niimeros del 0 al 7. Los caracteres se
crean a partir de una matriz de cinco puntos de ancho por ocho de alto.
Gracias a createChar(), es posible conseguir simbolos realmente vistosos;
para probarlo podemos implementar el siguiente cédigo de ejemplo, que
dibuja un corazén en el display:
byte simbolo[8] = { 800000,
B01010,
B11111,
B11111,
B01110,
B00100,
B00000,
B00000 };
Como podemos darnos cuenta, el dibujo de un corazén se forma
gracias a la disposicién de los unos y los ceros en a pantalla, por
272 [Link]ea ARDUINO
supuesto, los unos corresponden a los espacios que se mostraran, y
los ceros se mantendran ocultos. Siguiendo la misma légica, podriamos
crear un icono de una bateria lena
byte simbolo[8] = { B01110,
B11111,
B11111,
B11111,
B11111,
11111,
B11111,
B11111 };
también, ensayar la creacién de una bateria vacia 0 con media
carga, de la siguiente forma:
byte simbolo2[8] ={ B01110,
B10001,
B10001,
810001,
B10001,
810001,
10001,
B11111 };
byte simbolo3(8] ={ B01110,
B10001,
B10001,
B10001,
B10001,
B11i11,
B11111,
B11111 };
Para probarlo debemos integrar el cédigo en un sketch completo, tal
como vemos a continuacién:
#include
LiquidCrystal lcd(7,8,9,10,11,12);
[Link] 27310. DISPLAY LCD Y RELOJ DIGITAL ee
byte simbolol[8] = { 800000,
B01010,
B11111,
B11111,
B01110,
B00100,
B00000,
B00000 };
byte simbolo2[8] ={ 301110,
B10001,
B10001,
B10001,
B10001,
B10001,
B10001,
B1l111 };
byte simbolo3[8] ={ B01110,
810001,
B10001,
B10001,
B10001,
B1li1l11,
B11l1l11,
Bll111 };
byte simbolo4[8] ={ B01110,
B11111,
B11111,
B11111,
B11111,
B11111,
B11111,
B11111 };
void setup() {
[Link] (0, simbolo4) ;
274 [Link]ea ARDUINO
[Link](1, simbolo3) ;
[Link](2, simbolo2) ;
[Link](3, simbolol) ;
ledbegin(16, 2);
[Link] (byte (0)) ;
[Link] (byte (1));
[Link] (byte (2));
[Link] (byte (3)) ;
}
void loop() {}
RELOJ DIGITAL
Ya conocimos en detalle las caracteristicas y el funcionamiento de un
display LCD, también vimos algunos ejemplos basicos de funcionamiento
utilizando la libreria LiquidCrystal. Con toda esta informacion, podemos
intentar crear un sencillo pero fascinante proyecto: un reloj digital. En
primer lugar seguiremos las indicaciones que mencionamos en una
secci6n anterior de este capitulo para conectar correctamente el display
LCD a nuestra placa Arduino. Podemos seguir las indicaciones que vemos
en el esquema adjunto.
Para crear el sketch, en primer lugar incluiremos la libreria LiquidCrystal:
#include
Luego debemos indicar los pines
necesario definir las variables en las que almacenaremos los segundos,
los minutos y las horas (s, m y h, respectivamente):
que utilizaremos y, también, es
LiquidCrystal 1cd(12, 11, 5, 4, 3, 2);
int s = 0;
int m = 32;
int h = 16;
[Link] 27510. DISPLAY LCD Y RELOJ DIGITAL
+ Conexion de un display LCD con protoboard
En este esquema se muestra la forma en que debemos conectar el display
LCD ala placa Arduino, utilizando un protoboard para que tengamos mas espacio
disponible y podamos efectuar las conexiones en forma holgada.
276 [Link]En setup() usaremos el método [Link](), que ya conocimos en una
seccién anterior, sabemos que es necesario para inicializar el display; en
este caso usaremos los argumentos adecuados para un display de 16x2:
void setup() {
[Link](16, 2);
}
En loop() indicamos la forma en que aumentaran los segundos, hasta
60 en forma indefinida:
for (s = 0; s < 60; s++){
[Link]() ;
[Link](3, 0);
[Link] (“HRS”) ;
[Link](4, 1);
[Link] (*:”);
[Link](7, 0);
[Link] (“MIN”) ;
[Link](7, 1);
[Link] (m) ;
[Link](9, 1);
[Link](":");
[Link](11, 0);
[Link] ("SEG") ;
[Link](12, 1);
[Link](s) ;
delay (1000) ;
}
También es necesario indicar que, cuando los segundos pasen de 60,
yuelvan a cero y aumenten en uno los minutos. Si los minutos pasan a
sesenta, vuelven a cero y las horas aumentaran en uno:
[Link]
ARDUINO
27710. DISPLAY LCD Y RELOJ DIGITAL ea
if(s > 59){
8 = 00;
m = m1;
}
if (m > 59){
m = 00;
h = ht;
}
if(h == 24){
h = 00;
m = 00;
s = 00;
I
Una vez que tenemos los segmentos de codigo, debemos copiarlos
en el Arduino IDE, y su apariencia sera la siguiente:
#include
LiquidCrystal 1cd(12, 11, 5, 4, 3, 2);
int s = 0;
int m = 32;
int h = 16;
void setup() {
[Link](16, 2);
}
void loop() {
for (s = 0; s < 60; st+t){
[Link]() ;
[Link](3, 0);
[Link] (“HRS”) ;
[Link](4, 1);
[Link] (*:”) ;
278 [Link]ea ARDUINO
[Link](7, 0);
led. print (°MIN”) ;
[Link](7, 1);
led-print (m) ;
[Link](9, 1);
[Link](":");
[Link](11, 0);
[Link] ("SEG") ;
[Link](12, 1);
[Link](s) ;
delay (1000) ;
2
if(s > 59){
s = 00;
m = m+1;
,
if(m > 59){
m = 00;
h = ht1;
d
Con el sketch generado, solo nos queda compilarlo y, en caso de que
no encontremos errores légicos, lo subimos a la placa Arduino para
probar su funcionamiento.
[Link] 27910. DISPLAY LCD Y RELOJ DIGITAL ee
ERRZ ESN Te
En este capitulo conocimos los detalles y las caracteristicas relacionados
con los displays LCD, revisamos sus pines y también los tipos de displays
LCD mas comunes en el trabajo con Arduino. Analizamos la comunicacién
que estos componentes realizan con una tarjeta Arduino y presentamos
{a libreria LiquidCrystal, que nos simplifica las tareas de comunicacién y
la forma en que podemos mostrar mensajes e interactuar con el display.
Vimos algunos ejemplos de codigo que nos permitieron utilizar un display
de 16x2 y, para terminar, completamos un pequefio proyecto que nos
permitié crear un reloj digital.
280 [Link]Ar)
few Veer ite)
En los capitulos que componen esta obra, hemos dado los
primeros pasos en el mundo de Arduino. Aunque construimos
algunos proyectos interesantes, debemos tener en cuenta que
el potencial de Arduino es enorme, y asi lo demuestra la gran
gama de posibilidades que conoceremos en este capitulo.11. POTENCIAL DE ARDUINO ee
is
Tenaga Coca, 1s ore oo 28
Be Arno Te gustan os
ches de uguaa?. (Oueres
aca un agers avarice sara
ry
Rest iet on
Ehegsoe
Se en
ey
os
Sten
ara
Ss
biketeeeonte Vsaypte ci edite an pafalfings tf Ry yeaecs medion ki
eee I oe
eae Spat iets mins ssa traits pie erica
keinotro SS ences
— Pe rat cng cca alley as
feces, | Siar ansctoeer caps tt cet ey
mas, || | sraeecomaneaterasnatr ea sceinnan eas
oe ea
POSIBILIDADES
A través de los capitulos que componen esta obra, pudimos.
iniciar nuestro camino en el mundo de Arduino. Conocimos sus
caracteristicas, sus principales usos y, también, creamos nuestros
primeros proyectos.
Aunque trabajamos con elementos tales como LEDs, sensores
ultrasonicos y displays LCD, el potencial de Arduino esta lejos de ser
solo lo que aprendimos hasta este momento.
Arduino es mucho mas. Esta plataforma de hardware y software
flexible proporciona lo que necesitamos para construir cualquier
proyecto que nos imaginemos; por esta razén siempre debemos tener
en cuenta que las posibilidades solo estan definidas por nuestro
conocimiento de Arduino y por nuestra creatividad,
ee Mini-consola con Arduino para juagar a Tetris y Breakout
ona Los juego del Tere y Breakout con Arduino
cee
Prarig pare
1 Enel sitio web [Link] encontramos una coleccién de
proyectos que pueden ser realizados mediante el uso de una placa Arduino.
282
[Link]ee ARDUINO
Ya dimos los pasos basicos en el trabajo con Arduino, vimos la
forma en que podemos trabajar con LEDs y diversos tipos de sensores;
también aprendimos a mostrar informacién mediante el monitor serie y
a través de un display LCD. Ahora solo nos queda explorar este mundo
mas profundamente y lograr lo que nuestra imaginacion nos dicte.
Para analizar el verdadero potencial de Arduino, conoceremos algunos
proyectos interesantes que han sido desarrollados por la comunidad que
se encuentra alrededor de esta plataforma, de esta manera podremos
darnos cuenta de las reales posibilidades que nos ofrece.
Arduino en domotica
Uno de los campos mas interesantes donde Arduino ha encontrado
enormes posibilidades de aplicacion es la domética.
La doméotica es definida como el conjunto de técnicas que buscan
automatizar una vivienda, que integran la tecnologia en los sistemas
de seguridad, gestion energética, bienestar 0 comunicaciones. Y es
precisamente en esto donde Arduino puede ayudarnos, permitiéndonos
efectuar tareas como las siguientes:
> Control de iluminacién con control de potencia. “Las posibilidades
> Control de persianas y toldos.
> Control de climatizacion. que ofrece
> Control de calefaccién con temperaturas Arduino para
de consignas y control de riego automatico.
> Programacion de horarios y también programacién el control
de escenas o ambientes. domotico son
> Posibilidad de acceso y control desde fuera -
de la red local. muy interesantes,
> Control de todo tipo de dispositi en www.
controles remotos. .
descubrearduino.
Entre los proyectos que relacionan Arduino com encontramos
con la domética, encontramos un sistema .
inteligente para el hogar, basado en el uso de algunos ejemplos
la radiofrecuencia. En este proyecto se busca en este ambito. “
desarrollar un completo sistema de automatizacion
sustentado en un transmisor de radiofrecuencias.
[Link] 28311, POTENCIAL DE ARDUINO
En su construccién se usa la placa Arduino UNO y algunos
componentes adicionales, como un display LCD.
Se trata de un proyecto sencillo que podemos replicar siguiendo
las indicaciones publicadas en la Web, para ello debemos visitar la
direccion [Link]
Si nuestro objetivo es utilizar Android para controlar diversos
dispositivos electrénicos presentes en el hogar, podemos hacer
uso de Arduino, En la web [Link]/id/Arduino-
Bluetooth-HomeControl-Android se encuentran las indicaciones
completas para replicar este proyecto de domotica. En este caso
se hace uso de una placa Arduino Nano, aunque también podemos
usar Arduino UNO o Mega. En términos simples, la placa Arduino se
conectara a una base de enchufes y, utilizando un equipo mévil con
sistema Android, se conectaran los aparatos mediante bluetooth.
Pero no solo es posible controlar dispositivos electronicos que
comtinmente se encuentran en un hogar, también podemos extender
el control a un pequefo jardin. Para lograrlo hay que replicar el
proyecto que se encuentra en la direccion [Link]/
proyecto-arduino-riego-automatico-para-plantas.
CO HEED =a
I En la web del proyecto obtendremos el istado de componentes que necesitamos y las
instrucciones paso a paso para replicarlo.
284
[Link]eo ARDUINO
Gracias a este proyecto, controlaremos el riego en forma
automatica y también mediremos la humedad en nuestras plantas.
Arduino Bluetooth HomeControl (Android) +; oonsicecoss wane
aoa
eee
ee
Ses
Fatt
7 wa
yea conc! tt, ote mactne, vrybin ls oashin Sere ua
I Este proyecto de domética con Arduino se divide en 11 pasos. Es posible descargar las
instrucciones en formato PDF, haciendo clic en DownToad.
Para replicar este proyecto de riego automatico, debemos seguir las
Instrucciones propuestas por el autor en su sitio web oficial y utilizar
el siguiente cédigo:
Luces ambientales
Un interesante proyecto que utiliza una placa Arduino se relaciona con la
implementacién de luces ambientales para el monitor. Gracias a este proyecto,
que encontramos en el sitio web [Link]
[Link], se agregan luces en la parte
posterior de un monitor para generar un ambiente mas acorde con la actividad
que realizamos frente a la PC.
[Link] 28511, POTENCIAL DE ARDUINO
flinclude ;
constintsensorPin
constintledPin =
int estado =
intestadoOff
intsensorState =
Servo myservo;
voidsetup() {
pinMode(ledPin, OUTPUT) ;
pinMode(sensorPin, INPUT) ;
[Link] (9) ;
)
voidloop() {
sensorstate
digitalRead(sensorPin) ;
if (sensorState == LOW) {
if(estado == 0){
[Link] (9) ;
I En la web oficial de este proyecto, el autor nos entrega una imagen que corresponde al
prototipo ya creado y en funcionamiento.
286 [Link]ee ARDUINO
[Link](120) ;
delay (500) ;
[Link] () ;
estado = 1;
estadoOff = 0;
}
}
else {
if(estadoO£f == 0) {
[Link] (9) ;
[Link] (0);
delay (500) ;
[Link] () ;
estadooff = 1;
estado = 0;
}
}
}
Para obtener una explicacion mas precisa sobre las diferentes
secciones de este cédigo, visitemos el sitio web oficial del proyecto.
Arduino en robotica
Sin duda, la robotica es una de las areas en las que, gracias a la
ayuda de la plataforma Arduino, se han creado los proyectos mas
impresionantes.
Uno de estos proyectos es GarabatoBOT, un robot creado para
dibujar garabatos sencillos sobre una pizarra acrilica vertical.
El funcionamiento de este robot se basa en una estructura impresa
en 3D, una placa Arduino Pro Mini y otros componentes que se
listan en su sitio web oficial: [Link]
com/2012/03/25/proyecto-de-mig-3.
Como vemos en el sitio oficial del proyecto, su instalacién es simple
pues se utilizan dos cuerdas adosadas a las esquinas superiores de la
pizarra y conectadas a poleas que sujetan los motores, de esta forma se
logra el movimiento y las marcas realizadas por un lapiz para pizarra
asegurado al cuerpo del robot.
[Link] 28711, POTENCIAL DE ARDUINO
DoodleBOT
Demadeftutes 25mare, 2012 MAF 28 comentarios
Proyecto de Miguel Angel de Frutos
Hoy 0s presento a GarabatoB0T!
I Este proyecto, creado por Miguel Angel de Frutos, nos presenta una de las posibilidades de
Arduino en la robdtica,
Lector de huellas
Las posibilidades de Arduino también se relacionan con la seguridad, por ejemplo,
en lo relacionado con la lectura de las huellas digitales. En el proyecto que
encontramos en el sitio web [Link]/id/DIY-Fingerprint-
Scanning-Garage-Door-Opener, se utiliza una placa Arduino UNO para
programar un ATtiny85 y un ATmega328 para detectar una huella y abrir la puerta
de un garaje.
288 [Link]ARDUINO
EI kit que se comercializa gracias al proyecto MeArm entrega a los usuarios novatos todo lo
necesario para construir su brazo robotico. Los usuarios con mas experiencia pueden imprimir sus
ropias piezas.
Otra de las aplicaciones de Arduino en la robética la encontramos en
el proyecto MeArm, un brazo robético que podemos adquirir a través
de un kit que contiene todo lo necesario para construirlo,
Este brazo robotico, que se encuentra en la direccién web https://
store. [Link]/products/mearm-pocket-sized-robot-arm,
tambi
n puede construirse desde cero, solo debemos descargar los
planos desde la web oficial e imprimirlo en 3D.
Arduino y drones
La construccién de drones no es un tema ajeno al mundo de Arduino,
en la Web encontramos proyectos tales como Ardupilot (http://
[Link]) 0 Arducopter ([Link]). Ambas
opciones nos proporcionan completos tutoriales y ayuda para
construir nuestros propios modelos voladores.
[Link] 28911, POTENCIAL DE ARDUINO
Il AeroQuad es un software de controlador de velo que funciona en Android; ofrece una
‘completa documentacién por lo que es una excelente oportunidad para trabajar en la construccién
de drones y cuadricépteros. Su web se encuentra en http: //aeroquad. com/content . php.
290
Aunque construir un dron puede parecer una misién demasiado
compleja, la verdad es que se trata de uno de los proyectos mas
populares en la actualidad, y, gracias al controlador de vuelo
YMFC-V2 3D, podremos hacerlo en forma sencilla, utilizando la placa
Arduino UNO.
En la web oficial del proyecto ([Link]/ymfc-3d_v2_
[Link]), su creador, Joop Brokking, nos ayuda en todo lo que
necesitamos para construir nuestro propio dron basado en Arduino.
Construir tu propio Arduino
Hemos conocido algunos proyectos realmente fascinantes que
se han creado con Arduino, pero eso no es todo, como ya hemos
mencionado, las posibilidades son realmente infinitas. Por ejemplo,
si consideramos que el proyecto Arduino es open source, {por qué no
construir nuestra propia placa?
[Link]mo ARDUINO
En realidad, podemos crear un clon compatible adaptando su
tamafio y su forma a nuestras necesidades particulares. Aunque esto
pueda parecer una tarea enorme, solo necesitamos contar con los
componentes adecuados y seguir las instrucciones que se encuentran
disponibles en el sitio web oficial.
More by si
aye
Related
UPDATE: Read about the fist journey of Pai Arduino Ki, i
1 La construccién de un clon de Arduino es un proyecto realmente interesante. En el sitio www.
[Link]/id/Palm-Arduino-kit, encontraremos las instrucciones detalladas para lograrlo.
[Link] 29111, POTENCIAL DE ARDUINO
ERE CECT
En este capitulo hemos dado un paseo a través de las diversas
aplicaciones en las que puede utilizarse una placa Arduino. Vimos que el
mundo de Arduino es realmente mas amplio de lo que pensdbamos y que
los proyectos que realizamos a través de los capitulos de este libro solo
‘son un primer paso, ya que podemos lograr lo que nuestra creatividad
sea capaz de vislumbrar. Entre los proyectos que conocimos en este
capitulo se encuentran algunos relacionados con la domdtica, la robotica
y los drones, Ademas, hemos revisado la posibilidad de crear nuestra
propia placa Arduino.
292 [Link]En este apéndice, conoceremos algunos elementos
apropiados para dotar de mayores capacidades
a nuestros proyectos con Arduino, se trata de
las placas shield. Aqui veremos para qué sirven
y cuales son las opciones disponibles.AP. SHIELDS oma
QUE ES UNA SHIELD
En forma sencilla, una shield no es mas que una placa electronica que
puede ser conectada encima de la placa Arduino, para extender sus
capacidades. Podemos pensar en una shield como en un dispositivo
externo que conectamos a una computadora y que nos permite realizar
funciones adicionales, por ejemplo, una impresora, un escaner, un
teclado, un mouse, etcétera.
Una de las principales caracteristicas de las shields, al igual que de
las placas Arduino, es que se trata de elementos de hardware faciles de
conectar y con precios accesibles, de esta forma nos permiten trabajar
en la realizacién de nuestros prototipos electrénicos de forma sencilla,
rapida y econémica. Pero, sin duda, lo mas interesante de una shield es
que proporciona funciones adicionales a una placa Arduino, y otorga
nuevas posibilidades sin necesidad de adquirir otra placa,
La conexién de una shield es sencilla, pues se trata de elementos
modulares que siguen la filosofia de Arduino: accesibilidad y facilidad
de uso.
Las shields para Arduino son modulares y apilables, por lo que es posible utilizar
varias de ellas en un solo proyecto, conectadas a una placa Arduino de base.
294 [Link]eS ARDUINO
Caracteristicas generales
Gracias a su modularidad, la conexién de una shield es una tarea
sencilla, pues solo debemos montarla sobre la placa Arduino.
Es posible montar varias shields, unas sobre otras, para obtener
novedosas aplicaciones y muchas caracteristicas adicionales.
Al ser apilables, una shield se comunica utilizando los pines
digitales o analégicos de la placa Arduino, aunque también pueden
utilizar el bus SPI 0 12C, el puerto serie, o los pines de interrupcion.
Para alimentarse, por lo general, utilizara los pines de SV y GND.
Las shields oficiales presentan un factor de forma que sigue las
especificaciones de la placa Arduino; asi, tendran los pines con un
espaciado definido y encontraremos solo una forma de conectarlo.
Esto dara como resultado que la conexién y el uso de una shield seran
sencillos, y se minimizaran los errores relacionados con una conexién
realizada en forma incorrecta.
I En esta imagen vemos una
shield preparada para funcionar
con la placa Arduino Nano. Esta
shield especifica nos proporciona
una conexin Ethernet.
[Link] 295AP. SHIELDS ea
No todas las shields son iguales, tampoco
“Antes de son compatibles con todas las tarjetas Arduino,
por esta razén sera necesario que leamos
elegir una detenidamente la documentacién de cada shield
shield especifica antes de adquirirla o de utilizarla en un proyecto
especifico.
debemos Ademias de esto es importante tener en cuenta
comprobar su que algunos modelos presentan pines que no
compatibilidad.”
296
permiten la conexién de mas shields por encima
de ellos, estos tipos de shields deben utilizarse
como elementos terminales.
La gran cantidad de placas Arduino existentes
y también los diversos fabricantes de shields hacen que la tarea
de clasificarlas y enumerarlas sea algo dificil. A continuacién,
presentaremos una Tabla que retine ejemplos de shields para Arduino
junto a sus respectivas descripciones.
Esta protoshield para
Arduino es compatible
con tarjetas Arduino UNO,
Leonardo, etcétera; también
puede ser utilizada con
‘Arduino MEGA2560.
[Link]eS ARDUINO
SHIELDS PARA ARDUINO
Saws) seize)
Arduino Se trata de una shield disefiada por el equipo de Arduino, por !o
Motor Shield que la compatibilidad esta garantizada. Se basa en el circuito
L298, permite manejar cargas inductivas, como relevadores,
solenoides, motores de DC y motores a pasos, por lo tanto,
nos permitira controlar la velocidad y la direccién de hasta dos
motores de corriente directa o un motor a pasos.
Ethernet Shield Esta shield es adecuada para trabajar en proyectos de domotica,
como control de acceso, redes de sensores, dataloggers,
Conexion con servicios en la nube (web services), etcétera, asi
como también en aplicaciones que requieren la implementacion
de protocolos TCP/IP.
Monster Gracias a esta shield, podremos controlar motores de corriente
Motor Shield directa que requieren hasta 15 amperes. Esta shield esta
VNH2SP30 pensada para funcionar en aplicaciones automotrices, es muy
confiable para el manejo de motores en ambientes dificiles.
Shield con Nos ofrece una pantalla LCD tactil de 2.4 pulgadas. Se trata de
pantalla LCD una shield adecuada para proyectos con Arduino DUE o Mega.
La pantalla incluida posee una resolucién de 320x240 pixeles.
Shield GPS para Esta shield proporciona la capacidad de recibir sefiales de GPS y
Arduino almacenar las coordenadas recibidas en una tarjeta micro SD. Se
basa en un médulo EB-365, y es compatible con Arduino UNO y
Arduino Mega.
Shield XBee Se trata de una shield que ofrece capacidades inalambricas a
nuestros proyectos. Gracias a XBee, es posible conectar los
mOdulos de radiofrecuencia compatibles con XBee, y podremos
seleccionar los pines utilizados para comunicarse con los
médulos de radio.
1H Ejemplos de shields para Arduino junto a sus principales caractersticas.
‘[Link] 297AP. SHIELDS
La oferta de shields es variada y esté muy lejos de ser estatica, por
lo tanto, cada cierto tiempo apareceran nuevas propuestas o versiones
renovadas de las shields que ya conocemos, esto nos permitiré avanzar
cada vez mas en la realizacion de nuestros proyectos.
Conexion de una shield
La conexién de una shield debera hacerse con la placa Arduino:
apagada, porque, al conectarla bajo tension, podemos obtener
consecuencias no deseadas. Es necesario que los pines de la shield
encajen suavemente; después, presionaremos en forma cuidadosa
hasta que la conexion se realice por completo.
La shield debe
encajar correctamente
en los pines de la placa
Arduino, es necesario
presionar con cuidado
para lograr una conexién
correcta. Luego de
conectar la shield,
podemos encender la
placa Arduino,
Listado de Shields
Como sabemos, existe una enorme cantidad de shields disponibles en el mercado.
Cada fabricante nos propone un listado propio de shields que cubren diferentes ne-
cesidades, y son aplicables a distintas placas y proyectos. Para tener informacion
sobre una gran cantidad de shields, podemos visitar el sitio web [Link]
org, donde encontraremos un listado de fabricantes; al seleccionarlos, veremos
una lista de shields y sus principales caracteristicas.
298 [Link]ea ARDUINO
SHIELDS DISPONIBLES
Ya sabemos que existen muchas shields para Arduino, algunas
se califican como oficiales, y otras se agrupan como no oficiales;
podemos utilizar cualquiera de ellas, aunque debemos tener en
cuenta que los elementos oficiales nos garantizan la compatibilidad
con ciertas tarjetas Arduino.
Alo largo de los capitulos que componen este libro, hemos
aprendido a visualizar las posibilidades que nos ofrece una placa
Arduino, las opciones son muchas, pero, al integrar una shield, el
potencial aumenta considerablemente. Existen muchas shields, a
continuacién conoceremos algunas de las mas importantes y sus
principales caracteristicas.
Ethernet Shield
La Ethernet Shield proporciona acceso a la red local, por lo tanto, puede
ser utilizada en diversos proyectos.
La conexion de una Ethernet Shield solo requiere encastrar
cuidadosamente los pines adecuados sobre la placa Arduino, luego de
esto podemos conectar la alimentacion a dicha placa mediante un cable
USB a la computadora y, también, conectar un cable de red a la shield.
Para conectar la shield a la red, es necesario
contar con un cable de red RJ45, cuyos
extremos deben conectarse al puerto adecuado “EI shield
de la shield y al router 0 a un punto de red, Ethernet es
respectivamente. Una vez que la conexién se .
ha realizado, las posibilidades de Arduino una de las mas
aumentan, por ejemplo, es posible conectarse a utilizadas, nos
internet o crear un servidor web con Arduino.
Comprobar que la conexién de la Ethernet otorga acceso
Shield a la red se ha realizado en forma correcta alared local
es sencillo, pues generalmente junto al conector
RJ4S, incluye un LED que se encendera cuando por lo que abre
la conexion a la red se concrete. Asimismo, interesantes
podemos verificar que se enciende la luz que Sao
corresponde al puerto conectado a la shield en posibilidades.”
el panel frontal del router.
[Link] 299AP. SHIELDS es
La Arduino Ethernet Shield proporciona un
puerto RJ45, que, al ser conectado a una placa
Arduino, permite unirla a una red para acceder a
internet, crear un servidor web o realizar tareas
relacionadas con domética y redes.
Lo primero que debemos hacer es conseguir una direccién IP valida,
y para ello podemos utilizar algunas lineas de cédigo que se integran
en los ejemplos del Arduino IDE. Para importar las librerias necesarias
escribimos las siguientes lineas
#include
#include
#include
byte mac[] = { 0x00, OxAA, OxBB, OxCC, OxDE,
0x02};
EthernetClientclient;
voidsetup ()
{ [Link] (9600) ;
while (!Serial) { ; }
[Link]("Buscando DHCP...”) ;
if ([Link](mac) == 0)
t [Link](*Falla en 1a configura-
cién DHCP”) ;
Gs Gh) 3
}
[Link]("IP : “);
for (byte B = 0; B < 4; Btt) {
[Link] ([Link]()[B], DEC) ;
[Link](".”);
[Link] 301AP. SHIELDS
}
[Link]() ;
[Link](*IP Router: “);
for (byte B = 0; B< 4; Btt) {
[Link] ([Link]() [B], DEC);
[Link](".”);
}
[Link]() ;
,
voidloop() {
Hasta aqui utilizamos la shield solo para conectarnos a una red local
y negociar una direccion IP mediante DHCP, la que después mostramos
mediante el puerto serie.
BW En muchos proyectos sera interesante
contar con una memoria micro SD. Para
registrar datos desde sensores 0 para
almacenar informacion, la Ethernet Shield
incorpora una ranura para micro SD.
[Link][Users] ARDUINO
Otra de las posibilidades de la Ethernet Shield es acceder a internet
y realizar navegacion o consultas especificas, por ejemplo, gracias a
un sketch incluido en el IDE de Arduino es posible buscar en Google y
mostrar el resultado mediante el puerto serie.
Debemos tener en cuenta que esta tarea genera mucha informacién y
Negara en formato HTML, por lo que ser necesario copiarla, pegarla en
un editor de texto plano asignandole la extensi6n .html y, luego, abrirla
con un navegador web para ver su contenido. El cédigo de ejemplo de
WebClient es el siguiente
#include
#include
byte mac{] = { OxDE, OxAD, OxBE, OxEF, OxFE, OxED
ye
//1PAddress server (74,125,232,128) ;
char server[] = “[Link]”;
IpAddressip(192, 168, 1, 177);
EthernetClientclient ;
voidsetup ()
{ Serial .begin (115200) ;
while (!Serial) ;
if ([Link](mac) == 0)
{ [Link](*Failedto configure Eth-
ernet using DHCP”);
[Link](mac, ip) ;
}
delay (1000) ;
Serial.print1n(“connecting...”);
if ([Link] (server, 80))
{ [Link] (“connected”) ;
client.print1n ("GET /search?q=arduino HTTP/1.1”) ;
client.print1n(“Host: [Link]”) ;
client.print1n("Connection: close”);
[Link] 303AP. SHIELDS
304
[Link]() ;
y
else
Serial.print1n(“connectionfailed”) ;
,
voidloop ()
{ if ([Link]())
{char ¢ = [Link]();
[Link](c) ;
}
if (![Link]())
{ [Link]();
Serial.print1n("disconnecting.”) ;
client. stop();
while (true) ;
,
Arduino WiFi Shield
Una shield WiFi proporciona conectividad inalambrica a nuestra
placa Arduino, por lo tanto, nos permite conectarnos a internet en
forma inalambrica. Su funcion es similar a lo que revisamos sobre
Ethernet Shield, pero en este caso se utiliza la infraestructura de
comunicaciones WiFi.
Existen diversas shields con capacidad WiFi, por ejemplo, la
Arduino WiFi Shield 0 también la WiFi Shield CC3000.
La primera de ellas, nos permite conectar una placa Arduino a
internet haciendo uso de WiFi y de la WiFi Library; también posee un
slot para una tarjeta micro SD. Para comunicarse con Arduino, utiliza el
bus SPI mediante los pines ICSP, usa los pines 4 y 10 de igual forma que
la Ethernet Shield. Debemos tener en cuenta que también utilizara el
pin 7, por lo que no podremos contar con él para nuestros proyectos.
Otro punto que debe considerarse es que las tarjetas micro SD y WiFi
usardn el bus SPI, por lo tanto, no es posible que trabajen en forma
simultanea.
[Link]I La Arduino WiFi Shield también
incorpora una ranura para tarjetas
micro SD; como vemos en la imagen,
se basa en un chip ATMEL.
Otra opcién que fue bastante usada es la WiFi
Shield que se fundamenta en el chip CC3000
de Texas Instruments. Este chip esta en la base
de muchas aplicaciones de 10T o Internet Of
Things y resuelve las comunicaciones WiFi en
forma accesible. Por esta razén, es el pilar de
algunas shields que buscan ofrecer conectividad
inalambrica sin que sea necesario desembolsar
las sumas de dinero que se asocian a la shield
WiFi oficial de Arduino.
Existen diversas shields WiFi que basan
su funcionamiento en el chip CC3000, por
ejemplo, variantes de las placas de Adafruit,
que también incorporan un lector de tarjetas
micro SD y, ademas, permiten trabajar con las
librerias CC3000.
[Link]
ARDUINO
“Gracias a
la biblioteca
WiFi es
posible escribir
programas que
conecten Arduino
a Internet,
mediante la
WiFi Shield”
305AP. SHIELDS, oa
3088 WiFi Shield
AECL
Serer an)
En esta imagen vemos una
shield WiFi que se basa en el
chip CC3000.
En términos generales, el chip CC3000 usa SPI para comunicarse con
el exterior, por esta raz6n, la velocidad puede ser alterada dependiendo
de las necesidades. Soporta 802.11b/g, Open/WEP/WPA/WPA2 Security,
TKIP, y también AES. Incorpora un stack TCP/IP completo y permite
efectuar un maximo de 4 conexiones concurrentes.
Para utilizar la WiFi Shield CC3000, sera necesario descargar la
libreria adecuada, podemos buscarla bajo el nombre Adafruit_
CC3000_Library-master. Una vez que hayamos instalado la libreria,
comenzaremos a trabajar con los primeros sketchs. Aunque existen
muchos procedimientos y métodos interns que son nuevos, podemos
iniciar de la siguiente forma.
#include
#include
fdefine ADAFRUIT_CC3000_ IRQ 3
fdefine ADAFRUIT_CC3000_VBAT 5
define ADAFRUIT_CC3000_CS 10
Este cédigo incluye las librerias que necesitamos y, también, se
encarga de establecer los pines de control.
306 [Link][USERS] ARDUINO
Otro punto importante es definir los datos que u
efectuar una conexién mediante WiFi
lizaremos para
#define WLAN_SSID “mi-red”
#define WLAN_PASS “password”
#define WLAN_SECURITY WLAN_SEC_WPAZ
Para inicializar el chip WiFi, utilizamos ¢¢[Link](), también es
necesario comprobar que esta tarea ha resultado correcta:
Serial. begin (115200) ;
[Link]("Buscando chip CC3000!”) ;
[Link] ("Inicializando chip CC3000 ...”);
if ([Link]())
{ [Link]("\nError al inicializar” );
[Link]() ;
exit (0) ;
d
Es recomendable limpiar los datos que corresponden a conexiones
anteriores, podemos hacerlo de la siguiente forma:
[Link]("Eliminar datos de conexién “);
[Link]() ;
Modulo WiFi
‘Aunque las shields WiFi nos proporcionan una forma eficiente de otorgar
conectividad WiFi a nuestra placa Arduino, su principal dificultad es que los
valores que encontramos en el mercado no resultan muy accesibles. Podemos
buscar tanto una shield no oficial como algunas que se basan en un chip CC3000,
0 también decidir que utilizaremos un mddulo WiFi. Una de estas opciones es
el médulo WiFi ESP8266, que incluye todo lo que necesitamos para lograr
una comunicacién en la banda WiFi. De esta forma tenemos, en un pequefio
componente de bajo costo, un procesador y conectividad WiFi.
[Link] 307AP. SHIELDS
amos la funcién ¢¢[Link], con los
Para conectar, uti
datos de conexién que especificamos antes:
char *ssid = WLAN_SSID;
[Link](*Conectando a “); Serial.
print (ssid) ;
if ([Link](WLAN SSID, WLAN PASS, WLAN_
SECURITY) )
{ [Link](“Error al conectar..”);
[Link](); exit (0);
)
[Link]("Conectado, esperando DHCP”) ;
Arduino Motor Shield
Esta shield oficial hace posible que la tarea de manejar dos motores DC,
controlando su direccion y su velocidad, pueda realizarse en forma
sencilla y sin demasiadas complicaciones. Su construccién se basa en la
presencia de un chip de doble puente H ST L298.
La Arduino
Motor Shield
entrega la
posibilidad de
conectar y
controlar motores
en forma sencilla,
STaeNy
tk
308 [Link]oes ARDUINO
Como hemos aprendido, una de las bondades del hardware libre
es que hace posible la aparicion de alternativas y modificaciones, y
esto se convierte en un punto a favor del entusiasta de la electronica,
conformarse con una sola shield. El control de
motores no es la excepcién pues la shield oficial de Arduino no es la
nica disponible, existen muchas opciones en el mercado, por ejemplo
la Motor Shield V1 de Adafruit, que nos permite trabajar con cuatro
motores de corriente continua més dos servos 0, también, dos motores
paso a paso.
Si estamos trabajando con cargas pequefias o recién empezamos a
experimentar con la conexién de motores, el Motor Shield V1 es una
excelente opcién, pero, si necesitamos fuerza, podemos pensar en la
version V2.
Por otra parte, también esta disponible RAMPS, se trata de una
shield disefiada para la placa Arduino MEGA, que permite controlar
cinco motores paso a paso; esta, sin duda, se trata de una opcion
mas profesional, adecuada para casos especificos, por ejemplo, las
impresoras 3D de RepRap.
pues no es necesai
[Link] 309AP. SHIELDS ea
EZ ESL
En este apéndice hemos dado un paso mas en la tarea de profundizar
en el mundo de Arduino. Revisamos las shields y aprendimos que se
trata de elementos modulares que se pueden conectar en forma sencilla
aciertas placas Arduino, otorgando nuevas funciones y caracteristicas
que las placas no ofrecen en forma predeterminada. Vimos los pasos
necesarios para conectar una shield y también conocimos algunas shields
especificas. Analizamos las caracteristicas y algunos ejemplos de uso de
Ethernet Shield y WiFi Shield, y caracterizamos a una Motor Shield.
310 [Link]ST) a LATS
al lector
hi
Re”
En este apéndice hemos incluido recursos para seguir
aprendiendo; sitios web recomendados y programas
relacionados con la obra.SERVICIOS AL LECTOR es
EacuiAs DE ARDUINO
[Link]
Completa coleccién de guias de inicio que nos permitiran trabajar con Arduino y realizar
interesantes proyectos. Se trata de una wiki de recursos, por lo que puede ser ampliada
por los usuarios.
EASCRATCH 4 ARDUINO
[Link]
Plataforma para programar Arduino mediante bloques, ofrece la posibilidad de admitir
la conexién con una placa Arduino y affadir los bloques correspondientes que permiten
interactuar con ella en forma sencilla.
312 [Link]ea ARDUINO
Ei mBLock
[Link]
Plataforma de Makeblock, desarrollador del robot mBot, se trata de un scratch
modificado, que permite programar sus dispositivos. Como los robots de esta empresa
se basan en Arduino, esta plataforma es una excelente opcién para programarlos.
Ei BITLoa
[Link]
Bitblog es el software que permite programar y controlar los dispositivos que se
encuentran basados en Arduino, enfocados tanto al hogar como al aula, comercializados
por la empresa BQ.
[Link] 313SERVICIOS AL LECTOR
EA SCRATCHX
[Link]
Plataforma coordinada por el MIT que nos ofrece extensiones experimentales posibles
de ser probadas sobre Scratch. ScratchX hace posible agregar cédigo para programar
sistemas dedicados a LEGO Mindstorms, LittleBits y Arduino.
EX TUTORIALES [Link]
[Link] Page
Sitio web que retine una gran cantidad de tutoriales de la comunidad [Link].
En esta direccién encontraremos guias detalladas y, también, instrucciones paso a paso
para generar diversos proyectos.
314 [Link]ARDUINO
FA MINIBLOQ
[Link]
[Link]
Plataforma que nos permite crear programas mediante la mezcla de estos bloques
grAficos con instrucciones de la programacién tradicional, Se trata de una opcién para
usuarios con mas experiencia.
miniBloq
FA ARDUBLOCK
[Link]
Lenguaje de programacién compatible con Arduino, nos permite crear programas con solo
arrastrar y soltar bloques para programar una placa Arduino.
[Link] 315SERVICIOS AL LECTOR es
EA FOREFRONT
[Link]
Guia de inicio para dar los primeros pasos en Arduino. Nos proporciona informacién
relevante, y ensefta cémo realizar unos sencillos programas iniciales en la IDE oficial.
erica)
‘The Absolute Beginner's Guide to Arduino
EA sPARKFUN
[Link]
Se trata de una tienda online de electronica que también nos ofrece acceso a contenido
interesante sobre el desarrollo Arduino. Su activa comunidad la ha convertido en una
referencia en cuanto a los contenidos para fomentar el autoaprendizaje de Arduino.
Latest Tutorials seat tee
© @i‘* a
Latest Videos swe niviees
316 [Link]ARDUINO
EXINSTRUCTABLES ARDUINO
[Link] [Link]/id/Beginner-Arduino/
Instructables es una de las webs de referencia para makers. También posee una seccién
dedicada a Arduino, donde encontramos excelentes tutoriales para iniciarnos en esta
plataforma de electrénica,
Bogliner Arduino mpm = *
EX aDAFRUIT
[Link]
Adafruit es una de las tiendas de electrénica online mas reconocidas de los tiltimos
afios, lo interesante es que también dedica esfuerzos a la formacién. En su sitio web,
encontramos diferentes cursos y tutoriales disponibles en forma gratuita.
eee
LEARN ARDUINO
[Link] 317SERVICIOS AL LECTOR
INDICE TEMATICO
A
Adaptador de coriente..
Adquisicin de datos.
Arduino .. sin
Arduino Create.
Arduino Due...
Arduino ESplOra nnn manencannaniO
Arduino Fo... son
Arduino Leonardo ..n. cite
Arduino LilyPad. Co . 48
Arduino Mega, 46
Arduino Micro. 50
‘Arduino Motor Shield 297
Arduino Pro
‘Arduino Pro Mini.
‘Arduino UNO aes
‘Arduino WiFi Shield... 304
Arduino Yo ncn 43
Arduino Zero. - al
Arduino Zero Pro. 42
Ate 54
‘Atmel AVR 30
‘Austomatizacin industrial... 53
B
Baterias LiPo... 33
Bot6n de reiicio.... 61
Broche de presién de pila. amma $0
Bi ca cicoriracniecnicrramenannaallO0)
BUSES onsnnsnnnnsnnsnnsnnnnnnnee 6D
Buzzer anasianac 98
c
Cable de conexién 68
Cables de puente 70
Canal central 6
318
Capacitor...
Carga eléctrca..
Cargar un sketch...
Circuitos analdgicos
Circuitos digitales.....
Circuitos electrénicos..
Circuitos integradbs..
Circuitos mixtos.
Clavija 13 Led
Clavias digitales.
Compilador
Componentes activos
Componentes electrénicos.
Componentes pasivos
Comunicacién I2C...
Comunicacién SPI.
Comunidad.
Condensador.
Condensador.
Conectar un buzzer
Conectar un display LCD.
Conectar un LED
Conectar un potenciémetro...
Conectar una fotorresistencia
Conectar una shield.
Conectar varios LED:
Conexiones basicas..
Configurar el IDE
Controlar un LED...
Corriente transitoria,
Crear un reloj digital.
D
Datos.
Depurador.
Diferencia de potencial
sone 23
16
132
20
20
19
23
sons 20
61
6
34
al
a
22
66
seve OF
28, 36
23
74
249
266
167
231
soe 298
«180
seve 12
sone M8
90, 172
son 16
215
151
35
15
[Link]Diodo Zenner...
Display LCM 1602C.
Dometica
Editor de cédigo..
Eficiencia energética..
267
53
Electrcidad
Elect6n os 17
Electronica, 0 v7
Encender ocho LEDs. 193
Encender seis LEDs. 190
Energia eléctrica 15
Energizar ArdUiNO rune 81
Entorno de trabajo...
Entrada analégica.... 61
Entrenamiento electrénico.. 54
Estructuras de control. 156
Ethernet Shield 297, 299
F
Flujo de corriente......se 76
Fotorresistencia,
Fuente de alimentacién..
Funciones...
(OE.
Incorporar iteraciones.
Instalar Arduino IDE..
176
110
Instalar una [Link] son 2B
Internet de las C0588 wns 55
Interrupciones externas... 67
Lector de huella..... 288
[Link]
ARDUINO
LED dacieinnas 164
LED de corriente 61
LED TK. ssn
Leer sensor de temperatura. 206
Ley de Ohm. 16
Libreria LiquidCrystal 27
Librerias... 122
Loops... 160
Luces ambientales.... 1285
M
MARE csnimnmanveinnnsanoinannnne dS
Materia 4
Materia 101 30
MCU. 24
MeArm. 289
Memoria... 122
Microcontroladores.. 23
\Microprocesador : . 66
(Médulo WiFi set sn 307
Monitorizacién... 54
Monster Motor Shield, 297
Motor de corriente continua, 87
MPU. 24
319SERVICIOS AL LECTOR
0
Open source. 36
Operadores: 151
Optoacoplador..
Orbitas..
P
Pantalla de cristal liquido....
PI ae
Pilas AA...
85, 260
Pines analégicos sc 64
PINES CIGHAIES rn rninnannnnnnnannene OB
Pistas. 6
Placa de desarrollo..nse ssn 59
Piacas Arduino. — 31
Phacas 10 oficiales neem a8
320
Placas oficiales...
Posiblidades de Arduino...
Potencia eléctrica...
Potencidmetro..
Protoboard..
Prototip2do nnn
Proyecto basico...
Prueba de conexién,
Puente H..
Puerta logica,
Puerto USB...
Pulsador. nn
Reproducir melodia. ns 254
Reproducir sonidos ..nnn sn 253
Resistencias
Robotica...
Ss
Sensor nn svn 200
‘Sensor de inclinacin ne. 100
‘Sensor de temperatura
‘Sensor LDR...
‘Servomoter....
Shield...
‘Shield con pantalla LCD
Shield GPS.
Shield Xbee..
soe 39
282
166
28, 33
TMRDOM ssnnesssnnnes 257
Tone. 247
Transistor. 18
Triac ' 22
[Link]pROGRAMACION
wv
= NINOS:
cist 8
oor Guia ual eS ect) "
"fenrem ia programa
ecion 2
See Guia visual 4 29 vec
B ioe Ja programac
=" INOS
‘= EDUCACION - DESARROLLO
‘NIVEL: BASICO | 936 PAG
LEA EL SUMARIO COMPLETO Y UNA MUESTRA
TOU ela tala ta aed if
© [Link]
><|usershop@[Link]
54 (011) 4110-8700Cea
ARDUINO CO
Este libro ofrece al lector los conceptos necesarios para desarrollar sus proyectos
en Arduino: la electronica basica, el hardware y el entorno de programacion.
De manera didactica y paso a paso, se explican distintos proyectos
practicos para que el lector obtenga sus primeros prototipos. bd
SY
aay
> Electronica general
> Placas Arduino
> Shields
> Programar Arduino
> LEDs y sensores
> Proyectos: deteccion
de luz, sonidos
> Robotica, drones y mas.
OGLE EI
a ag
>> SOBRE EL AUTOR
Cau Pea Miles es un police
autor dcente de een Diige
tales de Artin, donde ensena
Conceptos sins de preramaciony
elena para ios y vers,
>> NIVELDEUSUARIO >> CATEGORIA
Intermed / raza Harare / eels /rogramacion saiveiveaaatins
USERSHOPREDUSERS COM PROFESOREN LINEA | | |
Ri Ceonra bs ees Jeter sa eis aconate cna, pn
eset Coricaae cn ames ogee pesrsresereim, — 9 "7898744651877"