You are on page 1of 21

Arduino

PRESENTACIN
Arduino es una plataforma desarrollo electrnico open source basado en un software y hardware
flexible y fcil de usar. Arduino puede percibir el entorno en el que se ejecuta mediante la lectura de una
variedad de sensores y puede interactuar con el entorno utilizando luces, control de motores, y otros
actuadores.
El curso se desarrollar ntegramente sobre Arduino para obtener sistemas autnomos o que se
puedan comunicar con el software que se ejecute dentro en un ordenador (por ejemplo, Processing,
Matlab, o LabVIEW) o dentro de un telefono. Se ensear a utilizar las hojas de datos de todos los
componentes para trabajar de forma ptima, y al mismo tiempo ensear los conceptos fundamentales
de electrnica para iniciarse en el desarrollo hardware e introducirse en el diseo de circuitos impresos
utilizando la plataforma Fritzing.

Objetivos General:
Que los alumnos se introduzcan al desarrollo de software embebido sobre la plataforma Arduino,
y una introduccin bsica de electrnica que les permita avanzar en nuevos desarrollos.

Objetivos especficos:
Que los participantes:

Comprendan y aprendan a desarrollar sobre lenguaje Arduino.

Comprendan y logren interactuar con el mundo externo utilizando sensores y actuadores.

Comprendan y logren comunicarse con la computadora y otros Arduinos utilizando el puerto


serial.

Logren una comprensin mnima de electrnica fundamental: Ley de Ohm, Leyes de Kirchhoff y
conozcan los instrumentos bsicos como Multmetros y Osciloscopios.

Destinatarios:
Esta dirigido al pblico general interesado en introducirse en el desarrollo electrnico,
automatizacin, adquisicin de datos, domtica y sistemas de control, artistas, diseadores, y hobbistas
que quieran construir objetos interactivos utilizando esta plataforma. Tambin para futuros estudiantes
de carreras de grado como Ing. Electrnica.

Duracin:
12 clases de 3 horas, totalizando 36 horas, con una carga horaria semanal de 3hs.

Docente:

Matias De lellis: Estudiante de Ingeniera Electrnica, desarrollador de Huayra GNU/Linux Conectar Igualdad.

Correo:

mati86dl@gmail.com

Grupo de Discusin:

https://groups.google.com/d/forum/curso-arduino-sceu-utn-frba

INTRODUCCIN
Qu es Arduino?
Arduino es una plataforma de prototipos de cdigo abierto basado en hardware y software fcil
de usar. Las placas Arduino son capaces de leer entradas (la luz en un sensor, la pulsacin de un botn, o
un mensaje de Twitter) y convertirla en una salida (la activacin de un motor, encender un LED, publicar
algo en lnea). Todo esto se define por un conjunto de instrucciones programadas a travs del Software
Arduino (IDE).
A travs de los aos Arduino ha sido el cerebro de miles de proyectos. Una comunidad mundial
de los fabricantes (estudiantes, aficionados, artistas, programadores y profesionales) se ha reunido
alrededor de esta plataforma de cdigo abierto, y sus contribuciones han aadido una increble cantidad
de conocimiento accesible que puede ser de gran ayuda tanto para los principiantes como para expertos.
Arduino naci en Italia en instituto de diseo IVREA como una herramienta de prototipado fcil,
rpida, dirigido a estudiantes sin experiencia en electrnica ni programacin. Tan pronto como lleg a
una comunidad ms amplia, la placa Arduino comenz a cambiar para adaptarse a las nuevas
necesidades y desafos, diferencindose de otras placas de 8 bits mas simples con productos para
aplicaciones de la IoT (Internet of Things), impresin 3D, wearable (vestibles) y entornos embebidos.
Todas las placas Arduino son completamente de cdigo abierto, permitiendo a los usuarios crear de
forma independiente y, finalmente, adaptarlos a sus necesidades particulares. El software tambin es de
cdigo abierto, y est creciendo a travs de las aportaciones de los usuarios en todo el mundo.

Porque Arduino?
Gracias a su sencilla y accesible experiencia de usuario, Arduino se ha utilizado en miles de
diferentes proyectos y aplicaciones. El software de Arduino es fcil de usar para los principiantes, pero lo
suficientemente flexible para los usuarios avanzados. Se ejecuta en Mac, Windows y Linux. Los
profesores y los estudiantes lo utilizan para construir los instrumentos cientficos de bajo coste, para
demostrar los principios de qumica y fsica, o para iniciarse en la programacin y la robtica.
Diseadores y arquitectos construyen prototipos interactivos, msicos y artistas lo utilizan para
instalaciones y experimentar con nuevos instrumentos musicales. Los fabricantes, por supuesto, lo
utilizan para construir muchos de los proyectos expuestos en la Maker Faire, por ejemplo. Arduino es una
herramienta clave para aprender cosas nuevas. Cualquier persona - nios, aficionados, artistas,
programadores - puede comenzar a juguetear simplemente siguiendo paso a paso las instrucciones de
un kit, o compartir ideas en lnea con otros miembros de la comunidad de Arduino.
Hay muchos otros microcontroladores y plataformas de microcontroladores disponibles para
computacin fsica. Parallax Basic Stamp, de Netmedia BX-24, Phidgets, Handyboard del MIT, y muchos
otros ofrecen una funcionalidad similar. Todas estas herramientas toman los detalles sucios de
programacin de microcontroladores y lo envuelve en un paquete fcil de usar. Arduino de la misma
forma simplifica el proceso de trabajar con los microcontroladores, pero ofrece algunas ventajas para los
profesores, estudiantes y aficionados interesados sobre otros sistemas:

