Sunteți pe pagina 1din 34

Introduccin a Arduino [Gua completa] - Taringa!

Posts Mi T! Shouts Comunidades Juegos Tops

2h

A favoritos

Taringa!

Info

Introduc

Me gusta

547.847

Follow

Marcana

Miyata1987
DIAMOND

Introduccin a Arduino [Gua


completa]

Ir a
comentarios

Conociendo Arduino

Compartir
va mail

24

Arduino es una plataforma de desarrollo abierta, concebida para la


creacin de prototipos y aplicaciones Hardware. Arduino fue creado
inicialmente para estudiantes, ya que antes de esto las placas que
existan eran caras y tenan una arquitectura cerrada, lo que no las haca
atractivas ni a la comunidad de estudiantes, ni a los aficionados a la
electrnica en general.

arduino unoCon la creacin de Arduino como un sistema de desarrollo


abierto (no necesita licencias) y la constitucin de un lenguaje de
programacin propio, en el que prima la sencillez en la programacin,
dio como resultado un entorno de desarrollo muy cercano a la gente,
que facilita el uso de la electrnica en proyectos de todo tipo, haciendo
esta plataforma muy atractiva y constituyendo entorno a ella una de las
comunidades ms grandes de desarrollo que existen en internet
actualmente.

El Hardware de Arduino, consiste en una placa con un microcontrolador


Atmel AVR, en funcin del modelo de placa llevar un microcontrolador
u otro, los ms usados son el Atmega168, Atmega328, Atmega1280 y el
ATmega8. En los ltimos aos tambin se han empezado a implementar
microcontroladores ARM de 32bits. Una de las caractersticas que hacen
que Arduino sea un sistema muy extendido y muy valorado, es su alta
conectividad, y es que saca al exterior todas las salidas del
microcontrolador mediante pines de conexionado rpido (tan solo
tendremos que "pinchar" cables como lo hacemos con las protoboards).
Adems se ha creado un estndar en cuanto a la distancia y situacin
de estos pines, esto es as para la implementacin de todo tipo de

http://www.taringa.net/posts/info/19603762/Introduccion-a-Arduino-Guia-completa.html[2/10/2016 5:35:23 p. m.]

2K

2K

SEGUIDORES
POSTS

182K
PUNTOS

Introduccin a Arduino [Gua completa] - Taringa!

"shields" los cuales son otra gran baza a la hora de elegir Arduino frente
a otras plataformas de desarrollo.

Modelos de Arduino

En la actualidad Arduino ha lanzado al mercado, placas, shields y


sensores casi para cualquier cosa, las diferencias fundamentales entre
una placa u otra suelen ser, el numero de pines que sacan al exterior y
la tipologa de estos (si son pines digitales, analgicos o de PWM...), la
memoria de programa de la que disponemos y la frecuencia de reloj del
microcontrolador, o lo que es lo mismo, la velocidad a la que podemos
trabajar. En funcin de estos tres parmetros, deberemos escoger una
placa u otra para nuestros proyectos (dependiendo de nuestras
necesidades), ya que puede que tan solo necesitemos unas pocas
entradas/salidas y que la velocidad en nuestra aplicacin no sea
importante o quizs tengamos que gestionar 20 o 30 procesos diferentes
y hacerlo de manera casi instantnea, segn lo que queramos hacer,
podemos ajustarnos a una placa u otra, ya que como es lgico una placa
con mayor nmero de entradas/salidas, mayor memoria de programa y
mayor velocidad ser ms cara y puede que nuestros proyectos no
necesiten estos recursos.

En la imagen superior, podemos ver varios de los Arduinos ms


comunes, aunque el catalogo es ms extenso y dentro de los mismo
modelos podemos encontrar variantes. Si quieres ver una lista completa
de los productos de Arduino haz clic aqu

A continuacin a modo de resumen y para conocer las caractersticas


ms importantes de cada Arduino, muestro una tabla donde se pueden
ver el numero de entrada/salidas de cada tipo, la memoria y la
frecuencia de reloj a la que trabaja el microcontrolador. esta tabla nos
ser muy til para determinar que Arduino es el que mejor se puede
adaptar a nuestro proyecto.

Shield's y sensores

http://www.taringa.net/posts/info/19603762/Introduccion-a-Arduino-Guia-completa.html[2/10/2016 5:35:23 p. m.]

Introduccin a Arduino [Gua completa] - Taringa!

Como mencion anteriormente, una gran parte del xito de la plataforma


Arduino reside en la gran variedad de shields y sensores que podemos
encontrar en el mercado, estos dan realmente la funcionalidad a Arduino
y hacen mucho ms sencilla la creacin de cualquier proyecto
electrnico, pero... que es realmente un "shield"?. Para explicarlo de
forma sencilla, podramos decir que si Arduino es el cerebro del sistema,
un shield puede llegar a ser desde el musculo hasta los sentidos del
sistema. La placa Arduino tan solo puede trabajar con pequeas
seales, adems esta placa no tiene demasiada conectividad aparte de
la conexin USB que posee y algn puerto serie interno del propio
microcontrolador, por ello y a modo de que cada cual adapte Arduino a
sus necesidades, surgen los shields, hay desde shield para controlar
motores o elementos de potencia, hasta shields que dan conectividad,
wifi, GSM o incluso bluetooth, esto hace que Arduino sea un sistema
modular el cual podemos adaptar segn las necesidades del proyecto.
Una particularidad de la mayora de los shields es que tan solo hay que
pincharlos en la placa Arduino y cargar la librera para que sean
totalmente funcionales. Esto hace que sea muy rpido aadir mdulos al
sistema. En cuanto a los sensores, decir que tambin hay una gran
variedad ya creada y adaptada para funcionar con Arduino, podemos
encontrar desde sensores de presin, humedad, temperatura,
acelermetros, sensores de distancia

Lenguaje de Programacin

Arduino se programar mediante un editor de texto o "sketch" el cual usa


un lenguaje propio creado expresamente para la plataforma Arduino,
este lenguaje, est basado en "Processing", que es un lenguaje de alto
nivel. El Sketch es un entorno de programacin sencillo el cual no tiene
ms que las opciones bsicas de programacin, verificacin del cdigo y
carga en la placa Arduino.

http://www.taringa.net/posts/info/19603762/Introduccion-a-Arduino-Guia-completa.html[2/10/2016 5:35:23 p. m.]

Introduccin a Arduino [Gua completa] - Taringa!

Conociendo Arduino (instalacin y entorno)

Una vez introducido Arduino y habiendo elegido una de las mltiples


plataformas Arduino que existen en el mercado, es hora de conectar
nuestra placa al ordenador y empezar a desarrollar nuestra aplicacin,
pero para ello primero ser necesario que nuestro ordenador reconozca
nuestra placa Arduino y conocer el entorno de programacin que vamos
a utilizar.

Descarga del entorno de desarrollo y drivers

Para empezar hay que ir a la pgina oficial de Arduino donde podemos


descargar las ltimas versiones del software. Segn nuestro sistema
operativo, tendremos que descargar una versin u otra, y dentro de la
opcin de Windows, podemos hacer la descarga como un archivo
ejecutable o como un archivo ZIP.

Dentro del archivo ejecutable, se encuentra tanto el entorno de


desarrollo para Arduino, como los driver necesarios para que el
dispositivo sea reconocido por nuestro ordenador.

Instalacin de los drivers

http://www.taringa.net/posts/info/19603762/Introduccion-a-Arduino-Guia-completa.html[2/10/2016 5:35:23 p. m.]

Introduccin a Arduino [Gua completa] - Taringa!

Para que nuestro ordenador reconozca correctamente la placa Arduino,


es necesario instalar los drivers para el procesador FTDI, estos drivers
se encuentran dentro de los archivos que hemos descargado, si hemos
realizado la descarga en formato ZIP, tendremos que descomprimir la
carpeta para acceder a los drivers.

Para instalar los drivers, conectaremos Arduino a nuestro equipo,


normalmente esta conexin se hace a travs de USB, aunque hay
modelos de Arduino que no poseen esta conexin y deben de
conectarse al PC con una conexin serie, si este es el caso, tendremos
que alimentar la placa de manera externa.

Al conectar Arduino mediante USB al PC, veremos cmo se enciende un


LED verde, esto nos indica que la placa est siendo alimentada
correctamente. Al momento de conectar nuestra placa al ordenador,
Windows mostrar el mensaje de que hemos conectado un nuevo
dispositivo y ejecutara automticamente el instalador.

En el asistente de la instalacin le diremos que no se conecte a internet


para buscar los drivers y en la siguiente pantalla, que los instalaremos
desde una localizacin especifica, que se encontrar dentro de la
carpeta que hemos descargado anteriormente, en nuestro caso ser la
carpeta "drivers" que se encuentra dentro de la carpeta arduino-1.0.5 (la
que hemos descargado).