Accesibles: Las placas Arduino son relativamente baratos en comparacin con otras plataformas
de microcontroladores. La versin menos costosa del mdulo Arduino puede ser montado a
mano, e incluso los mdulos de Arduino premontados cuestan menos de $100

Multiplataforma: El software de Arduino (IDE) se ejecuta en los sistemas operativos Windows,


Macintosh OSX y GNU/Linux. La mayora de los sistemas de microcontroladores se limitan a
Windows.

Ambiente de programacin limpio y simple: El software de Arduino (IDE) es fcil de usar para los
principiantes, pero lo suficientemente flexible para aprovecharlo tambin por los usuarios
avanzados. Para los profesores, se basa convenientemente en el entorno de programacin
Processing (Lenguaje muy utilizado en diseo), por lo que los estudiantes que aprenden a

programar en ese entorno estarn familiarizados sobre cmo funciona el Arduino IDE.

Software de cdigo abierto y extensible: El software de Arduino est publicado como


herramientas de cdigo abierto, disponible para la extensin por programadores
experimentados. El lenguaje se puede ampliar a travs de bibliotecas C++, y la gente con ganas
de entender los detalles tcnicos pueden dar el salto de Arduino para el lenguaje de
programacin AVR C en el que se basa. Del mismo modo, puede agregar cdigo AVR-C
directamente en sus programas de Arduino si quieres.

Hardware de cdigo abierto y el extensible: Los planos de las placas Arduino se publican bajo una
licencia de Creative Commons, por lo que los diseadores de circuitos experimentados pueden
hacer su propia versin del mdulo, amplindolo y mejorndolo. Incluso los usuarios con poca
experiencia pueden construirla con el fin de entender cmo funciona y ahorrar dinero.

CONCEPTOS SOBRE ELECTRICIDAD


Qu es la electricidad?
Un electrn es una partcula subatmica que posee carga elctrica negativa. Por lo tanto, debido
a la ley fsica de atraccin entre s de cargas elctricas de signo opuesto (y de repulsin entre s de
cargas elctricas de mismo signo), cualquier electrn siempre es atrado por una carga positiva
equivalente. Una consecuencia de este hecho es que si, por razones que no estudiaremos, en un extremo
(tambin llamado polo) de un material conductor aparece un exceso de electrones y en el otro polo
aparece una carencia de estos (equivalente a la existencia de cargas positivas), los electrones
tendern a desplazarse a travs del conductor desde el polo negativo al positivo. A esta circulacin de
electrones por un material conductor se le llama electricidad.

Qu es el voltaje?
En el estudio del fenmeno de la electricidad existe un concepto fundamental que es el de
voltaje entre dos puntos de un circuito elctrico (tambin llamado tensin, diferencia de potencial o
cada de potencial). Expliqumoslo con un ejemplo.
Si entre dos puntos de un conductor no existe diferencia de cargas elctricas, el voltaje entre
ambos puntos es cero. Si entre esos dos puntos aparece un desequilibrio de cargas (es decir, que en un
punto hay un exceso de cargas negativas y en el otro una ausencia de ellas), aparecer un voltaje entre
ambos puntos, el cual ser mayor a medida que la diferencia de cargas sea tambin mayor. Este voltaje
es el responsable de la generacin del flujo de electrones entre los dos puntos del conductor. No
obstante, si los dos puntos tienen un desequilibrio de cargas entre s pero estn unidos mediante un
material no conductor (lo que se llama un material aislante), existir un voltaje entre ellos pero no
habr paso de electrones (es decir, no habr electricidad).
Generalmente, se suele decir que el punto del circuito con mayor exceso de cargas positivas (o
dicho de otra forma: con mayor carencia de cargas negativas) es el que tiene el potencial ms elevado,
y el punto con mayor exceso de cargas negativas es el que tiene el potencial ms reducido. Pero no
olvidemos nunca que el voltaje siempre se mide entre dos puntos: no tiene sentido decir el voltaje en
este punto, sino el voltaje en este punto respecto a este otro; de ah sus otros nombres de diferencia
de potencial o cada de potencial.
Tambin por convencin (aunque fsicamente sea en realidad justo al contrario) se suele decir
que la corriente elctrica va desde el punto con potencial mayor hacia otro punto con potencial menor
(es decir, que la carga acumulada en el extremo positivo es la que se desplaza hacia el extremo
negativo).
Para entender mejor el concepto de voltaje podemos utilizar la analoga de la altura de un
edificio: si suponemos que el punto con el potencial ms pequeo es el suelo y asumimos este como el
punto de referencia con valor 0, a medida que un ascensor vaya subiendo por el edificio ir adquiriendo
ms y ms potencial respecto el suelo: cuanta ms altura tenga el ascensor, ms diferencia de potencial
habr entre este y el suelo. Cuando estemos hablando de una cada de potencial, querremos decir
entonces (en nuestro ejemplo) que el ascensor ha disminuido su altura respecto al suelo y por tanto tiene
un voltaje menor.
La unidad de medida del voltaje es el voltio (V), pero tambin podemos hablar de milivoltios (1
mV = 0,001 V), o de kilovoltios (1 kV = 1000 V). Los valores tpicos en proyectos de electrnica casera
como los que abordaremos en este libro son de 1,5V, 3,3V, 5V... aunque cuando intervienen elementos
mecnicos (como motores) u otros elementos complejos, se necesitar aportar algo ms de energa al
circuito, por lo que los valores suelen algo mayores: 9V, 12V o incluso 24V.