http://www.taringa.net/posts/info/19603762/Introduccion-a-Arduino-Guia-completa.html[2/10/2016 5:35:23 p. m.]

Introduccin a Arduino [Gua completa] - Taringa!

Si el asistente de instalacin no se ejecutase, tendramos que hacer la


instalacin de manera manual, para ello, clicamos con el botn derecho
sobre el icono de nuestro equipo (o abrimos la ruta "Panel de
controlSistema y seguridadSistema" , entramos en "administrador de
dispositivos" y veremos que hay un dispositivo que aparece como
desconocido, damos botn derecho sobre l , y de entre las opciones
que aparecen, le damos a "actualizar software del controlador". Los
siguientes pasos son los mismo que instalando con el asistente.

http://www.taringa.net/posts/info/19603762/Introduccion-a-Arduino-Guia-completa.html[2/10/2016 5:35:23 p. m.]

Introduccin a Arduino [Gua completa] - Taringa!

Una vez hecho esto, podemos ver en el administrador de dispositivos


como nuestro Arduino aparece totalmente identificado. Ya podremos
usarlo y cargar nuestros programas en l.

El entorno de trabajo

Ahora que nuestro ordenador reconoce perfectamente nuestra placa, es


hora de abrir el entorno de trabajo donde programaremos nuestras
aplicaciones. El entorno de programacin de Arduino no necesita
instalacin, tan solo tendremos que ir a la carpeta que descargamos y
hacer doble clic sobre el icono que pone "arduino".(Recomiendo guardar
la carpeta de Arduino en algn lugar de nuestro disco donde creamos
que este segura y crear un acceso directo en el escritorio.)

Al hacer esto nos aparecer la pantalla principal el Sketch, donde


podemos diferenciar las siguientes partes:

http://www.taringa.net/posts/info/19603762/Introduccion-a-Arduino-Guia-completa.html[2/10/2016 5:35:23 p. m.]

Introduccin a Arduino [Gua completa] - Taringa!

rea de trabajo: Esta ser el rea donde vamos a escribir el


programa que queremos ejecutar en Arduino.Sketch descripcion
Verificacin: Cuando redactemos nuestro programa, podemos
verificar que la sintaxis del mismo es correcta y que no hemos
cometido ningn error pulsando sobre este icono, si hay algn error,
no podremos cargar el programa en Arduino.
Carga de programa: Cuando tengamos listo nuestro programa y no
tenga ningn error, lo cargaremos en Arduino pulsando sobre este
botn.
Archivo nuevo: Abrir una nueva rea de trabajo.
Abrir un programa: Al pulsar sobre este botn, tendremos la opcin
de abrir un archivo desde una ubicacin especifica o cargar en nuestra
rea de trabajo una serie de programas o libreras ya creadas y que
tiene Arduino por defecto.
Guardar programa: Guardara en una ubicacin especificada por el
usuario el contenido del rea de trabajo.

Antes de ponernos a programar, deberemos de seleccionar en el Sketch


con que placa Arduino estamos trabajando y a que puerto USB de
nuestro ordenador est conectado nuestro Arduino, para ello iremos a la
pestaa "Herramientas" y dentro de esta pestaa podemos ver el
apartado "Tarjeta" y "Puerto Serial", donde seleccionaremos el modelo
de nuestro Arduino y el puerto USB al que est conectado. Normalmente
el puerto USB es detectado automticamente, pero si tenemos varios
Arduinos conectado a nuestro PC, tendremos que seleccionar el puerto.

http://www.taringa.net/posts/info/19603762/Introduccion-a-Arduino-Guia-completa.html[2/10/2016 5:35:23 p. m.]

Introduccin a Arduino [Gua completa] - Taringa!

Cargando nuestro primer programa

Si ya hemos instalado los drives de nuestro Arduino, abierto el Sketch y


configurado tanto la placa que vamos a usar como el puerto de nuestro
ordenador al que est conectado, ya tenemos todo listo para poder
cargar nuestro primer programa!!

Como ejemplo y a modo de verificar que nuestra placa funciona


correctamente, vamos a cargar un programa que trae por defecto el
software de Arduino y que se llama "blink" (en espaol "parpadeo" ,
este es un sencillo programa que lo nico que va a hacer es poner a
parpadear un led que est asociado a la patilla 13 de nuestro Arduino.

Para cargar este programa en nuestra rea de trabajo, vamos a pulsar


sobre el icono "abrir" y se nos mostrar una lista con varios programas
que trae nuestro Arduino por defecto. Vamos a cargar, el programa
"Blink" que se encuentra dentro de "Basics".

http://www.taringa.net/posts/info/19603762/Introduccion-a-Arduino-Guia-completa.html[2/10/2016 5:35:23 p. m.]

Introduccin a Arduino [Gua completa] - Taringa!

Una vez cargado podemos ver la estructura bsica del programa en la


que entraremos con ms detalle en posteriores tutoriales, por ahora,
podemos fijarnos en como enciende y apaga el led para comenzar a
entender el cdigo, para encender el led, usa la instruccin
"digitalWrite(led, HIGH);", espera 1000 milisegundos (1 segundo)
"delay(1000);" y lo apaga "digitalWrite(led, LOW);" esperando otros 1000
milisegundos apagado.

Con el programa en el rea de trabajo, daremos a "cargar" para pasar el


cdigo del programa a nuestro Arduino, viendo como parpadean
rpidamente los leds "TX" y "RX" de la placa que indican que se est
llevando a cabo la comunicacin entre el ordenador y Arduino. Una vez
cargado el programa, veremos como el led asociado a la patilla 13,
empieza a parpadear a intervalos de 1 segundo.

A modo de prueba y para ir cogiendo soltura, podemos cambiar el


tiempo que el led permanece encendido o apagado modificando valor
que hay encerrado entre parntesis en la funcin "delay".

Conociendo Arduino (Funciones)

Ahora que tenemos nuestra placa correctamente instalada y conocemos


el entorno de programacin para nuestro Arduino, llega el momento de
aprender a programar!!. He de decir que esta es la parte difcil y quizs
aburrida para muchos, pero del conocimiento del lenguaje de
programacin va a depender que nuestros programas puedan hacer
cosas increbles.

Arduino, como muchos otros lenguajes de programacin, tiene infinidad


de funciones, operadores, variables.... si tuviera que enunciarlos y
explicarlos todos en este captulo sera largusimo y no creo que nadie
llegara hasta el final sin aburrirse, por ello lo que voy a hacer es una
introduccin al lenguaje para que conozcis que podemos encontrarnos
y de que recursos disponemos a la hora de programar. Iremos
aprendiendo el uso de las funciones poco a poco usndolas en
pequeas aplicaciones.

http://www.taringa.net/posts/info/19603762/Introduccion-a-Arduino-Guia-completa.html[2/10/2016 5:35:23 p. m.]

Introduccin a Arduino [Gua completa] - Taringa!

Para aquellos que queris avanzar algo mas rpido os recomiendo que
usis alguno de los muchos libros o manuales que hay para iniciarse en
Arduino, muchos de los cuales son gratuitos. Yo he confeccionado un
manual a partir de la informacin que se puede encontrar en la pgina
oficial de Arduino, este manual explica todos los conceptos bsicos y
est muy bien para aprender, el manual lo podis descargar de aqu.

Estructura

Al empezar a trabajar con Arduino, tenemos que tener muy claro la


estructura de trabajo bsica, esta estructura es muy simple y debe
aparecer en TODOS los programas, se trata de dos funciones, la funcin
"setup" y la funcion "loop".

void setup() //Funcipn SetUp (configuracin)

{
pinMode(13, OUTPUT);
}

void loop() //Funcin Loop (se ejecutar cclicamente)

digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
}

Arriba podemos ver estas dos funciones en un ejemplo que ya


conocemos el "blink", como se aprecia, la funcin "Setup" declara el Pin
13 como salida, ya que es por este Pin por donde pretendemos sacar
informacin, o en nuestro caso el estado del Led. La funcin "Setup"
solo se invoca una vez al inicio del programa, y se usa para configurar
los pines, configurar la comunicacin serie o establecer un estado inicial
o de partida para algn dispositivo.

La funcin "Loop" ser la funcin donde se encuentre el grueso de


nuestro programa, esta funcin se repetir una y otra vez ejecutando lo
que se encuentre en su interior, esta repeticin es la que posibilita que el
programa este actualizndose y respondiendo a los eventos que
ocurran.

Las funciones "Loop" y "Setup" son necesarias en todos los programas


que hagamos, pero no tienen por qu ser nicas, podemos crear tantas
funciones como queramos para organizar el contenido de nuestro
programa para hacer tareas repetitivas dentro de nuestro programa
principal. Las funciones estn acotadas por las llaves{}, estas llaves
definirn el bloque de la funcin.

Instrucciones y operadores

Delimitadores: son elementos que acotan o detienen el alcance de una


funcin o instruccin

{} Llaves: definen el principio y el final de un bloque de instrucciones o


funcin, podemos encontrarlas en estructuras de control definiendo el
bloque al cual afecta la funcin. Podemos anidar tantos bloques como
queramos.

; Punto y coma: Se utiliza para separar instrucciones, es comn olvidar


colocarlo al final de lnea. Si no lo ponemos no reconocer el fin de la
funcin y el programa dar un problema al compilar.

Comentarios: Es muy recomendable usar comentario desde el principio


para hacer anotaciones sobre el funcionamiento del programa, esto nos

http://www.taringa.net/posts/info/19603762/Introduccion-a-Arduino-Guia-completa.html[2/10/2016 5:35:23 p. m.]

Introduccin a Arduino [Gua completa] - Taringa!

va a ahorrar muchos problemas si nuestro programa se hace muy


grande y va a permitir que otras personas entiendan como hemos hecho
el programa.

/*.*/ Bloque de comentario: Son reas de texto que pueden abarcar


ms de una lnea, lo que escribamos entre esos smbolos ser ignorado
por el programa.

// Lnea de Comentario: Funciona como el bloque de comentario, con la


diferencia que solo ser ignorado el texto que este a su derecha, al
cambiar de lnea perder el efecto.

Operadores: Los operadores son los elementos con los que vamos
transformar variables, hacer comparaciones, contar un nmero
determinado de eventos en definitiva, los operadores se pueden
considerar los elementos ms importantes del programa junto con las
estructuras de control. Dentro de los operadores, podemos encontrarlos
de varios tipos

Aritmticos: Son operadores bsicos como la suma, resta,


multiplicacin y divisin, tambin podramos incluir aqu la operacin de
asignacin =

/* OPERADORES ARITMTICOS */

x = x + 5; //suma x+5 y guarda el valor en x

y = y - 8; //resta 8 a el valor "y" almacena el resultado en "y"

z = z * 2; //multiplica z*2 y guarda el valor en z

k = k / 3; //divide k entre 3 y guarda el valor en k

p = 10; // asigna a p el valor 10

Asignaciones compuestas: Combinan una operacin aritmtica con una


variable ya asignada. Se usan comnmente en bucles.

/* OPERADORES DE ASIGNACIN COMPUESTA */

x ++; //equivale a x = x + 1 (incrementa x en 1)

x --; //equivale a x = x - 1 (decrementa x en 1)

x += y; //equivale a x = x + y

x -= y; //equivale a x = x - y

x *= y; //equivale a x = x * y

x /= y; //equivale a x = x / y

De comparacin: Este tipo de operadores se usan para comprobar


variables o constantes con otras verificar as si una condicin es
verdadera o no. Suelen utilizarse en conjunto con estructuras de control.

/* OPERADORES DE COMPARACIN */

x == y; //x es igual a y

x != y; //x es distinto de y

x < y; //x es menor que y

x > y; //x es mayor que y

x <= y; //x es menor o igual que y

x >=y; // x es mayor o igual que y

Booleanos: Son operadores lgicos que se usan para comparar 2 o


ms expresiones y que no devuelven un valor, sino que dan un estado
de verdadero (si se cumple la expresin) o falso (si no se cumple).

/* OPERADORES BOLEANOS */

if (x<3 && x>0) //Cierto si se cumplen las dos expresiones

if (x<7 || x=20) //Cierto si se cumple alguna de las dos expresiones

if (!x=3) //Cierto si x es distinto de 3

Estructuras de control: En las estructuras de control se engloban todos


los estamentos que sirven para guiar al programa en una u en otra
direccin en funcin de si se cumplen las condiciones que le

http://www.taringa.net/posts/info/19603762/Introduccion-a-Arduino-Guia-completa.html[2/10/2016 5:35:23 p. m.]

Introduccin a Arduino [Gua completa] - Taringa!

marquemos. Dentro de estas estructuras podemos encontrar


condicionales, bucles o elementos de salto.

Condicionales: Los condicionales chequean un estado o condicin y si


esta condicin se cumple se pasa a ejecutar las sentencias englobadas
dentro de la condicin

/* CONDICIONALES */

if (x==10) //Si x es igual a 10 ejecuta la instruccin

ejecuta instrucciones

if (y != 10) // Si y es distinto de 10 ejecuta la instruccin

ejecuta instrucciones

else //si no, ejecuta esta instruccin

ejecuta instrucciones

Bucles: Los bucles son unos estamentos los cuales harn que el
programa entre en un ciclo de repeticin mientras se cumplan las
condiciones del bucle.

/* BUCLES */

/*Entra en el bucle "for" y se repetir mientras se cumpla la condicin*/

for(int x=0; x<20; x++) //asigna a x el valor 0; condicin ; incrementa x en 1

ejecuta instrucciones

/* El bucle while se ejecutar siempre que se cumpla la condicin*/

while (x!=0)

ejecuta instrucciones

/* El bucle "do...while" se ejecuta almenos 1 vez, luego depender de si se


cumple la condicin */

do

instrucciones

}while (x!=0);

Sentencias especiales: Estas sentencias se usan en programas


avanzados y normalmente se utilizan cuando trabajamos con varias
funciones. Si ests empezando a programar con Arduino no tengas
demasiado en cuenta estas instrucciones.

Break: Esta es una sentencia que debemos evitar a la hora de


programar, tan solo se usar cuando sea totalmente inevitable. Lo que
hace la sentencia es "romper" la iteracin del bucle salindose del
mismo sin tener en cuenta que se cumplan las condiciones marcadas
para salir.

Goto: Esta sentencia marcar un lugar del cdigo al cual realizaremos


un salto. La posicin desde la que saltemos quedar almacenada en la
pila del programa para que podamos regresar. Esta sentencia se usa
para hacer saltos a funciones que puedan hacer tareas repetitivas o que

http://www.taringa.net/posts/info/19603762/Introduccion-a-Arduino-Guia-completa.html[2/10/2016 5:35:23 p. m.]

Introduccin a Arduino [Gua completa] - Taringa!

tengamos que chequear constantemente y una vez ejecutada continuar


con el programa normalmente.

Return: Es la sentencia que se utiliza para volver de un salto (goto)

Funciones Bsicas: Para los que tengis nociones de programacin las


instrucciones vistas hasta ahora os sonarn, ya que son comunes a
varios lenguajes de programacin como por ejemplo #C, pero no
debemos de olvidar que lo que estamos programando es un dispositivo
fsico dotado con pines de entrada/salida que comunican nuestra placa
con diversos elementos, por ello existen instrucciones adicionales a las
que podemos encontrar en otros lenguajes de programacin similares y
que en Arduino son BASICAS, ya que en prcticamente la totalidad de
las aplicaciones que creemos tendremos que leer el estado de
pulsadores, sensores, niveles de tensin.... y normalmente tendremos
que actuar sobre rels, leds, motores...

Pin mode: Esta instruccin se usa para configurar los pines de nuestro
Arduino como entrada o como salida. Se declarar dentro de la funcin
"SetUp", por lo que la configuracin de pines solo se har una vez antes
de empezar a ejecutar el programa principal. Los pines de Arduino estn
configurados como entrada por defecto, por lo que no es necesario
definirlos en caso de usarlos como entrada

/* PIN MODE */

pinMode (13,OUTPUT); //establece el pin 13 como salida

int led=10;

pinMode led,OUTPUT); //establece "led" (que esta asociado al 10) como


salida

Entradas/Salidas digitales: Las entradas y salidas digitales solo


trabajaran con dos estados "ALTO" o "BAJO" que ir asociados a un
nivel de 5 voltios(alto) 0 voltios (bajo) (tambin podemos encontrarnos
con Arduinos que trabajan a 3.3v).

/* ENTRADAS/SALIDAS DIGITALES */

//digitaRead (pin)

entrada = digitalRead(10); //hace que la variable "entrada" sea igual al estado


del pin 10

//digitalWrite (pin, valor)

digitalWrite (10, HIGH); //establede el pin 10 como HIGH (saca 5 voltios)

Entradas/Salidas analgicas: Estos pines a diferencia de los pines


digitales pueden tomar cualquier valor entre 0 y 5 voltios. A la hora de
leer un valor tendremos una resolucin de 10bit's o lo que es lo mismo,
el valor que podemos leer tendr un rango entre 0 y 1023. Para escribir
un valor analgico lo haremos usando el PWM (modulacin por ancho
de impulso), para esto la resolucin ser de 8 bit's teniendo un rango de
0 a 255.

/* ENTRADAS/SALIDAS ANALGICAS */

//analogRead (pin)

entrada = analogRead (1); //hace que la variable "entrada" sea igual al valor
del pin 1

//alnalogWrite (pin,valor)

analogWrite (12, 128); //saca por el pin 12 el valor de tensin correspondiente