Qu es la intensidad de corriente?
La intensidad de corriente (comnmente llamada corriente a secas) es una magnitud elctrica

que se define como la cantidad de carga elctrica que pasa en un determinado tiempo a travs de un
punto concreto de un material conductor.
Podemos imaginar que la intensidad de corriente es similar en cierto sentido al caudal de agua
que circula por una tubera: que pase ms o menos cantidad de agua por la tubera en un determinado
tiempo sera anlogo a que pase ms o menos cantidad de electrones por un cable elctrico en ese
mismo tiempo.
Su unidad de medida es el amperio (A), pero tambin podemos hablar de miliamperios (1 mA =
0,001 A), de microamperios (1 A = 0,001 mA), o incluso de nanoamperios (1 nA = 0,001 A).

Qu es la resistencia elctrica?
Podemos definir la resistencia elctrica interna de un objeto cualquiera (aunque normalmente
nos referiremos a algn componente electrnico que forme parte de nuestros circuitos) como su
capacidad para oponerse al paso de la corriente elctrica a travs de l. Es decir, cuanto mayor sea la
resistencia de ese componente, ms dificultad tendrn los electrones para atravesarlo, hasta incluso el
extremo de imposibilitar la existencia de electricidad.
Esta caracterstica depende entre otros factores del material con el que est construido ese
objeto, por lo que podemos encontrarnos con materiales con poca o muy poca resistencia intrnseca (los
llamados conductores, como el cobre o la plata) y materiales con bastante o mucha resistencia (los
llamados aislantes, como la madera o determinados tipos de plstico, entre otros).
La unidad de medida de la resistencia de un objeto es el ohmio (). Tambin podemos hablar de
kilohmios (1 k = 1000 ), de megaohmios (1 M = 1000 k), etc.

Qu es la Ley de Ohm?
La Ley de Ohm dice que si un componente elctrico con resistencia interna, R, es atravesado por
una intensidad de corriente, I, entre ambos extremos de dicho componente existir una diferencia de
potencial, V, que puede ser conocida gracias a la relacin V = IR.
De esta frmula es fcil deducir relaciones de proporcionalidad interesantes entre estas tres
magnitudes elctricas. Por ejemplo: se puede ver que (suponiendo que la resistencia interna del
componente no cambia) cuanto mayor es la intensidad de corriente que lo atraviesa, mayor es la
diferencia de potencial entre sus extremos.
Tambin se puede ver que (suponiendo en este caso que en todo momento circula la misma
intensidad de corriente por el componente), cuanto mayor es su resistencia interna, mayor es la
diferencia de potencial entre sus dos extremos.
Adems, despejando la magnitud adecuada de la frmula anterior, podemos obtener, a partir de
dos datos conocidos cualesquiera, el tercero. Por ejemplo, si conocemos V y R, podremos encontrar I
mediante I = V/R, y si conocemos V e I, podremos encontrar R mediante R = V/I.
A partir de las frmulas anteriores debera ser fcil ver tambin por ejemplo que cuanto mayor es
el voltaje aplicado entre los extremos de un componente (el cual suponemos que posee una resistencia
de valor fijo), mayor es la intensidad de corriente que pasa por l. O que cuanto mayor es la resistencia
del componente (manteniendo constante la diferencia de potencial entre sus extremos), menor es la
intensidad de corriente que pasa a travs de l.

Qu son las seales digitales y las seales analgicas?


Podemos clasificar las seales elctricas (ya sean voltajes o intensidades) de varias maneras
segn sus caractersticas fsicas. Una de las clasificaciones posibles es distinguir entre seales digitales y
seales analgicas.
Seal digital es aquella que solo tiene un nmero finito de valores posibles (lo que se suele
llamar tener valores discretos). Por ejemplo, si consideramos como seal el color emitido por un
semforo, es fcil ver que esta es de tipo digital, porque solo puede tener tres valores concretos,