a 128 (mas o menos 2,5 voltios)

http://www.taringa.net/posts/info/19603762/Introduccion-a-Arduino-Guia-completa.html[2/10/2016 5:35:23 p. m.]

Introduccin a Arduino [Gua completa] - Taringa!

Instrucciones de tiempo: Son instrucciones que nos sirven para hacer


temporizaciones o para comprobar el tiempo transcurrido desde el inicio
del programa.

/* FUNCIONES DE TIEMPO */

//delay (ms)

delay (1000); //espera 1000 milisegundos antes de ejecutar la siguiente


instruccin

//millis()

tiempo = millis(); //asigna a la variable "tiempo" el tiempo trasncurrido desde


el inicio del programa.

Funciones de matemticas: son funciones que nos ayudaran con el


desarrollo de algunos de nuestros programas, hay que decir que existe
una librera llamada "math.h" la cual aade nos da la posibilidad de
aadir operaciones como elevar al cuadrado, hacer senos, cosenos,
arcotangente... esto lo veremos con posterioridad, de momento solo
nombrar las funciones bsicas de matemticas.

/* FUNCIONES MATEMTICAS */

//min (x,y)

minimo = min(valor, 100); //asigna el valor mas pequeo (entre "valor" y 100)
a la variable minimo

//max (x,y)

maximo = max(valor, 100); //asigna el valor mas grande (entre "valor" y 100) a
la variable maximo

//ramdomSeed(seed)

randomSeed(valor); // hace que la variable valor tome un valor aleatorio

Funciones Serial: Las placas de Arduino tienen al menos 1 puerto


serial para la comunicacin con el ordenador o con otros dispositivos,
esta comunicacin se llevar a cabo mediante los pines TX y RX
(podemos tener varios en nuestra placa segn el modelo).

/* FUNCIONES SERIAL */

//Serial.begin(rate)

Serial.begin(9600); //abre el puerto sere y establece la velocidad de


comunicacin en 9600bps (esta funcion debe de ponerse en el SetUp)

//Serial.println(data)

Serial.println(digitalRead(12); //manda por el puerto serial el valor que tenga


el pin 12

//Serial.read()

Valor_leido = Serial.read(); //asigna a "Valor_leido" el valor que lea del puerto


serial.

Existen ms instrucciones en Arduino, adems de todas las que pueden


ser aadidas poniendo bibliotecas adicionales, pero creo que con todas
las mencionadas anteriormente, tenemos ms que suficiente para
empezar a hacer nuestros proyectos, y no os preocupis si ahora os
suenan a chino, porque ir utilizndolas todas ellas en pequeos
ejemplos donde veris claramente cmo funcionan y empezareis a ver
por vosotros mismo nuevas formas de combinarlas para conseguir hacer
vuestros propios proyectos.

http://www.taringa.net/posts/info/19603762/Introduccion-a-Arduino-Guia-completa.html[2/10/2016 5:35:23 p. m.]

Introduccin a Arduino [Gua completa] - Taringa!

Entradas y salidas digitales

Vamos a comenzar a dar nuestros primeros pasos en Arduino con algo


tan fundamental como es el control de las entradas y salidas digitales.
Es muy importante dominar esta parte, ya que esto nos permitir mandar
seales para activar o desactivar cualquier cosa y leer el estado de
interruptores o sensores , algo que usaremos en prcticamente todos
nuestros proyectos.

Para esta prctica vamos a necesitar:

1 Placa Arduino.

1 Protoboard (placa de prototipado).

2 Diodos Led de colores diferentes.

2 Resistencias de 220.

2 Resistencias de 10K.

2 Pulsadores.

Esta primera prctica va a consistir en dos pequeos ejemplos, el


primero va a trabajar con las salidas encendiendo los led de la placa
alternamente y el segundo va a leer el estado del pulsador y en funcin
de este estado va a encender los led's o no.

Para esta prctica vamos a realizar un solo montaje sobre nuestra


protoboard y aunque no utilicemos los pulsadores para el primer ejemplo
lo vamos a tener ya montado y configurado para nuestro segundo
ejemplo.

A continuacin muestro tanto el esquemtico como el diagrama de


conexiones que debemos hacer entre Arduino y el montaje de nuestra
protoboard.

http://www.taringa.net/posts/info/19603762/Introduccion-a-Arduino-Guia-completa.html[2/10/2016 5:35:23 p. m.]

Introduccin a Arduino [Gua completa] - Taringa!

Como se puede apreciar, hemos conectado el Pin 12 al Led rojo y el Pin


13 al Led verde, ambos usando una resistencia de 220 para limitar la
corriente que pasa a travs de estos led's. Los pulsadores 1 y 2 han sido
conectado a los pines 2 y 3 de nuestro Arduino en ese mismo orden,
colocando una resistencia de 10K configurada como "Pull Down" para
que cuando no estemos presionando los pulsadores, tengamos en la
entrada de nuestro Arduino un estado lgico de 0 o "LOW"

Programando E/S digitales (primer ejercicio)

Como mencione anteriormente, este primer ejemplo va a consistir en la


activacin de los led's que hemos conectado a nuestra placa de manera
alterna, a modo de ver cmo funciona la instruccin de escritura digital
"digitalWrite". Adems voy a utilizar de nuevo la instruccin "Delay" que
ya vimos en el apartado "Conociendo Arduino".

/* PRIMEROS PASOS CON ARDUINO


E/S Digitales Ejercicio 1

*/

int led_rojo = 13; //Declaramos "led_rojo" como una variable

int led_verde = 12; //Declaramos "led_verde" como una variable

http://www.taringa.net/posts/info/19603762/Introduccion-a-Arduino-Guia-completa.html[2/10/2016 5:35:23 p. m.]

Introduccin a Arduino [Gua completa] - Taringa!

void setup() //bucle de configuracin (se ejecuta una sola vez)

//Asignaremos las variables que hemos declarado como entradas o salidas.

//Es totalmente necesario definir los pines de salida, ya que por defecto los
pines

//estan configurados como entradas

pinMode (led_rojo, OUTPUT);

pinMode (led_verde, OUTPUT);

void loop() //bucle que se repetir constantemente

digitalWrite (led_rojo, HIGH); //Pone el pin 13 asociado al led_rojo en alto (lo


enciende)

delay (500); //Espera 500 milisegundos (0.5 segundos)

digitalWrite (led_rojo, LOW); //Apaga el led rojo.

digitalWrite (led_verde, HIGH);//Pone el pin 12 asociado al led_verde en alto


(lo enciende)

delay (500); //Espera 500 milisegundos (0.5 segundos)

digitalWrite (led_verde, LOW); //Apaga el led verde.

En el programa podemos identificar los dos bloques de programa que ya


conocemos el bloque de "SetUp" y el "Loop", pero adems vemos que
fuera de estos bloques, al principio de todo hemos declarado unas
variables, estas variables son variables globales, ya que no estn
contenidas dentro de ningn bloque y sern accesible por cualquier
parte del programa. Al declarar las variables adems les hemos
asignado valores numricos, de manera que cuando en nuestro
programa escribamos por ejemplo "led_verde" ser equivalente a
escribir el valor 12.

Esta parte inicial adems de para generar variables, sirve para hacer
nuestro programa mas legible y ayudarnos a programar. Por ejemplo a
la hora de escribir en uno de los pines digitales de nuestro Arduino
podemos poner "digitalWrite(12, HIGH)" instruccin que va a poner el pin
12 de Arduino a nivel alto, pero si hemos asignado con anterioridad una
variable "led_verde=12", podemos escribir "digitalWrite(led_verde,
HIGH)" siendo esto equivalente y ayudndonos a no tener que
memorizar en que pin de Arduino tenemos conectado el led verde. Esto
es muy til cuando estamos utilizando muchos pines, ya que nosotros
mismos podemos nombrar los pines que queremos activar o de los que
queremos leer un valor simplemente nombrndolos, sin tener que
conocer a que pin de la placa estn conectados.

Otra instruccin muy importante que seguramente tengamos que usar


en la mayora de los programas es "pinMode(pin, MODO)" , esta
instruccin sirve para configurar los pines de Arduino como entradas o
como salidas. Esta instruccin tendr que ir SIEMPRE dentro de la
funcin "SetUp" que ser ejecutada una sola vez al principio de nuestro
programa. En el ejemplo podemos ver como hemos establecido los led's
como salidas y los pulsadores como entradas.

Como dato hay que decir que los terminales de Arduino por defecto
estn configurados como entradas, por lo que tan solo es obligatorio
establecer los pines que queramos usar como salidas, aunque
recomiendo nombrar tanto las salidas como las entradas para evitar
confusiones.

Una vez explicada la parte de declaracin de variables y configuracin


del "SetUp", llegamos a la funcin "Loop", esta es la parte del programa
que se va a repetir cclicamente ejecutando las instrucciones que se
encuentren en su interior. En el ejemplo podemos ver como con 6
sencillas instrucciones alternamos el encendido de los led's, siguiendo
estos pasos:

http://www.taringa.net/posts/info/19603762/Introduccion-a-Arduino-Guia-completa.html[2/10/2016 5:35:23 p. m.]

Introduccin a Arduino [Gua completa] - Taringa!

Encendemos el led rojo escribiendo sobre el pin correspondiente con la


instruccin "digitalWrite(led_rojo, HIGH)"

Esperamos 500 milisegundos (0.5 segundos) usando para ello "delay (500)"
Apagamos el led rojo "digitalWrite(led_rojo, LOW)"
Encendemos el led verde "digitalWrite(led_verde, HIGH)"
Esperamos 0.5 segundos "delay (500)"
Apagamos el led verde "digitalWrite(led_verde, LOW)"

Una vez ejecutada esta ltima instruccin el programa volver a empezar


ejecutando de manera secuencial todo lo que contenga la funcin "Loop".

Programando E/S digitales (segundo


ejercicio)

Ya hemos visto con el primer ejercicio como activar o desactivar las


salidas usando la instruccin digitaWrite(pin, ESTADO), ahora veremos
cmo leer el estado de los pines de entrada (en este ejemplo usaremos
un pulsador, pero podemos leer cualquier seal digital) usando para ello
la instruccin "digitalRead(PIN)". Este ejemplo encender un led y otro
en funcin del que pulsador se presione.

/* PRIMEROS PASOS CON ARDUINO


E/S Digitales Ejercicio 2

*/

int led_rojo = 13; //Declaramos "led_rojo" como una variable

int led_verde = 12; //Declaramos "led_verde" como una variable

int pulsador1 = 2; //Declaramos "pulsador1" como una variable

int pulsador2 = 3; //Declaramos "pulsador2" como una variable

int estado1 = LOW; //Declara la variable "estado1" que usaremos en el


programa

int estado2 = LOW; //Declara la variable "estado2" que usaremos en el


programa

void setup() //bucle de configuracin (se ejecuta una sola vez)

//Asignaremos las variables que hemos declarado como entradas o salidas.

//Es totalmente necesario definir los pines de salida, ya que por defecto los
pines

//estan configurados como entradas

pinMode (led_rojo, OUTPUT);

pinMode (led_verde, OUTPUT);

pinMode (pulsador1, INPUT);

pinMode (pulsador2, INPUT);

void loop() //bucle que se repetir constantemente

estado1 = digitalRead (pulsador1); //Asigna a la variable "estado1" el valor


que tenga el pulsador 1 que puede ser alto "HIGH" o bajo "LOW"

estado2 = digitalRead (pulsador2); //Asigna a la variable "estado2" el valor


que tenga el pulsador 2 que puede ser alto "HIGH" o bajo "LOW"

digitalWrite (led_rojo, estado1); //pone el "led_rojo" en el estado que tenga la


variable "estado1"

digitalWrite (led_verde, estado2); //pone el "led_verde" en el estado que tenga


la variable "estado2"

Para poder trabajar con esta instruccin, debemos primero definir una
variable donde almacenar el estado que tenga el pin correspondiente,

http://www.taringa.net/posts/info/19603762/Introduccion-a-Arduino-Guia-completa.html[2/10/2016 5:35:23 p. m.]

Introduccin a Arduino [Gua completa] - Taringa!

esto es as para poder trabajar con el valor ledo en el resto del


programa. Para ello creamos una variable global a la que asignamos el
estado de "LOW" o apagado "int estado1 =LOW", esta variable no es
como la del primer ejemplo, esta es una variable dinmica, ya que el
programa (en funcin del pulsador) va a estar constantemente
cambiando el valor de "LOW" a "HIGH".

Una vez definida las variables que vamos a usar, dentro del bloque
"Loop" vamos a asignar a una de las variables que hemos creado el
valor que tenga el pulsador 1, para ello hacemos "estado1 =
digitalRead(pulsador1)" como en el primer ejemplo ya habamos definido
pulsador1 =2, lo que hace que la funcin anterior sea equivalente a
"estado1 = digitalRead(2)" enlazando directamente la variable "estado1"
con el valor del pin 2.

En el ejemplo almacenaremos el valor del pulsador 1 y el pulsador 2 en


las variables "estado1" y "estado2" que como podemos observar usamos
posteriormente para encender los led's en funcin del estado de los
pulsadores usando la instruccin "digitalWrite(led_rojo, estado1)". La
variable estado1 al ser leida de forma digital solo puede tener 2 estados
posible "HIGH" o "LOW" (encendido o apagado).

Aqu termina el primer tutorial para aprender a programar Arduino, te


aconsejo que no te quedes simplemente en mis ejemplos y modifiques el
cdigo aadiendo mas entradas y salidas, modificando los "delay" y
haciendo algn efecto de luces, esto te dar mayor soltura a la hora de
programar Arduino

Entradas y salidas analgicas

Para sacarle toda la funcionalidad a nuestro Arduino no vale con saber


trabajar con seales digitales, ya que vivimos en un mundo analgico y
en muchas ocasiones debemos de interpretar estas seales analgicas
y actuar de manera proporcional. Para ello no nos vale con la lgica
digital que trabaja a "todo o nada", ya que si queremos por ejemplo
tomar la temperatura o medir una distancia, los sensores que se
encargan de medir estos parmetros nos van a dar una seal analgica
proporcional al parmetro ledo, seal que deberemos de interpretar con
nuestro Arduino.

Para esta prctica vamos a necesitar:

1 Placa Arduino

1 Protoboard (placa de prototipado)

1 Diodo Led

1 Potencimetro 10K

1 Resistencia de 220

1 Resistencia de 1K

1 LDR (resistencia variable con la luz)

En este tutorial, voy a realizar 2 pequeos ejemplos en los que voy a


trabajar tanto con las entradas analgicas como con las salidas, en el
primer ejemplo voy a variar la luminosidad de un LED variando el voltaje
de salida de manera automtica y en el segundo ejemplo voy a variar
esta luminosidad usando para ello un potencimetro (que me dar un
nivel de tensin variable). Posteriormente, voy a sustituir el
potenciometro por una LDR (Resistencia que varia con la luz) y vais a
ver con esto un claro ejemplo de aplicacin de las E/S analgicas.

Aclaracin antes de trabajar con E/S analgicas

Antes de empezar con la prctica, conviene dejar claro algunos puntos


importantes a la hora de trabajar con entradas y salidas analgicas.

http://www.taringa.net/posts/info/19603762/Introduccion-a-Arduino-Guia-completa.html[2/10/2016 5:35:23 p. m.]

Introduccin a Arduino [Gua completa] - Taringa!

Lo primer que debemos de tener en cuenta, es que Arduino posee pines


de conexin para el uso especifico de seales analgicas, en las
diferentes placas podemos reconocer estos pines ya que tendrn
serigrafiado "ANALOG IN" para los pines de entrada analgicos y sern
nombrados desde A0 a Ax (dependiendo del modelo tendr ms o
menos entradas).

Para las salidas analgicas se usan los pines que estn marcados como
PWM (Pulse Width Modultation) modulacin por ancho de pulso, y es
que en realidad las salidas analgicas no dan una seal continua a un
nivel determinado, sino que mediante pulsos consiguen obtener un nivel
de tensin promedio proporcional al ancho de estos pulsos

Como podis ver en la imagen superior, variando en ancho del pulso,


podemos obtener una seal promedio equivalente. Para la primera

http://www.taringa.net/posts/info/19603762/Introduccion-a-Arduino-Guia-completa.html[2/10/2016 5:35:23 p. m.]

Introduccin a Arduino [Gua completa] - Taringa!

seal, cuyo ancho de pulso es del 10%, nos dara una seal analgica
de 0.5v (el 10% de 5V), para la segunda una seal de 2.5v y para la
tercera seal obtendramos una seal equivalente de 4.5v.

Hay que tener en cuenta que la tensin de salida que podemos sacar de
nuestro Arduino va a ir de 0 a 5v o de 0 a 3.3v (dependiendo del modelo
con el que estemos trabajando).
Primer ejercicio

En este primer ejercicio, vamos a variar la luminosidad de un LED de


manera automtica variando para ello la tensin que le entregamos al
LED. Para esto, vamos a utilizar la instruccin analogwrite(PIN, VALOR),
la cual va a sacar por el "PIN" que le indiquemos un valor de tensin que
ser equivalente al valor introducido en "VALOR".

Esta instruccin trabaja con valores de 8bit's, o lo que es lo mismo, con


valores que van de 0 a 255, al valor 0 le corresponder un valor 0 de
voltaje, y al valor 255 se le asignara el valor mximo de voltaje, que ser
5v 3.3v (dependiendo del modelo de Arduino que estemos usando).