diferenciados y sin posibilidad de transicin progresiva entre ellos: rojo, amarillo y verde.
Un caso particular de seal digital es la seal binaria, donde el nmero de valores posibles solo
es 2. Conocer este tipo de seales es importante porque en la electrnica es muy habitual trabajar con
voltajes (o intensidades) con tan solo dos valores. En estos casos, uno de los valores del voltaje binario
suele ser 0 o un valor aproximado para indicar precisamente la ausencia de voltaje, y el otro valor
puede ser cualquiera, pero lo suficientemente distinguible del 0 como para indicar sin ambigedades la
presencia de seal. De esta forma, un valor del voltaje binario siempre identifica el estado no pasa
corriente (tambin llamado estado apagado off en ingls , BAJO LOW en ingls, o 0) y el otro
valor siempre identifica el estado pasa corriente (tambin llamado encendido on , ALTO HIGH ,
o 1).
El valor de voltaje concreto que se corresponda con el estado ALTO ser diferente segn los
dispositivos electrnicos utilizados en cada momento. En los proyectos que utilizaremos en el curso, por
ejemplo, ser habitual utilizar valores de 5 V 3,3 V. Pero atencin: es importante tener en cuenta que si
sometemos un dispositivo electrnico a un voltaje demasiado elevado (por ejemplo, si aplicamos 5V
como valor ALTO cuando el dispositivo solo admite 3,3V) corremos el riesgo de daarlo irreversiblemente.
Seal analgica es aquella que tiene infinitos valores posibles dentro de un rango determinado
(lo que se suele llamar tener valores continuos). La mayora de magnitudes fsicas (temperatura,
sonido, luz...) son analgicas, as como tambin las ms especficamente elctricas (voltaje, intensidad,
potencia...) porque todas ellas, de forma natural, pueden sufrir variaciones continuas sin saltos.
No obstante, muchos sistemas electrnicos (un computador, por ejemplo) no tienen la capacidad
de trabajar con seales analgicas: solamente pueden manejar seales digitales (especialmente de tipo
binario; de ah su gran importancia). Por tanto, necesitan disponer de un conversor analgico-digital que
traduzca (mejor dicho, simule) las seales analgicas del mundo exterior en seales digitales
entendibles por dicho sistema electrnico. Tambin se necesitar un conversor digital-analgico si se
desea realizar el proceso inverso: transformar una seal digital interna del computador en una seal
analgica para poderla as emitir al mundo fsico. Un ejemplo del primer caso sera la grabacin de un
sonido mediante un micrfono, y uno del segundo caso sera la reproduccin de un sonido pregrabado
mediante un altavoz.
Sobre los mtodos utilizados para realizar estas conversiones de seal analgica a digital, y
viceversa, ya hablaremos extensamente ms adelante, pero lo que debemos saber ya es que, sea cual
sea el mtodo utilizado, siempre existir una prdida de informacin (de calidad) durante el proceso de
conversin de la seal.
A pesar de lo anterior, la razn por la cual
la mayora de sistemas electrnicos utilizan para
funcionar seales digitales en vez de analgicas
es porque las primeras tienen una gran ventaja
respecto las segundas: son ms inmunes al ruido.
Por ruido se entiende cualquier variacin no
deseada de la seal, y es un fenmeno que ocurre
constantemente debido a una gran multitud de
factores. El ruido modifica la informacin que
aporta una seal y afecta en gran medida al correcto funcionamiento y rendimiento de los dispositivos
electrnicos. Si la seal es analgica, el ruido es mucho ms difcil de tratar y la recuperacin de la
informacin original se complica.

REPRESENTACIN GRFICA DE
CIRCUITOS
Un circuito bsico
Para describir de una forma sencilla y clara la estructura y la
composicin de un circuito elctrico se utilizan esquemas grficos. En
ellos se representa cada dispositivo del circuito mediante un smbolo
estandarizado y se dibujan todas las conexiones existentes entre ellos.
Por ejemplo un circuito muy simple sera el siguiente.
En este esquema podemos apreciar cuatro dispositivos
(presentes prcticamente en cualquier circuito) representados por su
smbolo convencional: una pila o batera (cuya tarea es alimentar
elctricamente al resto de componentes), una resistencia (componente
especficamente diseado para oponerse al paso de la corriente, de ah su nombre), un LED (componente
que se ilumina cuando recibe corriente) y un interruptor.
En este ejemplo, la batera crear la diferencia de potencial necesaria entre sus dos extremos
tambin llamados bornes o polos para que se genere una corriente elctrica, la cual surgir desde
su polo positivo (marcado con el signo +), pasar a travs de la resistencia, pasar seguidamente a
travs del LED (Iluminndolo) y llegar a su destino final (el polo negativo de la batera) siempre y
cuando el interruptor cierre el circuito.

Ejemplo Arduino
As es que llegamos a nuestro primer ejemplo de la utilizacin de Arduino y donde
redondearemos varios de los conceptos discutidos anteriormente.
En
este
esquema
podemos
apreciar
ahora
3
componentes, el LED que pretendemos iluminar, la resistencia
para limitar la intensidad de corriente, y as proteger los
componentes, y la placa Arduino que actuara como controlador
del circuito.
Aunque no lo parezca, este circuito es esencialmente
exactamente igual al anterior. La batera necesaria para alimentar
elctricamente el circuito se encuentra implcitamente dentro de
la placa Arduino, y de la misma forma, el interruptor encargado
de cerrar el circuito para encender el LED se encuentra dentro de
la placa. Por supuesto, este no es un botn fsico, y solo estamos
haciendo una analoga. La forma de actuar sobre este supuesto
interruptor, es darle las instrucciones correctas a la placa Arduino,
para que sobre su salida D4 haya un potencial de 5V,
promoviendo una diferencia de potencial, la cual implica una
intendencia de corriente, y en consecuencia se iluminara el LED
exactamente cuando nosotros queremos.
Sin entrar en detalles que si profundizamos mas adelante, as debemos pensar a Arduino, su
utilidad ms importante es interactuar con su entorno fsico. Esta placa recibe informacin a travs de
sus entradas -Sensores, como un simple botn, o sensores de temperatura, humedad o otros-, analiza la
informacin y toma ciertas decisiones -Segn las instrucciones que tenga programada-, y finalmente
realiza ciertas tareas a travs sus actuadores como en este caso un led -Pueden ser motores, parlantes,
display, etc-.

ARDUINO UNO: Resumen de la plataforma