En la siguiente imagen, podis ver un esquema del montaje. Este


montaje ser muy sencillo, tan solo debemos de conectar a una salida
PWM de nuestro Arduino un LED con una resistencia de 220

Ahora vamos con la programacin..... en este primer ejemplo podemos


ver elementos que usamos con anterioridad y en los que no me parare
mucho en detallar, como puede ser la declaracin de variables y
creacin de una estructura de programa tpica formada por la funcin
"SetUp" y "Loop".

En este primer ejemplo, hay tan solo dos cosas destacables que quiero
que aprendis, la primera es la utilizacin de la escritura analgica (que
es de lo que va este tutorial), pero tambin os voy a ensear a declarar
un bucle que se repetir mientras dure la condicin establecida, este es
el bucle "FOR".

/* Tutorial 2: Entradas y salidas analgicas

En este tutorial, vamos a aprender a usar las E/S analgicas de Arduino


mediante 3 pequeos ejemplos.

Ejemplo 1: Regulacin de la luminosidad de un LED de manera automtica.

*/

int LED = 10; //Asociamos el pin 10 a la salida del LED

int VALOR = 0; //Creamos una variable y le asignamos el valor "0" como


partida

void setup(){

http://www.taringa.net/posts/info/19603762/Introduccion-a-Arduino-Guia-completa.html[2/10/2016 5:35:23 p. m.]

Introduccin a Arduino [Gua completa] - Taringa!

pinMode(LED, OUTPUT); //Establece el el pin al que conectamos el LED como


salida (no es necesario)

void loop(){

for ( VALOR = 0; VALOR<=255; VALOR++) //incializa la variable VALOR a 0 y


ejecuta el bucle siempre que se cumpla VALOR<=255

//(al final de cada repeticin incrementa valor en 1)

analogWrite(LED, VALOR); //Manda un nivel de seal analgico equivalente a


"VALOR" (para "VALOR=0" tendremos 0v y para "VALOR=255" sacar 5v

delay (5); //Ponemos un "delay" de 5ms para poder ver la secuencia

for ( VALOR = 255; VALOR>=0; VALOR--) //incializa la variable VALOR a 255 y


ejecuta el bucle siempre que se cumpla VALOR>=0

//(al final de cada repeticin decrementa valor en 1)

analogWrite(LED, VALOR); //Manda un nivel de seal analgico equivalente a


"VALOR" (para "VALOR=0" tendremos 0v y para "VALOR=255" sacar 5v

delay (5); //Ponemos un "delay" de 5ms para poder ver la secuencia

Dentro de la funcin "LOOP", hemos declarado 2 bucles "FOR", la estructura del


buclue "FOR" es la siguente:

for (inicializacin de variable; condicin; expresin)

Instrucciones a ejecutar

En el ejemplo podemos ver como he inicializado "VALOR" a 0 y le he


dado la condicin para que se repita bucle mientras que "VALOR<=255",
por lo que va a estar encerrado en este bucle mientras se cumpla esta
condicin. Pero en la expresin final, le he puesto "VALOR++" lo que
incrementar en 1 la variable "VALOR" cada vez que se ejecute el bucle,
por lo que cuando se ejecute 256 veces, "VALOR" ser mayor de 255 y
saldr de este bucle.

Le he dado valores entre 0 y 255, porque son los valores mnimo y


mximo para sacar por la salida analgica y en este ejemplo era lo ms
adecuado, pero cuando necesitis crear un bucle que se repita cierto
nmero de veces, podis asignarle el valor que mas os convenga.

Dentro del bucle "FOR", encontramos las instrucciones que vamos a


ejecutar, en este caso es la instruccin de escritura analgica
analogWrite(LED, VALOR) Esta instruccin saca por el pin que hemos
asignado a LED (Pin 10 del PWM) un nivel de tensin equivalente a
"VALOR" que como recordemos es una variable que cada vez que se
ejecuta el bucle es incrementada en una unidad, por lo que el nivel de
tensin ir aumentando y con ello la luminosidad del LED.

He colocado un delay de 5ms al final tan solo para poder ver cmo
cambia la luminosidad del LED, sin esto se ejecutara tan rpido que nos
parecera que esta siempre encendido.

En el siguiente bucle vamos a ejecutar lo mismo, pero de manera


inversa. Se establece la variable "VALOR" en 255 e iremos
decrementando esta cifra hasta llegar a 0 que ser el momento en el
que salgamos del bucle y comience a ejecutarse la funcin "LOOP" de
nuevo.

http://www.taringa.net/posts/info/19603762/Introduccion-a-Arduino-Guia-completa.html[2/10/2016 5:35:23 p. m.]

Introduccin a Arduino [Gua completa] - Taringa!

Segundo ejercicio

En este segundo ejercicio, vamos a aprovechar la parte que ya tenamos


creada del ejemplo anterior, y vamos a aadirle un potencimetro que es
con el que vamos a regular la intensidad del LED, esto se podra hacer
directamente sin Arduino, pero esta es la mejor manera para asimilar el
concepto de "entrada analgica".

La funcin que va a tener el potencimetro, va a ser la de regular el valor


de tensin que entregamos a nuestro Arduino, haciendo que este valor
oscile entre 0 y 5 voltios. Para conectar el potencimetro, tan solo debis
de conectar las patillas de los extremos a tensin (+5v o +3.3v) y la
masa del circuito (GND). La patilla central ser la que se conecte al pin
de entrada analgico de Arduino.

En la siguiente imagen podis ver el circuito que debeis montar en la


protoboard.

Ahora vamos con el cdigo de programa!! Como veis es incluso ms


sencillo que el anterior, en este programa, lo que vamos a hacer es leer
el valor de tensin que nos entrega el potencimetro y regular la
luminosidad del LED en funcin de este valor.

/* Tutorial 2: Entradas y salidas analgicas

En este tutorial, vamos a aprender a usar las E/S analgicas de Arduino


mediante 3 pequeos ejemplos.

Ejemplo 2: Regulacin de la luminosidad de un LED en funcin de un nivel


de tensin leido.

*/

int LED = 10; //Asociamos el pin 10 a la salida del LED

int NIVEL_TENSION = 0; //Asociamos el pin 0 a la entrada de seal

int VALOR = 0; //Creamos una variable y le asignamos el valor "0" como


partida

void setup(){

pinMode(LED, OUTPUT); //Establece el el pin al que conectamos el LED como


salida (no es necesario)

pinMode(NIVEL_TENSION, INPUT); //Establece el el pin por el que entrar la


seal analgica (no es necesario)

void loop(){

VALOR = analogRead(NIVEL_TENSION); //Asignamos a la variable "VALOR"

http://www.taringa.net/posts/info/19603762/Introduccion-a-Arduino-Guia-completa.html[2/10/2016 5:35:23 p. m.]

Introduccin a Arduino [Gua completa] - Taringa!

el nivel de tensin leido

VALOR = VALOR/4; //Al leer un valor analogico, este tiene 10 bit's, va de 0 a


1023, por lo que debemos adaptarlo al rango de 0 a 255

//(una manera sencilla es dividiendo entre 4)

analogWrite (LED, VALOR);

Para leer un valor analgico, usaremos la instruccin analogRead(PIN)


donde tendremos que indicar en que "PIN" queremos realizar la lectura.
Este valor leido, debemos de almacenarlo en alguna variable, por lo que
previamente tendremos que crear una variable y asignarle el valor leido,
quedando de la siguiente manera "VARIABLE = analogRead(PIN)".

Una vez almacenado el valor de esta variable, podemos hacer con esto
lo que queramos, podemos compararlo con otro valor y actuar de una
forma u otra, podemos aplicarle operaciones matemticas para
transformar o adaptar el valor...

En el cdigo de programa, podemos ver dentro del bucle "LOOP" justo


despus de almacenar el valor ledo en la variable "VALOR" una
instruccin que divide el valor ledo entre 4 "VALOR = VALOR/4" esto
hay que hacerlo para adaptar el valor que leemos (10bit's) a el valor que
sacamos por el PWM (8bit's). La resolucin que tenemos a la hora de
leer un valor ir de 0 a 1023, mientras que al escribir en el PWM es de 0
a 255, por lo que si no realizamos la operacin de dividir esto entre 4, no
vamos a tener una equivalencia entre el valor ledo y lo que escribimos.

Ejemplo prctico

Como ejemplo prctico y para que veis la funcionalidad que puede


tener esto de las E/S analgicas, he sustituido el potencimetro por una
LDR (resistencia que varia con la luz) y he configurado el circuito para
que cuanto ms baja sea la luz del entorno, mayor luminosidad tenga el
LED. Esto se puede aplicar perfectamente para iluminacin de exteriores
y hacer que segn vaya anocheciendo las luces se enciendan poco a
poco en proporcin a la luz ambiente. Pero vosotros en lugar de la LDR,
podis poner cualquier tipo de sensor analgico, sensor de humedad, de
inclinacin, de ultrasonidos (para medir distancias), de deteccin de
gas.... cualquier cosa que os podis imaginar y para lo que queris una
respuesta proporcional.

Aqu tenis el esquema del montaje:

Como podis ver, lo que he hecho, ha sido crear un divisor de tensin


con la LDR y una resistencia de 1K, la parte de la LDR, la he
conectado a GND, y la de la resistencia a +5v, de manera que al recibir

http://www.taringa.net/posts/info/19603762/Introduccion-a-Arduino-Guia-completa.html[2/10/2016 5:35:23 p. m.]

Introduccin a Arduino [Gua completa] - Taringa!

luz, la LDR disminuye su resistencia considerablemente, haciendo que la


tensin que tenemos en el punto intermedio del divisor de tensin sea
prcticamente de 0v. Si bien, cuando la LDR no recibe luz, la resistencia
sube haciendo que en el punto intermedio del divisor, tengamos
prcticamente 5v.

Monitor Serial

Antes de seguir avanzando con los tutoriales, vale la pena pararse un


poco y explicar una cualidad que posee Arduino y que se est
integrando cada vez en ms dispositivos, es la propiedad de poder
comunicarse con otros perifricos mediante el "puerto serial". Esta
cualidad puede ser muy til a la hora de interconectar dispositivos y
hacer proyectos complejos, pero ahora que estis empezando a
programar, donde va a tener una gran utilidad va a ser a la hora de
depurar vuestros programas y buscar errores, ya que algunas veces, no
sabris si lo que falla es el programa o si por lo contrario el problema
est en el cableado.

El entorno de programacin de Arduino, posee una herramienta llamada


"Monitor Serial", esta herramienta abrir una consola con la que
podemos comunicarnos con Arduino, tanto para mandarle comandos
como para recibir informacin . Esto es muy til para conocer el estado
de las variables de programa y saber qu es lo que realmente est
pasando dentro de nuestro Arduino.

Para esta prctica vamos a usar el montaje de la practica anterior (E/S


analgicas) y utilizando el puerto serial, vamos a leer el valor de las
variables que usamos en el programa.

En funcin del modelo de Arduino con el que estis trabajando,


dispondris de ms o menos puertos serial para la comunicacin, pero
como mnimo tendris un puerto serial asociado a los pines 0 (RX) y 1
(TX) de vuestro Arduino.

Tened en cuenta que si habilitis el puerto serial, no podris usar los


pines 0 y 1 como entrada o salida digital.

Primer ejercicio

Para trabajar con el puerto serial, lo primero que debis de hacer es


habilitarlo, para ello tenis que incluir la funcin Serial.begin(baud-rate)
dentro del SetUp, asignndole el valor al cual queremos realizar la
comunicacin. Un valor muy comn es el de 9600.

http://www.taringa.net/posts/info/19603762/Introduccion-a-Arduino-Guia-completa.html[2/10/2016 5:35:23 p. m.]

Introduccin a Arduino [Gua completa] - Taringa!

La inicializacin del puerto serial quedara de la siguiente manera:

void setup(){

Serial.begin(9600); //inicializacin del puerto serial

Ahora que hemos inicializado el puerto serial, vamos con el programa


completo, como podis ver, es el mismo programa que usamos en la
prctica anterior, pero le he incluido alguna instrucciones para visualizar
los datos del programa mediante el puerto serial.

/* Tutorial 3: Puerto Serial

En este tutorial, vamos a leer y escribir datos en el puerto serial.

Ejemplo 1: Lectura de variables de programa a traves del puerto serial.

*/

int LED = 10; //Asociamos el pin 10 a la salida del LED

int NIVEL_TENSION = 0; //Asociamos el pin 0 a la entrada de seal

int VALOR = 0; //Creamos una variable y le asignamos el valor "0" como


partida

void setup(){

Serial.begin(9600);

pinMode(LED, OUTPUT); //Establece el el pin al que conectamos el LED como


salida (no es necesario)

pinMode(NIVEL_TENSION, INPUT); //Establece el el pin por el que entrar la


seal analgica (no es necesario)

void loop(){

VALOR = analogRead(NIVEL_TENSION); //Asignamos a la variable "VALOR"


el nivel de tensin leido

Serial.print("Valor 10 bit's: " ; //Imprime el texto que esta entre las comillas

Serial.print(VALOR); //Imprime el la variable "VALOR" (10 bit's)

Serial.print("t" ; //Introduce una tabulacin

VALOR = VALOR/4; //Al leer un valor analogico, este tiene 10 bit's, va de 0 a


1023, por lo que debemos adaptarlo al rango de 0 a 255

//(una manera sencilla es dividiendo entre 4)

analogWrite (LED, VALOR);

Serial.print("Valor 8 bit's: " ; //Imprime el texto que esta entre las comillas

Serial.println(VALOR); //Imprime el la variable "VALOR" (8 bit's)

delay(1000);

Las instrucciones que he usado son Serial.print(valor) que imprime en el


puerto serial los datos de la variable en formato ASCII. Esta instruccin
puede tener un parmetro extra si queremos visualizar los datos en otro
formato, quedando la instruccin de la siguiente manera:

Serial.print(valor, formato)

Pudiendo "formato" tomar los valores BIN (binario), OCT (octal), DEC
(decimal) y HEX (hexadecimal). En versiones antiguas de Arduino,
tambin estaba disponible el sacar los datos en formato "BYTE", pero
este formato fue eliminado, si queremos sacar un byte en pantalla,
podemos utilizar la funcin Serial.write(valor).

Tambin debis saber, que si lo que queris mostrar en pantalla no es


una variable de programa o algn otro dato, sino que es un texto, podis
imprimirlo en pantalla simplemente poniendo el texto que queris entre
comillas, quedando de la siguiente manera:

http://www.taringa.net/posts/info/19603762/Introduccion-a-Arduino-Guia-completa.html[2/10/2016 5:35:23 p. m.]

Introduccin a Arduino [Gua completa] - Taringa!

Serial.print("Texto que se desea mostrar"

La instruccin Serial.println(valor) funciona igual que la instruccin


Serial.print(valor), la nica diferencia es que introduce un retorno de
carro y salto de lnea, esto se usa para ver los datos ordenados en el
monitor serial, ya que si no hiciramos esto, saldra todo en la misma
lnea y sera totalmente ilegible.

Otra instruccin que he colocado para hacer ms visible los datos es


Serial.print("t" , y es que el comando "t" introduce una tabulacin entre
los datos, quedando estos separados y hacindolos mucho mas legibles.
Si queris introducir un salto de lnea sin usar la funcin
Serial.println(valor), podis poner Serial.print("n" y automticamente
los datos se empezarn a escribir en una nueva lnea.

Para abrir el monitor serial y ver cmo trabajan realmente estas


funciones, id a la barra de herramientas y haced clic en "Monitor Serial"
o bien usad el atajo de teclado (Ctrl+Maysculas+M), automticamente
se os abrir una consola desde donde podris ver impreso en pantalla
las variables "VALOR" antes y despus de realizar la conversin de 10 a
8 bit's (VALOR = VALOR/4).

http://www.taringa.net/posts/info/19603762/Introduccion-a-Arduino-Guia-completa.html[2/10/2016 5:35:23 p. m.]

Introduccin a Arduino [Gua completa] - Taringa!

En la parte superior de la consola, hay un hueco donde se puede escribir


y mandar datos a Arduino, esto es muy til cuando estamos
desarrollando aplicaciones que requieren una comunicacin o cuando
para depurar el programa hacemos que Arduino ejecute una u otra cosa
en funcin de los datos que le mandemos a travs del puerto serial.

Compartir

Twittear

Fuentes de Informacin - Introduccin a Arduino [Gua completa]


Zona Maker - Conociendo Arduino Introduccin

Tags:
arduino |
plataforma de desarrollo abierta |
arduino 2016 |
hardware |
circuitos

Dar puntos

782

DENUNCIAR

PUNTOS

SEGUIR POST

88 Votos
1.029 Visitas
94 Favoritos
13 Seguidores

Tambin te puede interesar...

Manjarcito:
Jessica Abudinen

Sabras decir
para qu sirve este

El cambio de nia
presumida y

Joven hallo
solucin a

Es Alice Rae la
mujer mas

Es Olga Katysheva
la mujer mas

Comentarios Destacados
Funky_Dung
Hace 5 horas
+11

http://www.taringa.net/posts/info/19603762/Introduccion-a-Arduino-Guia-completa.html[2/10/2016 5:35:23 p. m.]

Introduccin a Arduino [Gua completa] - Taringa!

Miyata1987
Hace 5 horas
jjajajaajajajajajajjaj

MaxFischer
Hace 3 horas
Como te guatan los positivos eh

30 comentarios - Introduccin a Arduino [Gua completa]


skape_
Hace 5 horas
+1
muy bueno desp lo leo

Miyata1987
Hace 5 horas
Gracias!!

frank_costello
Hace 5 horas
+1

Miyata1987
Hace 5 horas
Gracias Frank!!

Opatricinho
Hace 5 horas
+1
Excelente pap.

Miyata1987
Hace 5 horas
+1
Gracias Opa!

Funky_Dung
Hace 5 horas
+11

Miyata1987
Hace 5 horas
jjajajaajajajajajajjaj

MaxFischer
Hace 3 horas
Como te guatan los positivos eh

xenofobico
Hace 5 horas
buen post miya!

_kum_
Hace 5 horas
+1
@BananaEnderezada

Miyata1987
Hace 5 horas
y eso?? jajajaja

StalkerWolf2033
Hace 5 horas
+1

http://www.taringa.net/posts/info/19603762/Introduccion-a-Arduino-Guia-completa.html[2/10/2016 5:35:23 p. m.]

Introduccin a Arduino [Gua completa] - Taringa!

Interesante..

Miyata1987
Hace 5 horas
gracias nanita

kawaii_desune
Hace 5 horas
buen post, quiza algun dia cuando salga de la pobreza me compre un arduino y me
sirva este post

Miyata1987
Hace 5 horas
muchas gracias!

valentinamaximil
Hace 5 horas
+1
Gracias por la guia man, estamos empezando con Arduino mi lincesa y yo y nos
ayuda mucho

Miyata1987
Hace 5 horas
+1
me alegra que les sea de ayuda, abrazo grande y buen domingo para
ambos!

Onichanta
Hace 5 horas

Alfa-Centauri
Hace 5 horas
+2
Che vieja, en galeras Jardin Datasoft me quiere vender el Arduino UNO R3 a 728
mangos...
Pero en MercadoLibre la encuentro a 200p... El tipo de galerias me dijo que el que
vende l es original y toda la sarasa, el de MercadoLibre tambin.
Cul compro? A mi me parece que el de Datasoft me quiere cagar. Porque en ebay
ronda los 200p si hago la conversin.

Miyata1987
Hace 5 horas
se, te esta queriendo cagar, si mercalibre y amazon te tira ese precio por el
mismo producto es porque sale eso

Evilmask
Hace 3 horas
Tenes de los 2, el original y el clon (los diseos se publican libremente asi
que es fcil de copiar)... obviamente el clon es mas barato... igual 700
pesos es demasiado me parece...

http://www.taringa.net/posts/info/19603762/Introduccion-a-Arduino-Guia-completa.html[2/10/2016 5:35:23 p. m.]

Introduccin a Arduino [Gua completa] - Taringa!

brandont
Hace 5 horas
+1
Buen post.

Miyata1987
Hace 5 horas
+1
gracias idolo, buen domingo!

IVANJAJA1984
Hace 5 horas
+1
buen post!!!!

Miyata1987
Hace 5 horas
muchas gracias loco!!

lagarrapatasucia
Hace 5 horas
+1

Miyata1987
Hace 5 horas
gracias bb

anthonybrianx100
Hace 5 horas

Miyata1987
Hace 4 horas
GRacias thony!

JulioArioArgRoca
Hace 5 horas
@Who_may_be Uhh cuanto dolor anal te hice para que me mandes mp y bloquees

Por lo menos deci en que post fue putita dolida jaja

Miyata1987
Hace 5 horas
maquina esta todo mas que bien, pero bardo aca no, sino me cierran los
coments a mi. Disculpa no es de boton ni corta mambo.

JulioArioArgRoca
Hace 5 horas
+1
@Miyata1987 tranquilo papu, es que agarre el post reciente que haba, es
que me mando mp acusandome de algo, que la verdad ni idea .

santy_1993
Hace 5 horas
+1
Saber arduino sirve en el campo laboral?

Miyata1987
Hace 4 horas
+1
depende a donde apuntes

taringaso88
Hace 4 horas
otro increible post de mi amigo @Miyata1987

Miyata1987
Hace 4 horas
+1
Gracias amigo abrazo enorme !!!!

taringaso88
Hace 4 horas
@Miyata1987 abrazo capo

suerte en tus proximos posts

xsunderx
Hace 4 horas
yo me compre el mega 2560 para hacerme una impresora 3D. la pienso hacerla con
motores de lectoras de cd o impresoras.

Miyata1987
Hace 4 horas
Con los de impresora va como pia. Ayer justamente saque un post de
impresoras 3d. Abrazo y suerte en el proyecto y seria bueno que lo
publiques!

xsunderx
Hace 4 horas
@Miyata1987 Gracias, voy a pasar por esos post. La idea es hacer una
reciclada y dsp imprimir piezas para armar una ms linda y con mayor
resolucin.

http://www.taringa.net/posts/info/19603762/Introduccion-a-Arduino-Guia-completa.html[2/10/2016 5:35:23 p. m.]

Introduccin a Arduino [Gua completa] - Taringa!

1her
Hace 4 horas
fiera no te cansas de subir inteligencia colectiva,ja van+10

Miyata1987
Hace 4 horas
+1
QUe buen coment gracias loco! Que tengas buen domingo!

calhound987
Hace 4 horas
loko osea que que puedo armar un arduino si se c++?
Cargar 1 ms

calhound987
Hace 4 horas
@Sam_Houston pos ahi ya tu sabes

Miyata1987
Hace 4 horas
@calhound987 usted sabe mas de esto que yo comediante

calhound987
Hace 4 horas
@Miyata1987 c++ si pero no sabia que usaban el mismo lenguaje de
preogramacion ,o tiene diferencia?

quetzalfir
Hace 4 horas
Con el Leonardo tuve muchos problemas al principio pero luego de muchos fails y
dolores de cabeza es uno de los mejores arduinos

Miyata1987
Hace 4 horas
Groso! Gracias por pasar!

quetzalfir
Hace 4 horas
@Miyata1987 a ya me acord de ti, tu eres el que agradece todos los
comentarios, pattico

richardon
Hace 4 horas
excelente, tengo ganas de empezar a jugar con eso, y me parece que ste post es el
puntapie inicial. Si tienes mas info, por favor, envala. xitos!!!

Miyata1987
Hace 4 horas
Seguramente saque una segunda parte. GRacias por pasar!

walmank14
Hace 4 horas
Buen post! hace poco entregue un proyecto de sistema de riego el cual llevaba un
relay, sensor de humedad y temperatura bluetooth y bomba de agua, la cual iba a
mostrar desde bluetooth a un android que tempatura habia en el ambiente.. al
momento de colocar el sensor de temperatura este mostraba en el telefono y si
estaba seca la planta, empezaba a bombear el agua pero si no afuera asi, si la planta
estar mojada... no bombearia el agua..

luismorenomora
Hace 4 horas
el puto amo bien por este post, pero falga explicar un poco mas, pero igual esta muy
buen a favoritos y van10

cyberlymax
Hace 4 horas
estoy por arrancar con arduino, buena info

leo14poch
Hace 4 horas
buena info,muy util

sosunico
Hace 4 horas
+1
Hasta cuantas veces se pueden utilizar? Me refiero a reescribir codigos. tenia ganas
de mandar a pedir uno para experimentar
Cargar 1 ms

sosunico
Hace 3 horas
@SOLIFERRUM Gracias

http://www.taringa.net/posts/info/19603762/Introduccion-a-Arduino-Guia-completa.html[2/10/2016 5:35:23 p. m.]

Introduccin a Arduino [Gua completa] - Taringa!

SOLIFERRUM
Hace 3 horas
@sosunico en ebay tienes copias por 3 o 4 euros, las versiones nano.

SOLIFERRUM
Hace 3 horas
@sosunico yo me pille unos cuantos para experimentar y van bien.

herniBots
Hace 4 horas
Buen post papu

MaxFischer
Hace 3 horas
Buen post aunque no entendi un carajin

Escribe un comentario...

Comentar
Comentar

info

imagenes

imagenes

info

offtopic

noticias

Kulning | El
llamado vikingo

Conoce a esta
gauchita

Pasa y mira a
Laura

Aqu es donde
Facebook

Las izquierdas,
comunismo y

Vidal ya prepara
medidas para

Anuncie en Taringa! |
Ayuda |
Reglas de la Comunidad |
Desarrolladores |
Trabaja con nosotros! |
Reportar bug |
Enciclopedia
Argentina |
Chile |
Colombia |
Mxico |
Per |
Uruguay |
Venezuela |
Resto del mundo
Denuncias |
Reportar Abuso - DMCA |
Trminos y Condiciones |
Privacidad de datos

http://www.taringa.net/posts/info/19603762/Introduccion-a-Arduino-Guia-completa.html[2/10/2016 5:35:23 p. m.]

S-ar putea să vă placă și