Descripcin
El Arduino Uno es una placa electrnica basada en el ATmega328p. Cuenta con 14 pines digitales
de entrada/salida (de los cuales 6 pueden utilizarse para salidas PWM), 6 entradas analgicas, un
resonador cermico 16 MHz, una conexin USB, un conector de alimentacin, un conector ICSP, y un
botn de reinicio. Contiene todo lo necesario para apoyar el microcontrolador. Basta con conectarlo a un
ordenador con un cable USB o a un adaptador de corriente alterna a corriente continua para empezar.
"Uno" valga la redundancia de hablar en castellano, significa Uno en italiano y se nombro as
para conmemorar el lanzamiento de Arduino 1.0. El Uno y la versin 1.0 del entorno de desarrollo y del
lenguaje, son las versiones de referencia de toda la plataforma Arduino.
Microcontrolador ATmega328p
Voltaje de operacin 5V
Voltaje de entrada (Recomendado) 7-12V
Voltaje de entrada (Limites) 6-20V
Pines Digitales I/O 14 (6 proveen salidas PWM)
Pines de entrada Analgicas 6
Corriente mxima de Pines I/O 40 mA
Corriente mxima del pin 3.3V 50 mA
Memoria Flash

32 KB (ATmega328) con 0.5 KB usados


por el bootloader

SRAM 2 KB (ATmega328)
EEPROM 1 KB (ATmega328)
Velocidad del Reloj. 16 MHz
Longitud 68.6 mm
Ancho 53.4 mm
Peso 25 g

Esquemticos y Diseos de referencia


La placa Arduino es hardware libre porque sus ficheros esquemticos estn disponibles para
descargar de la pgina web del proyecto con la licencia Creative Commons Attribution Share-Alike
(http://es.creativecommons.org/licencia), la cual es una licencia libre que permite realizar trabajos
derivados tanto personales como comerciales (siempre que estos den crdito a Arduino y publiquen sus
diseos bajo la misma licencia). As pues, uno mismo se puede construir su propia placa Arduino a
mano, o comprarlas en un distribuidor preensambladas y listas para usar.

Alimentacin
El Arduino Uno puede ser alimentado a travs de la conexin USB o con una fuente de
alimentacin externa. La fuente de alimentacin se selecciona automticamente.
La alimentacin externa (no USB) puede venir con un adaptador de CA a CC o una batera. El
adaptador se puede conectar con un enchufe de centro-positivo de 2.1mm sobre el conector de
alimentacin de la placa. Los cables de una batera tambin se pueden insertar en los cabezales de pin
GND y Vin del conector de alimentacin.
La placa puede funcionar con un suministro externo de 6 a 20 voltios. Si se suministra con menos
de 7V, sin embargo, el pin de 5V puede suministrar menos de 5 V y la placa puede ser inestable. Tambin
si se utiliza ms de 12 V, el regulador de voltaje puede sobrecalentarse y daar la placa. Entonces el
rango recomendado de alimentacin es de 7 a 12 voltios.
Los pines de alimentacin son como sigue:

VIN: El voltaje de entrada a la placa Arduino cuando se utiliza una fuente de alimentacin externa
(en oposicin a 5 voltios de la conexin USB u otra fuente de alimentacin regulada). Usted
puede suministrar tensin a travs de este pin, o, si el suministro de tensin es a travs de la
toma de alimentacin, puede acceder a l a travs de este pin.

5V: Este pin provee los 5V regulados en la placa. La placa puede ser alimentada ya sea desde la
toma de alimentacin de CC (7 - 12 V), el conector USB (5V), o por este pin VIN (7-12V). El
suministro de tensin a travs de los pines de 5V o 3.3V no utiliza el regulador, y puede daar la
placa. No se aconseja hacer ello.

3V3: Un suministro de 3,3 voltios generada por el regulador de la placa. Provee una corriente
mxima es de 50 mA.

GND: Pines de tierra.

IOREF: Este pin de la placa Arduino proporciona la referencia de tensin con la que opera el
microcontrolador. Un shield conectado a la placa puede leer el voltaje del pin IOREF y seleccionar
la fuente de alimentacin adecuada para comunicarse correctamente con el microcontrolador.

Memoria
El ATmega328 tiene 32 KB (con 0,5 KB utilizado por el gestor de arranque). Tambin cuenta con 2
KB de SRAM y 1 KB de EEPROM que se puede leer y escribir con la librera EEPROM.

Entradas y Salidas
Cada uno de los 14 pines digitales en el Uno se puede utilizar como una entrada o salida,
utilizando pinMode (), digitalWrite (), y las funciones digitalRead (). Funcionan a 5 voltios. Cada pin puede
proporcionar o recibir un mximo de 40 mA y tiene una resistencia de pull-up (desconectada por defecto)
de 20 a 50 kOhm. Adems algunos pines tienen funciones especializadas:

Serial: 0 (RX) y 1 (TX): Se utiliza para recibir (RX) y transmitir datos en serie (TX) TTL. Estos se
encuentran conectadas a los pines correspondientes de la USB-to-TTL chips Serial ATmega8U2.

Interrupciones externas: 2 y 3: Estos pines pueden configurarse para activar una interrupcin en
un valor bajo, un flanco ascendente o descendente, o un cambio en el valor.

PWM: 3, 5, 6, 9, 10, y 11: Pueden proporcionar una salida PWM de 8 bits con la funcin
analogWrite ().

SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK): Estos pines soportan la comunicacin SPI utilizando
la librera SPI.

LED: 13: Hay un LED incorporado conectado al pin digital 13. Cuando el pin se encuentra en un
estado alto (5V), el LED se mantiene encendido, cuando el pin esta en estado bajo, el LED se

mantiene apagado.

6 entradas analgicas, etiquetadas como A0 a A5, cada uno de los cuales proporcionan 10 bits de
resolucin (es decir, 1.024 valores diferentes). Por defecto se miden desde 0 V (Tierra) a 5 V,
aunque es posible cambiar el extremo superior de su rango usando el pin AREF y la funcin
analogReference (). Adems, algunos de estos pines tienen funciones especializadas:

TWI: pin A4 o A5 o SDA y SCL pin: Comunicacin TWI / I2C utilizando la librera Wire.

Hay un par de pines extras en la placa:

AREF: Es una entrada de para proveer el voltaje de referencia superior para las entradas
analgicas. Se utiliza con analogReference ().

Reset: Debe colocar este pin en un estado bajo (0 V o Tierra) para reiniciar el microcontrolador.
Normalmente se utiliza para aadir un botn de reinicio para shields que tapan el botn de la
placa original.

Comunicacin
El Arduino Uno tiene varias facilidades para comunicarse con un ordenador, otro Arduino u otros
microcontroladores. El ATmega328 ofrece UART TTL (5V) de comunicacin en serie, que est disponible
en los pines digitales 0 (RX) y 1 (TX). Un chip ATmega16U2 se encuentra conectado a estos pines, y
provee una comunicacin en serie a travs de USB que aparece como un puerto COM virtual nuestra
computadora. El "firmware del chip 16U2 utiliza los controladores USB COM estndar, y no se necesita
ningn controlador externo. Sin embargo, en Windows, es necesario un archivo .inf.
El entorno de Arduino incluye un monitor serial que nos permite enviar y recibir datos a la placa
Arduino. Los LEDs RX y TX en la placa parpadean cuando se estn transmitiendo datos a travs del chip y
el USB de la computadora, pero no para la comunicacin en serie en los pines 0 y 1.
Una biblioteca SoftwareSerial permite la comunicacin en serie en cualquiera de los pines
digitales del Uno. Sin embargo al hacerse a nivel de software tiene algunas limitaciones.
El ATmega328 tambin tambin puede comunicarse utilizando I2C (TWI) y SPI. El software de
Arduino incluye una librera Wire para simplificar el uso del bus I2C. Para la comunicacin SPI, se utiliza la
biblioteca de SPI.

Programacin
El Arduino Uno se puede programar con el software de Arduino (descargar). Seleccione "Arduino
Uno desde el men Tools > Boards (de acuerdo con el microcontrolador en su tablero).
Los ATmega328 en la Arduino Uno viene prequemado con un gestor de arranque que le permite
cargar nuevo cdigo a l sin el uso de un programador de hardware externo que se requiere
normalmente.
Tambin puede pasar por alto el gestor de arranque y programar el microcontrolador a travs del
ICSP (In-Circuit Serial Programming) header y un programador ICSP estndar, lo cual eliminara el gestor
de arranque que viene por defecto.

Proteccin USB
El Arduino Uno tiene una polyfusible reiniciable que protege a los puertos USB de su ordenador
contra cortocircuitos o sobrecorriente. Aunque la mayora de las computadoras ofrecen su propia
proteccin interna, el fusible proporciona una capa adicional de proteccin. Si se aplican ms de 500 mA
al puerto USB, el fusible automticamente rompe la conexin hasta que se elimina el cortocircuitos o se
elimina la sobrecarga.

COMENZANDO CON ARDUINO


Nuestro primer ejemplo
A modo de introduccin al lenguaje Arduino desarrollaremos nuestro primer ejemplo. Este es
parpadear un led que todas las placas Arduino tienen conectados al pin 13 de forma integrado. De esta
forma no requeriremos Hardware externo, ni grandes conocimientos de electrnica para introducirnos en
el lenguaje.

Estructura de un sketch en Arduino


Un programa de Arduino se denomina sketch y son archivos que tienen la extensin .ino. La
estructura bsica del lenguaje de programacin Arduino es muy sencilla y se organiza en al menos dos
funciones que encierran bloques de declaraciones.
void setup ()
{
statements;
}
void loop ()
{
statements;
}

setup ()
Es la primer funcin que se ejecuta cuando se alimenta Arduino y lo hace por nica vez hasta que
se reinicie la placa. Dentro de ella se deben configurar cualquier elemento que sea necesario para el
funcionamiento de nuestro programa.
Recordemos que dijimos que cualquiera de los pines digitales puede funcionar como una entrada
o salida, y en nuestro caso, tenemos que indicarle a la placa que el pin donde esta conectado el LED que
queremos iluminar sera utilizado como una salida.
void setup ()
{
// Ajusta el modo del 'pin 13' como salida.
pinMode (13, OUTPUT);
}

loop ()
La funcin loop se ejecuta a continuacin e incluye el cdigo que se ejecuta continuamente. Por
lo general, leyendo entradas, procesando datos y activando salidas. As, esta funcin es el ncleo de
todos los programas Arduino y la que hace la mayor parte del trabajo.
En nuestro caso, necesitamos activar la salida, (que como dijimos coloca una diferencia de
potencial en el pin que seleccionamos, generando una intensidad de corriente que al atravesar el diodo
led lo iluminara), esperar un segundo, desactivar la salida, y luego esperar otro segundo.
void loop ()
{
digitalWrite (13, HIGH);
delay (1000)
digitalWrite (13, LOW);
delay (1000)
}

//
//
//
//

Activa 'Pin'
Es pera un segundo.
Desactiva 'Pin'
Es pera un segundo.

Esta funcin se ejecuta continuamente, y as luego de esperar el ultimo segundo, El


microcontrolador sale de esta funcin, y vuelve a ejecutarla nuevamente, volviendo a titilar mientras se
encuentre alimentado a la placa.

Este ejemplo, es considerado el mas bsico para explicar el desarrollo sobre cualquier plataforma
de microcontroladores, y se encuentra integrado como ejemplo en el entorno de Arduino. De esta forma,
debemos ejecutar el entorno Arduino, vamos al men File > Sketchbook > Examples > Digital > Blink.

Subiendo el ejemplo a la placa


Para el ejemplo que desarrollamos estamos haciendo parpadear un Led que realmente se
encuentra integrado a la placa Arduino, y por lo tanto no necesitamos agregar ningn Hardware externo.
Primero debemos comprobar que el cdigo escrito es correcto, y para ello tenemos que hacer clic
en el primer boton de la barra de herramientas. Si escribimos el cdigo correctamente, veremos en la
parte inferior de la aplicacin un mensaje indicando que la compilacin fue terminada como indica la
imagen anterior. Si hemos cometido un error veremos un mensaje indicando primero el Error de
compilacin, y abajo una descripcin del error que cometimos,
Si tuvimos suerte, podremos subir nuestro primer programa a la placa Arduino. Primero debemos
conectar el cable USB a nuestra computadora, y el otro extremo a la placa Arduino para alimentarla.
Luego debemos indicarle al entorno Arduino la placa que utilizaremos, en este caso el men
Herramientas > Tarjeta > Arduino Leonardo y seleccionar el puesto Serial con el que se comunicara con
la placa. Herramientas > Puerto Serial > /dev/ttyACM0. Generalmente aparecer un nico puerto COM#
en Windows o /dev/tty# en GNU/Linux.

Una vez que el cdigo fue verificado, hemos conectado la placa y configurado el entorno,
procedemos a la carga de nuestro programa.
Debemos hacer Clic en el segundo botn de la barra de herramientas, y al finalizar nos aparecer
un mensaje en la parte inferior del entorno indicando que la carga fue terminada. Luego, podemos
observar en la placa Arduino como el led integrado empezara a parpadear.

Esta es la mecnica de trabajo de la plataforma Arduino. A partir de ahora, podemos avanzar en


proyectos mas complejos.

LENGUAJE ARDUINO
La sintaxis del lenguaje de programacin Arduino es una versin simplificada de C/C+ y soporta
todas las funciones del estndar C y algunas de C++. Analicemos el ejemplo anterior para comprender la
estructura del cdigo.

Comentarios
Las primeras lneas del sketch ejemplo Blink son un comentario.
/*
* Blink
*
* The basic Arduino example. Turns on an LED on for one second,
* then off for one second, and so on... We use pin 13 because,
* depending on your Arduino board, it has either a built-in LED
* or a built-in resistor so that you need only an LED.
*
* http://www.arduino.cc/en/Tutorial/Blink
*/
Todo lo que se encuentre entre /* y */ es ignorado por el Arduino cuando se ejecuta el sketch (Los
agregados * al comienzo de cada lnea son solo para hacer el comentario ms bonito, y no son
necesarios). Generalmente se comenta para explicar lo que hace el programa, cmo funciona, o por qu
est escrito de una forma en particular. Es una buena prctica comentar sus sketch, y usarlo para
mantener documentado todos los cambios que realiza en el cdigo. Esto ayuda a otras personas a
aprender desde su cdigo o modificarlo.
Hay otro estilo de comentarios cortos de una sola lnea. Estos comienzan con // y continan hasta
el final de la lnea. Por ejemplo, en la lnea de:
int ledPin = 13;

// LED connected to digital pin 13

El mensaje LED connected to digital pin 13, es un comentario y sera ignorado al momento de
compilar nuestro programa.

Variables
Una variable es un lugar para almacenar informacin. Tiene un nombre, un tipo y un valor. Por
ejemplo, en el sketch Blink:
int ledPin = 13;

// LED connected to digital pin 13

se declara una variable con el nombre ledPin, se indica su tipo es int, y se le da un valor inicial de 13.
En este caso se utiliza para indicar en que pin de Arduino est conectado el LED. Cada vez que el
nombre ledPin aparece en el cdigo, se recuperar su valor. En este caso, la persona que escribe el
programa podra haber optado por no crear la variable ledPin y en su lugar pudo haber escrito 13 en
todas partes que necesitaba especificar el nmero de pin. La ventaja de utilizar una variable es que es
ms fcil cambiar el LED para utilizar un pin diferente: slo tiene que editar la lnea de cdigo donde se
asigna el valor inicial a la variable.

Punto y coma: ;
El punto y coma ; se utiliza para separar instrucciones en el lenguaje de programacin de
Arduino.
int ledPin = 13;

// LED connected to digital pin 13

Si te olvidas de poner fin a una lnea con un punto y coma al momento de verificar el codigo te
devolver un error de compilacin. El texto de error puede ser obvio y se referir a la falta de una coma,

o puede que no. Si se produce un error raro y de difcil deteccin lo primero que debemos hacer es
comprobar que los puntos y comas estn colocados al final de las instrucciones.

Funciones
Una funcin (tambin conocido como un procedimiento o subrutina) es un bloque de cdigo que
tiene un nombre y un conjunto de instrucciones que son ejecutadas cuando se llama a la funcin en otra
parte del sketch.
type nombreFuncin(parmetros)
{
instruccin;
}
Las funciones se declaran asociadas a un tipo de valor type. Este valor ser el que devolver la
funcin, por ejemplo 'int' se utilizar cuando la funcin devuelve un dato numrico de tipo entero. Si la
funcin no devuelve ningn valor entonces se colocar delante la palabra void, que significa funcin
vaca. Despus de declarar el tipo de dato que devuelve la funcin se debe escribir el nombre de la
funcin y entre parntesis se escribirn, si es necesario, los parmetros que se deben pasar a la funcin
para que se ejecute.
Por ejemplo, aqu est la definicin de la funcin setup () del ejemplo Blink:
void setup()
{
pinMode(ledPin, OUTPUT);
}

// sets the digital pin as output

La primera lnea es la definicin de la funcin que no devuelve ningn valor por ser tipo void, se
llama setup y para llamarla o invocarla no necesitamos pasarle ningn argumento. El cdigo entre el
{ y } se llama el cuerpo de la funcin, y es lo que hace la funcin al momento de invocarla.
Usted puede llamar a una funcin que ya ha sido definida (ya sea en su sketch o como parte del
lenguaje Arduino). Por ejemplo, la lnea pinMode(ledPin, OUTPUT); llama a la funcin pinMode() que es
propia del lenguaje Arduino, y se le pasa los parmetros: ledPin y OUTPUT. Estos parmetros son
requeridos por la funcin pinMode () para decidir qu pin debe configurar y de que forma debe hacerlo.

Llaves: {}
Las llaves sirven para definir el principio y el final de un bloque de instrucciones. Por ejemplo las
funciones setup (), loop (), o otras sentencias como if (), while () etc.
type funcion()
{
instrucciones;
}
Una llave de apertura { siempre debe ir seguida de una llave de cierre }, si no es as la
verificacin del programa dar errores.

Funciones pinMode(), digitalWrite(), y delay()


Las funciones pinMode(), digitalWrite(), y delay(), son funciones definidas por el lenguaje Arduino.
Aunque parecen definidas solo de forma implcita, estn implementadas en el core Arduino de la misma
forma que vimos. Se encuentran escritas indicando su tipo, nombre, parmetros, e instrucciones, y
cumplen las mismas reglas de corchetes, comentarios y punto y coma.

ANEXO I: Resumen de funciones digitales


pinMode ()
Descripcin
Esta funcin configura el pin especificado para actuar como entrada o salida digital. Los pines de
entrada analgica tambin se pueden utilizar como pines digitales, refirindose como A0, A1, etc.

Sintaxis
pinMode (pin, modo);

Parmetros

pin: El nmero del pin cuyo modo que desea ajustar.


modo: INPUT, OUTPUT, o INPUT_PULLUP.

Devuelve

Nada.

digitalWrite ()
Descripcin
Activa (HIGH) o desactiva (LOW) un pin digital. Si el pin ha sido configurado como OUTPUT
(salida) con la funcin pinMode(), su voltaje ser activado a 5V (o 3.3V en las tarjetas que funcionen a
3.3V) si se activa (HIGH) o a 0V (tierra) si se desactiva (LOW).
Si el pin ha sido configurado como INPUT (entrada), digitalWrite() activar (si usamos el
parmetro HIGH) o desactivar (con LOW) la resistencia pullup del pin de entrada especificado. Sin
embargo se recomienda activar la resistencia interna pullup del pin utilizando la funcin pinMode(pin,
INPUT_PULLUP).

Sintaxis
digitalWrite (pin, valor)

Parmetros

pin: El nmero de pin a modificar.


valor: HIGH o LOW

Devuelve

Nada.

digitalRead ()
Descripcin
Lee el valor de un pin digital especificado, ya sea alto o bajo. Tenga en cuenta que el pin siempre
debe estar conectado a algo. Si no lo hace, la lectura es incierta y puede variar aleatoriamente.

Sintaxis
digitalRead(pin);

Parmetros

Pin: El nmero del pin digital desea leer. (int)

Devuelve

HIGH o LOW: El estado de la entrada digital.

Ejemplo
Se coloca un pulsador en el pin digital 2 (Junto con una resistencia de pull-down), que se
configura como una entrada, y utilizamos el diodo LED interno de pin digital 13, configurado como una
salida. Leemos el estado del pulsador, y lo reflejamos a la salida.

int ledPin = 13; // LED connected to digital pin 13


int inPin = 2;
// pushbutton connected to digital pin 2
int val = 0;
// variable to store the read value
void setup()
{
pinMode(ledPin, OUTPUT);
pinMode(inPin, INPUT);
}
void loop()
{
val = digitalRead(inPin);
digitalWrite(ledPin, val);
}

// sets the digital pin 13 as output


// sets the digital pin 2 as input

// read the input pin


// sets the LED to the button's value

ANEXO II: Esquemtico Arduino UNO

ANEXO III: Resumen de pines

You might also like