Está en la página 1de 31

INTRODUCCIN.

Qu es Arduino?
Arduino es una plataforma de desarrollo de computacin basada en una placa electrnica
con entradas y salidas, analgicas y digitales; y un entorno de programacin encargado de
crear el software para dicha placa, compilarlo y grabarlo en el microcontrolador de esta.

Es un dispositivo que conecta el mundo fsico con el mundo virtual, o el mundo analgico
con el digital.

Sus creadores son el zaragozano David Cuartielles, ingeniero electrnico y docente de la


Universidad de Mlmo, Suecia y Massimo Banzi, italiano, diseador y desarrollador Web.
El proyecto fue concebido en Italia en el ao 2005.

En la siguiente web podrs encontrar mucha informacin ms relativa a la palca:

http://arduino.cc/

Instalacin de Arduino en Windows


Se da por sentado que ya tenemos instalado java, si no es as hay que descargar el
ejecutable desde la pgina oficial e instalarlo http://www.java.com/es/download/

Descargamos el programa en su ltima versin de la pgina oficial


http://arduino.cc/en/Main/Software y lo descomprimimos en el PC, se creara una carpeta
arduino-1.0.1, la abrimos y ya podemos abrir nuestro entorno de programacin.

Para instalar el driver de la placa abrimos el Administrador de dispositivos (con la placa


conectada) y nos aparece en el listado Otros dispositivos Dispositivo desconocido,
hacemos clic encima de l y en la pestaa Controlador pulsamos Actualizar controlador
y despus Buscar software de controlador en el equipo, especificamos la ruta de la carpeta
drivers que se encuentra dentro de la arduino-1.0.1 que descomprimimos y aceptamos,
automticamente se instala el controlador.
Abrimos el entorno de programacin y en Herramientas Puerto Serial seleccionamos el
puerto COM# que nos aparece en el administrador de dispositivos cuando instalamos el
driver.

Probamos a grabar un programa de prueba y nos fijamos si parpadean los leds TX y RX, si
lo hacen y no sale ningn error en el IDEArduino est todo
correcto.

Una vez terminada la instalacin, abrimos Arduino IDE.

Nos saldr una ventana similar a esta, aqu es donde escribiremos el programa.

Una vez abierto el programa tenemos que saber qu hace cada botn que vemos en la
interfaz y como se mete el programa en la placa Arduino.

El botn 1 lo que har es comprobar si la sintaxis del programa es correcta.

El botn 2 sube el programa (si es correcto) a nuestra placa Arduino que debe estar
conectada al ordenador con un cable como este:
El USB tipo A al ordenador y el tipo B conectado a nuestra placa)

El botn 3 es til para cuando los programas empiezan a ser ms largos, lo que hace es
abrir una nueva hoja para seguir con el programa.

El botn 4 sirve para abrir ejemplos de programas con las diversas libreras.

El botn 5 sirve para guardar nuestro programa en el ordenador.

El botn 6 abre una ventana en la que se pueden ver/interactuar en aquellos programas


que establecen una comunicacin directa con el ordenador.

-Oye, espera un momento, mencionaste algo relacionado a las libreras?

- S, as es, Una cosa muy importante en Arduino son las libreras dicho de manera sencilla
son las que hacen que nuestra placa pueda realizar las diferentes acciones que queremos
que desarrolle de una forma ms sencilla, de esta forma reducimos mucho el cdigo.

En la pgina de Arduino viene esto sobre las libreras:

Las Libreras proveen funcionalidad extra a nuestro sketch, por ejemplo: al trabajar con
hardware o al manipular datos.

Arduino de por si trae unas libreras para realizar montajes, pero nosotros podemos agregar
nuevas libreras segn lo que queramos hacer.

-Muy bien, pero Ya nos pondremos a programar?

-Emmm, no, an no, antes necesitamos analizar algunos conceptos bsicos de


programacin y electrnica para poder realizar nuestras primeras prcticas.
GLOSARIO DE PROGRAMACIN.
Funciones.
Void. La palabra clave void se utiliza nicamente en las declaraciones de funcin. Se indica
que se espera que la funcin devuelva ninguna informacin a la funcin de la que se llama.

void setup(). Esta funcin de configuracin slo se ejecutar una vez, despus de cada
arranque o reinicio de la placa Arduino. Es la parte en la que nosotros diremos a la placa
cuales son los pines que debe utilizar y de que modo hacerlo y tambin para declarar las
variables.

void loop(). Despus de crear una configuracin (setup), que inicializa y establece los
valores iniciales, la funcin loop () hace precisamente lo que su nombre indica, un cicloo
bucle de forma consecutiva. Se usa para controlar activamente la placa Arduino.

pinmode(pin,modo);. pin es la ranura que vas a utilizar de tu placa arduino para tus
proyectos. Esta funcin sirve para configurar un pin como entrada (INPUT) o como salida
(OUTPUT). En esta funcin se coloca el pin en el cual est conectado a nuestro Arduino y
el modo en que estar configurado.

digitalRead(pin);. Lee un valor como puede ser el de un interruptor, lee valores ya sea
alto (HIGH) o bajo (LOW).

digitalWrite(pin,value);. Se selecciona el pin con el que se trabajar y se envia una seal


elctrica HIGH o LOW

analogRead ();. Lee el valor del pin analgico especificado. Esto significa que va a asignar
voltajes de entrada entre 0 y 5 voltios en valores enteros entre 0 y 1023.

analogWrite ();. Escribe un valor analgico ( onda PWM ). Se puede utilizar para encender
un LED en diferentes brillos o conducir un motor a diversas velocidades.

Serial.begin(rate). Abre un Puerto serie y especifica la velocidad de transmisin. La


velocidad tpica para comunicacin con el ordenador es de 9600 aunque se pueden soportar
otras velocidades.

Serial.read().Lee o captura un byte (un caracter) desde el puerto serie. Devuelve -1 si no


hay ningn carcter en el puerto serie.

Serial.available(). Devuelve el nmero de caracteres disponibles para leer desde el puerto


serie.

Serial.println(dato);. Por otro lado tenemos esta funcin que se encargar de mostrar
en nuestro monitor un valor o dato. Se coloca dentro de los parentesis la variable o lo que
queramos que nos muestre en el monitor entre comillas .
Tipos de datos.
Un dato es la expresin general que describe los objetos con los cuales opera una
computadora. Contiene informacin que se utiliza para resolver un problema. Un dato es
un conjunto de bits.

Byte. Un byte almacena un nmero sin signo de 8 bits, de 0 a 255.

Int. Los enteros son el tipo de datos primarios para el almacenamiento de nmero.En la
Arduino Uno un int almacena una de 16 bits (2 bytes) valor. Esto produce una gama de -
32.768 a 32.767

Short. En la Arduino Uno un int almacena una de 16 bits (2 bytes) valor. Esto produce una
gama de -32.768 a 32.767

Long. Las variables Long se amplan las variables de tamao para el almacenamiento de
nmeros, y almacenar 32 bits (4 bytes), entre -2.147.483.648 y 2.147.483.647.

Double. Nmero de punto flotante de doble precisin. En las placas basadas en Uno y otro
ATMEGA, este ocupa 4 bytes. Es decir, el doble aplicacin es exactamente el mismo que
el flotador, sin ganancia en precisin.

Float. Tipo de datos de nmeros que tienen un punto decimal. Nmeros de coma flotante
se utiliza a menudo para aproximar los valores analgicos y continuos porque tienen mayor
resolucin que los enteros. Flotadores tienen slo 6-7 dgitos decimales de precisin.

Char. Un tipo de datos que ocupa 1 byte de memoria que almacena un valor de carcter.
Los literales de caracteres se escriben entre comillas simples, como esta: 'A'.

Variable. Una variable es un elemento importante en cualquier lenguaje de programacion


ya que nos sirven para almacenar valores para posteriormente utilizarlos, debe ser
declarada y opcionalmente asignada a un determinado valor. En la declaracin de la
variable se indica el tipo de datos que almacenar (int, float, long). Las variables pueden
llevar cualquier nombre, siempre y cuando no sean las palabras que nuestro lenguaje tiene
reservadas (int, float, long, for, while, case, etc.)

Funcin: Una funcin es un bloque de cdigo identificado por un nombre y que es


ejecutado cuando la funcin es llamada. La declaracin de una funcin incluye en primer
lugar el tipo de datos que devuelve la funcin (e.j. int si lo que devuelve es un valor entero).
Despus del tipo de datos se especifica el nombre de la funcin.
Estructuras de control.
If. Se utiliza en conjuncin con un operador de comparacin, comprueba si se ha alcanzado
una determinada condicin, tal como una entrada que se est por encima de un cierto
nmero. El formato de un caso de prueba es:

if (AgunaVariable> 50)

/ / Hacer algo aqu

else

// Hacer otra cosa

Si AlgunaVariable es mayor a 50, se realizarn las acciones determinadas en los primeros


corchetes, de lo contrario, se realizarn las acciones que estn dentro del else. A
conticuacin algunos operadores de comparacin:

x == y (x es igual a y)
x! = y (x no es igual a y)

x <y (x es menor que y)


x> y (x es mayor que y)

x <= y (x es menos de o igual a y)


x> = y (x es mayor que o igual a y)

While. Los bucles se repetir de forma continua e infinitamente, hasta que la expresin
dentro de los parntesis, () se convierte en falsa. Algo tiene que cambiar la variable de
prueba, o el tiempo de bucle nunca terminar. Ejemplo:

variable = 0 ;
While ( variable < 200 ) {
/ / hacer algo repetitivo 200 veces
variable + +;
}
Do While. El bucle Do While funciona igual que el blucle While,con la exepcin de que
primero se realiza la accin y al final se evalua la condicin.

x=0;
do
{
// hacer algo
x ++;

} while (x < 100);

for. Se usa para repetir un bloque de sentencias encerradas entre llaves. Un contador de
incrementos se utiliza generalmente para incrementar y terminar el bucle. Hay tres partes
en el de cabecera del bucle:

for ( inicializacin ; condicin ; incremento ) {

/ / Declaracin (es);

La inicializacin sucede primero y exactamente una vez. En cada paso por el bucle, la
condicin se prueba; si es verdad, el bloque de instrucciones y el incremento se ejecuta,
entonces la condicin se prueba de nuevo. Cuando la condicin se convierte en falsa, el
bucle termina.
Swhitch. La sentencia switch es utilizada para realiazar varias lineas de cdigo segn sea
el nmero de caso correspondiente.Evala una condicin y ejecuta el cdigo segn
corresponda. Ejemplo:

switch (variable) {
case 1:
/ / Hacer algo cuando variable es igual a 1
break; // Termina con el cdigo del caso
case 2:
/ / Hacer algo cuando variable es igual a 2
break;
defautl:
/ / Si nada coincide con variable, haga lo predeterminado
/ / Por defecto es opcional
}

Fuente: http://arduino.cc/en/Reference/HomePage
GLOSARIO DE ELECTRNICA.
Circuito elctrico: Un circuito elctrico es un arreglo que permite el flujo completo de
corriente elctrica bajo la influencia de un voltaje. Un circuito elctrico tpicamente est
compuesto por conductores y cables conectados a ciertos elementos de circuito como
aparatos (que aprovechan el flujo) y resistencias (que lo regulan).

Corriente: Se le llama asi al nmero de interacciones de electrones que ocurren dentro de un


circuito al mismo tiempo y se miden en Amperes. Un Ampere equivale a 6.25 x 1018 electrones
movindose por una corriente por segundo, a lo que se le llama colombio.

Voltaje: Se le llama asi a la cantidad de carga entre los lados de un circuito y se mide en
Volts, que en otras palabras es la cantidad de carga elctrica necesaria para que 1 colombio
haga una cantidad de trabajo especfica.

Resistencia elctrica: Es toda oposicin que encuentra la corriente a su paso por un


circuito elctrico cerrado, atenuando o frenando el libre flujo de circulacin de las cargas
elctricas o electrones.
Circuito en serie: Cuando tenemos slo un circuito a travs del cual los electrones
pueden viajar para llegar al otro lado, tenemos un circuito en serie.

Circuito en paralelo: Si ponemos otro circuito junto al primero, tendremos dos circuitos
entre las cargas, llamando a esto un circuito paralelo porque corren paralelamente el uno
del otro, compartiendo el mismo voltaje pero permitiendo ms caminos para el recorrido de
la electricidad.

Ctodo: Es el electrodo que emite electrones (Polo negativo)

nodo: Es el electrodo que recibe electrones (Polo positivo)

Sensor: Un sensor o captador, como prefiera llamrsele, no es ms que un dispositivo


diseado para recibir informacin de una magnitud del exterior y transformarla en otra
magnitud, normalmente elctrica, que seamos capaces de cuantificar y manipular.

Potenciometro: Un potencimetro es una Resistencia Variable. As de sencillo. Los


potencimetros limitan el paso de la corriente elctrica (Intensidad) provocando una cada
de tensin en ellos al igual que en una resistencia, pero en este caso el valor de la corriente
y la tensin en el potencimetro las podemos variar solo con cambiar el valor de su
resistencia.

LED: Es un componente electrnico cuya funcin principal es convertir


la energa elctrica en una fuente luminosa, la palabra led proviene del
acrnimo ingles Light Emmiting Diode o diodo emisor de luz.
Botn: Es un dispositivo utilizado para realizar cierta funcin. Los botones son por lo
general activados, al ser pulsados con un dedo. Permiten el flujo de corriente mientras son
accionados. Cuando ya no se presiona sobre l vuelve a su posicin de reposo.

Servomotor: Los servos son un tipo especial de motor de


corriente directa que se caracterizan por su capacidad para
posicionarse de forma inmediata en cualquier posicin dentro de
su intervalo de operacin. Para ello, el servomotor espera un tren
de pulsos que se corresponde con el movimiento a realizar.
Estructura bsica de un programa.
La estructura bsica de programacin de Arduino es bastante simple y divide la ejecucin
en dos partes: setup y loop. Setup() constituye la preparacin del programa y loop() es la
ejecucin. En la funcin Setup() se incluye la declaracin de variables y se trata de la
primera funcin que se ejecuta en el programa. Esta funcin se ejecuta una nica vez y es
empleada para configurar el pinMode (p. ej. si un determinado pin digital es de entrada o
salida) e inicializar la comunicacin serie. La funcin loop() incluye el cdigo a ser ejecutado
continuamente (leyendo las entradas de la placa, salidas, etc.).

void setup() {

pinMode(pin, OUTPUT); // Establece 'pin' como salida

void loop() {

digitalWrite(pin, HIGH); // Activa 'pin'

delay(1000); // Pausa un segundo

digitalWrite(pin, LOW); // Desactiva 'pin'

delay(1000);

Como se observa en este bloque de cdigo cada instruccin acaba con ; y los comentarios
se indican con //. Al igual que en C se pueden introducir bloques de comentarios con /* ...
*/.
Prctica 1
Botones.

Sabes para qu nos sirve un botn? Pues bien, un boton es un dispositivo que permite o
impide el flujo de corriente elctrica y que podemos utilizar de diferentes maneras. En esta
practica utilizaremos un boton como nuestro sensor para controlar el estado de nuestro
LED.

Material requerido:

1 trajeta arduino 1 botn 1 protoboard

1 LED 2 resistencias elctricas (1 K y 330 Ohms)

Colocamos nuestro LED en la protoboard, los LED tiene polaridad, lo que significa que el
flujo de la corriente es en una sola direccin, la patita ms corta es la negativa, llamado
ctodo, esta tiene que ir conectado a la tierra o negativo del circuito, mientras que la patita
ms larga es el nodo y tiene que ir conectada al positivo para bien de que nuestro LED
encienda.

La patita negativa del LED la conectamos a la resistencia de 330 Ohms y la otra patita de
la resistencia al negativo. Y la patita ms larga va conectada a cualquiera de los pines
digitales de nuestro Arduino.

Posteriormente conectamos el botn por un lado al positivo, luego a la resistencia de


1KOhom y finalmente al negativo. De entre nuestro botn y la resistencia sacamos una
conexin hacia cualquiera de los pines digitales de nuestro Arduino.

Obtenemos la alimentacin de 5v de nuestro Arduino, as como la tierra (GND). La conexin


de los dispositivos debe quedar ms o menos de la siguiente manera:
Ahora abrimos nuestra plataforma de Arduino para empezar a escribir nuestro cdigo. Lo
primero que tenemos que realizar es declarar nuestras variables para el LED y para el botn
y el pin donde estn conectados.

En este caso las llamaremos igual, led y botn.


En este caso agregaremos una variable extra
llamada estado que nos servir ms adelante
para almacenar valores.

Luego, en la seccin de void setup(),


tenemos que el LED sigue siendo
una salida, pero nuestro botn es
una entrada, por lo que tenemos que
declararla como tal con la funcin
pinMode.

Ahora, para poder utilizar nuestro botn tenemos que utilizar una nueva funcin llamada
digitalRead, que sirve para verificar el estado de nuestra entrada. Este valor obtenido lo
vamos a almacenar en la variable estado, Y cmo lo vamos a hacer? Simple, solo tenemos
que igualar estado a la lectura de digitalRead.

Despus, con una condicional IF, vamos a


preguntarle a nuestro Arduino si el valor
almacenado en estado es igual a HIGH (alto), si
es as, entonces vamos a decirle que encienda
nuestro LED con la funcin digitalWrite.

Ojo, debemos de cuidar bien el signo de doble igual, de lo contrario, si solo ponemos un
signo igual, estaremos asignando el valor de HIGH a nuestra variable en vez de compararlo.

ste fragmento de cdigo se traduce como si la


variable estado est en Alto, enciende el led. Pero,
qu pasa si no est en Alto? Pues bien tenemos que
completar el cdigo con un sino, cmo lo hacemos?
Con la instruccin else. Dentro de sta instruccin
vamos a colocar lo que queremos que pase si no se
cumple la condicin que declaramos dentro de nuestro
IF, que en ste caso sea apagar el LED, utilizando la funcin digitalWrite.

Es momento de probar que tan bien funciona nuestro circuito. Si has realizado todo
correctamente, el LED tiene que encender cada vez que presionas el botn. Como podrs
observar, el LED enciende mientras tenga el botn presionado y al soltarlo se apaga. Pero,
No es algo tedioso tener que estar oprimiendo el botn para que no se apague? Pues
bien, vamos a arreglar eso con el cdigo.
Para hacer que nuestro LED quede encendido necesitamos otra variable que recuerde que
ya presionamos el botn. Vamos a llamar a esta nueva variable salida, de igual forma la
declaramos al inicio de nuestro programa.

Ahora vamos a modificar la parte del void loop(). Despus de preguntar por la variable
estado, vamos a hacer una operacin con nuestra variable salida, vamos a igualarla a 1
menos estado.

Esta operacin puede que aritmticamente no tenga mucha lgica, pero en programacin
si la tiene.

Despus de esto vamos a preguntar si nuestra variable salida es igual a 1, si lo es vamos


a encender nuestro LED, sino lo vamos a apagar. El cdigo debe quedar algo as:

Puedes definir qu es lo que pasa? Por qu crees que pasa eso?

Lo que pasa es que nuestro Arduino realiza todo lo que est dentro de la parte del void
loop() muchas veces y a gran velocidad. Por eso no podemos definir en qu parte del cdigo
se qued cuando soltamos el botn, por eso en ocasiones funciona y en otras no. Vamos a
arreglar eso mejorando nuestro cdigo, pero Cmo le podemos hacer?

Vamos a hacer necesitar una variable ms, que en este caso llamaremos estadoAnterior y
vamos a hacer un pequeo arreglo al momento de preguntar por nuestra variable estado.
Ahora nuestro cdigo debe quedar algo as:
Vamos a probarlo nuevamente. Ahora qu pasa?

Bien, como podrs ver, ahora nuestro cdigo funciona mejor, pero por qu no funciona al
100%? Esto se debe a un efecto de nuestro botn llamado rebote, dentro de nuestro botn
hay plaquitas de metal unidas por un pequeo resorte, estas hacen contacto para permitir
el paso de la corriente, pero antes de unirse completamente rebotan un par de veces sin
que nos demos cuenta, pero nuestro Arduino si puede percibirlas.

Esto es ms fcil de arreglar, lo nico que tenemos que hacer es agregar un pequeo
retardo de tiempo para que nuestro Arduino tome una ligera pausa mientras las plaquitas
del botn se unan correctamente y una vez unidas, nuestro Arduino contine con el proceso.
Vamos a utilizar la funcin delay(), que sirve para dar un retraso en milisegundos. Nosotros
colocaremos un retraso de 50 milisegundos.

Listo! Nuestro circuito y programa funciona correctamente =D


Prctica 2.
Voltajes analgicos y PWM.

En esta prctica vamos a analizar la capacidad analgica que tiene nuestro Arduino, vamos
a aprender a medir voltajes no solo entre 0 y 5 volts, si no tambin valores intermedios.
Tambin vamos a aprender a generar salidas analgicas. En esta prctica vamos a
controlar la intensidad o brillo de un LED.

Material requerido:

1 trajeta Arduino 1 Potencimetro de 10KOhms 1 protoboard

1 LED 1 resistencia elctrica de 330 Ohms

Bien, como ya se explic anteriormente, las salidas y entradas analgicas son aquellas en
las que podemos manejar valores intermedios entre 0 y 5 voltios. El potencimetro es una
de los aparatos ms bsicos utilizados para medir voltajes ya que es un dispositivo que
vara su resistencia con solo mover la perilla.

Vamos a comenzar creando salidas analgicas, para eso realizamos la siguiente conexin:

La patita ms corta del LED se


conecta a la resistencia de 330
Ohms y est a su vez es conectada
al negativo de la protoborad, que
ser conectada al GND del Arduino.

La patita ms larga es conectada al


pin 3 de nuestro Arduino (o a
cualquiera que tenga un smbolo al
lado del nmero, ya que estos pines
son los que se pueden trabajar
PWM).

Ahora vamos a la parte del cdigo, lo primero que tenemos que hacer es una constante de
tipo entera llamada led y vamos a indicar en qu pin est conectado (4), tambin vamos a
utilizar una variable llamada brillo para controlar la intensidad del brillo de nuestro LED.
Luego en la parte del void setup() vamos a declarar nuestro led como salida

Esta es la misma configuracin que hemos estado haciendo en las prcticas pasadas.

Vamos a manejar una nueva funcin llamada analgWrite(), la cual recibe valores de 0 a
255, donde 0 es igual a 0 volts y 255 son 5 volts, de esta manera podemos jugar con los
valores y la intensidad de brillo de nuestro LED.
Pero, para hacer esto ms elegante, vamos a utilizar un ciclo para hacer que nuestro LED
vaya aumentando desde apagado hasta su mximo esplendor y luego que se vuelva a
apagar de forma automtica.

Vamos a hacer un ciclo for que haga que nuestra variable brillo vaya desde 0 hasta 255 y
luego otro que vaya de 255 hasta 0. Recuerda las 3 partes que conforman nuestro ciclo for
(Inicializacin, condicin, incremento-decremento). El cdigo tiene que quedar as:

Qu sucede? Por qu?

Muy bien, es hora de jugar con el potencimetro, para eso debemos de realizar la siguiente
conexin:

El LED queda igual, solo


agregamos el potencimetro de la
forma en que se muestra en el
dibujo,

Como puedes ver, nuestro


potencimetro tiene tres pines, el
pin de del extremo izquierdo va a
tierra, el derecho va a voltaje
(tomado de los 5 voltios del
Arduino) y el pin central va a ir
conectada al pin A0

Ya no vamos a necesitar la parte que est en el void loop(), as que pueden borrarla xD

Tranquilos, ser ms divertido usar el potencimetro


Para poder utilizar nuestro potencimetro necesitamos declarar otra constante de tipo
entera llamada pot y vamos a indicar a que pin est conectado (0).

Probablemente piense que tambin tenemos que configurar nuestro potencimetro como
entrada, pero no es as. Los pines analgicos de nuestro Arduino ya vienen configurados
de forma automtica como entradas, as que ya no tenemos que hacer eso.

Para utilizar las salidas analgicas utilizamos la funcin analgWrite, pues bien, para leer las
entradas analgicas vamos a utilizar la funcin analogRead(), en medio del parntesis va
el pin que queremos leer o el nombre de la variable, en este caso pot. Pero, tenemos que
guardar este valor en algn lado, as que se lo vamos a asignar a ala variable brillo.

Pero, tenemos un pequeo problema, la funcin analogRead() trabaja con valores entre 0
y 1023 y la funcin analogWrite() trabaja con valores de 0 y 255. Cmo podemos
solucionar este problema?

Exactamente, tan sencillo como una divisin, de esta forma aproximamos los valores para
poder trabajar con ellos.

Finalmente, el cdigo quedara de la siguiente manera:

Ms corto verdad? Bueno, ya qued listo!


Prctica 3.
Teclado.

En las prcticas anteriores ya hemos utilizado botones, en esta prctica vamos a ver una
utilidad ms que podemos darle a un conjunto de botones, un teclado. Un teclado no es
ms que la unin de varios botones que forman una matriz.

Material requerido:

1 trajeta Arduino 1Teclado 1 protoboard Cable para conexiones

En las practicas pasadas, la conexin para utilizar un botn era tomar la corriente del
Arduino, luego conectar el botn, despus una resistencia de 10KOhms que iba a tierra y
finalmente un cable que sala entre el botn y la resistencia. Pero se imaginan hacer
esta conexin para un teclado de 16 botones? Simplemente nos quedaramos sin espacio
para ponerlos en nuestro Arduino.

Para solucionar esto, los teclados se conectan de en forma de matriz o maya donde se
manejan filas y columnas. Entonces cuando presionas un botn se hace una interseccin
entre una fila y una columna, dicho de otra manera, algo as como una coordenada que
nuestro Arduino puede leer e interpretar.

Por eso en lugar de tener 16 conexiones al Arduino slo tenemos 8, 4 filas y 4 columnas.

Explicado esto pasamos a realizar la conexin de nuestro teclado con nuestro Arduino.

Este teclado es de 3 columnas y 3 filas, pero el que tenemos en fsico es de 4x4. La


conexin se puede realizar directamente con un cable, no es necesaria la resistencia.
Para poder utilizar el teclado necesitamos descargar una librera. La podemos descargar
de la siguiente pgina:

Playground.arduino.cc/Code/keypad

Una vez en esta pgina bajamos hasta la seccin download y damos clic en el enlace de
descarga.

Descargamos y descomprimimos el archivo. La carpeta descomprimida la vamos a llevar a


la carpeta donde est instalado nuestro Arduino (Unidad C, archivos de programa, Arduino,
libreras).
Una vez colocada la carpeta dentro de las libreras de Arduino vamos a mandarla llamar
dentro de nuestro cdigo. Para eso tenemos que darle clic al botn de sketch, importar
librera y seleccionamos la librera Keypad.

Como yo s que ustedes son muy inteligentes y estn aprendiendo muy bien de lo que les
digo, voy a volver a poner el cdigo que deben tener y se explicara detalladamente en la
prctica.

La razn real del porque hago esto es que, en esta prctica, mucho de este cdigo es
necesario para que funcione nuestro teclado con la librera y tendra que meterme muy a
fondo en la explicacin de la funcin interna de la librera.
Este es el cdigo necesario para la configuracin de nuestra matriz numrica. Primero
mandamos llamar a la librera Keypad, posteriormente declaramos dos variables, una para
el nmero de filas y otra para el nmero de columnas, luego declaramos un vector para
poner los pines a donde estn conectadas cada fila y columna. Despus se crea una matriz
con los vectores filas y columnas y se pintan los datos que representan. Finalmente, la
funcin keypad configura todos estos datos introducidos.

Se declaran 2 variables, tecla para almacenar un carcter y numero para almacenar un


valor numrico.

Se inicia la comunicacin seria en la parte del void setup().

En el void loop(), a la variable tecla se le da su valor correspondiente mediante una funcin


de la librera. Se pregunta si tecla esta presionada, si es as se hace una operacin para
obtener el valor numrico real de la tecla. Se imprime el carcter seleccionado y el valor
numrico de la tecla.

Con eso podemos utilizar un teclado para cualquier proyecto que queramos =D
Prctica 4
Display 2x16

Esta prctica es de gran utilidad en la muchos proyectos. Vamos a utilizar un display 2x16.
Afortundamente existe mucha documentacin para este tipo de pantallas y nuestro arduino
ya trae un ejemplo en sus librerias.

Material requerido

1 tarjeta Arduino 1 Display 2x16 1 protoboard 1 Potencimetro de 10KOhm

Lo primero que tenemos que realizar es la conexin de del display con el Arduino. En la
pgina oficial de Arduino podemos encontrar un el diagrama principal, aunque tambin
podemos obtenerlo de diferentes pginas web.

La conexin debe quedar de la siguiente manera.

Una vez realizada la conexin vamos a abrir el programa de ejemplo que viene en el
Arduino. Vamos a abrir el archivo Hello World.
En la primera lnea del programa mandamos llamar la librera especial para el uso del
display.

Despus de eso, se crea un objeto llama lcd, que sera algo as como nuestra variable
donde vamos a colocar los pines en los que est conectada la pantalla con el Arduino.
Posteriormente, en el setup(), vamos a inicializar nuestro objeto lcd con la funcin
lcd.begin(), en la cual vamos a poner las dimensiones de nuestra pantalla, en este caso es
una de 2x16.

Lo primero que vamos a hacer que nos imprima ser Hello World, es lo que aparecer en
la cabecera o primera lnea de cdigo.

Luego, en el loop(), vamos a poner el cursor en la segunda lnea, para dejar la primer lnea
intacta.

En la segunda lnea vamos a utilizar la funcin milis(), la cual nos da el tiempo transcurrido
desde que se encendi el microcontrolador, este tiempo nos lo da en milisegundos, para
hacerlo ms prctico hacemos una divisin entre 1000 y obtenemos el tiempo en segundos.

De esta manera terminamos la primer prctica, ahora les toca modificar el cdigo para que
impriman lo que necesiten, ya sea la lectura de un sensor o cualquier cosa que necesiten.
Prctica 5
Sensor ultrasnico.

En esta prctica vamos a trabajar con un nuevo sensor, el sensor ultrasnico. ste sensor
nos sirve para medir distancias o para detectar obstculos. Vamos ver que es muy sencillo
utilizarlo y programarlo. Vamos a realizar un sensor similar a los que tienes los autos nuevos
que detectan a qu distancia estn de otros.

Material requerido:

1 trajeta Arduino 1 sensor ultrasnico 1 protoboard

1 LED 1 resistencias de 330 Ohms 1 buzzer o zumbador

Hay distintos tipos de sensores ultrasnicos, unos con 3 o 4 pines, de distintos fabricantes,
pero a fin de cuentas todos funcionan con el mismo principio, que es el que utilizan los
murcilagos. Nuestro sensor emite un sonido ultrasnico (imperceptible para nosotros) que
viaja por el aire como ondas y cuando choca con un objeto regresa al mismo por el otro
cilindro. Lo que hace nuestro sensor es medir el tiempo que tarda la onda en volver para
determinar la distancia a la que est un objeto.

Lo primero que tenemos que realizar es la siguiente conexin elctrica:

As es ms o menos
como debemos tener la
conexin en caso de
que tengamos un
sensor con 3 pines.

Si nuestro sensor tiene


4 pines solo tenemos
que conectar el otro a
cualquier pin de
nuestro Arduino. Pero
tenemos que saber
cul es el pin TRIG y
ECO del sensor.

Para esta prctica trabajaremos con un sensor de 3 pines. Lo primero que tenemos que
hacer es descargar una pequea librera que nos facilitar mucho la programacin de
nuestro sensor. La librera la podemos descargar de la siguiente pgina:

playground.arduino.cc/code/ping
Una vez en esa pgina nos vamos a la seccin de descargas (download) y escogemos el
archivo que dice ping-2_o.zip. Descargamos y descomprimimos ese archivo.

Una vez que tengamos esa carpeta la vamos a mover a la carpeta de libreras de Arduino.

Listo, es todo lo que debemos hacer para empezar a programar. Ahora, dentro de nuestro
programa, vamos a importar la nueva libreara, para eso tenemos que darle clic al botn de
sketch, importar librera y seleccionamos la librera Ping.
Lo siguiente a realizar es declarar una variable para cada actuador que tengamos, en este
caso ser una para el led, otro para el zumbador y otro para el sensor. Despus vamos a
declarar dos variables, un para determinar la distancia y otra llamada pausa para saber
cunto tiempo tiene que esperar el zumbador y el led para activarse.

Una vez hecho esto tenemos que activar una funcin de nuestra librera llamada ping, para
eso tenemos que escribirla de la siguiente manera:

En la ltima lnea de cdigo, la primera palabra representa la funcin que vamos a utilizar
y configurar, la segunda palabra es el nombre de la variable, ah podemos ponerle el
nombre que queramos, pero por cuestiones de comodidad ms adelante en nuestro cdigo
decid dejarla as. Despus del signo igual, la tercera palabra es para decirle a la funcin
en qu pin est conectado el sensor, y la cuarta palabra el pin donde est conectado, en
este caso pusimos el nombre de la variable.

Ahora en la parte del void setup() vamos a declarar nuestro led y zumbador como salidas.

En la parte del void loop(), lo primero que tenemos que hacer es encender nuestro sensor,
para esto vamos a poner el nombre que le asignamos, en este caso ping, seguido de un
punto y la palabra fire, despus abrimos parntesis [ping.fire()], con esta lnea de cdigo
nosotros estamos inicializando nuestro sensor ultrasnico.
Para obtener la distancia tenemos que usar una funcin ms de la librera, vamos a poner
el nombre de nuestro sensor (ping) seguido de un punto y la palabra centimeters, con esta
funcin estamos pidiendo la distancia leda en centmetros por nuestro sensor, pero
tenemos que guardarla en la variable distancia para poder utilizarla posteriormente.

Ahora si podemos utilizar la distancia. Lo siguiente que vamos a hacer es crear un rango
de medicin, lo vamos a hacer poniendo limites, por ejemplo, podemos hacer que nuestro
sensor detecte objetos a una distancia menor a 1m, 2m, 2.5m, etc. En este caso vamos a
poner el lmite de un metro.

Para eso preguntamos si la distancia es menor a 100 cm (recuerden que manejamos


centmetros). Si es as, vamos a calcular el tiempo de espera que deben tener nuestros
actuadores (led y zumbador) al momento de encender la alarma. El tiempo de espera lo
vamos a guardar en la variable pausa. Para determinarlo tomamos distancia y la
multiplicamos por 10. Por qu de esta manera? Porque la distancia mayor con la que
vamos a trabajar son 99cm, eso multiplicado por 10 es igual a 990 y eso en milisegundo es
casi equivalente a 1 segundo. Lo manejamos en milisegundos porque as lo trabaja nuestra
funcin delay.

De esta manera, conforme se vaya acercando el objeto la alarma se activar ms rpido.

Una vez determinado el tiempo de espera o la pausa, vamos a encender nuestro led y
nuestro zumbador y a activarle un delay igual a nuestra variable pausa. Todo esto va dentro
de la funcin if.

Por ltimo, vamos a apagar nuestra alarma para crear el efecto del parpadeo dndole el
mismo delay de pausa. Nuestro cdigo quedara algo as:

Listo! Ya podemos ponerle una alarma a nuestro auto =D


Prctica 6.
Servomotor.

Hey chavos, qu tal? Listos para la ltima prctica? En esta prctica vamos a utilizar uno
de los componentes ms importantes en nuestra carrera, los servomotores. Estos
componentes son los ms utilizados en el aeromodelismo y la robtica por su facilidad de
control y precisin.

Material requerido:

1 trajeta Arduino 1 potenciometro de 10KOhms 1 protoboard

1 Servomotor

Un servomotor est conformado por un motor de corriente directa que va conectado a una
caja de engranajes utilizada disminuir la velocidad y a su vez aumentar el torque o la fuerza
con la que giran. Dicho motor tambin va conectado a un controlador; utilizado para
controlar la posicin exacta a la que queremos que se mueva.

Los servomotores funcionan con seales PWM (Modulacin de ancho de pulso), por lo que
tiene que ir conectado a un pin digital que maneje este tipo de seales como lo vimos en la
prctica de seales analgicas y PWM. La conexin es muy sencilla, el cable rojo va a
voltaje, el negro a tierra y el amarillo al pin de nuestro Arduino.

Es muy importante que para el uso de servomotores nosotros utilicemos una fuente externa
a nuestro Arduino debido a que los motores consumen mucha corriente, entonces pueden
daar nuestro Arduino o en el peor de los casos a nuestra computadora si se est
alimentando por el puerto USB.
Para controlar el servomotor requerimos utilizar otra librera ms, pero esta ya viene incluida
en nuestro Arduino, lo nico que debemos hacer es mandarla llamar como lo hemos hecho
con la otras, damos clic a sketch, agregar librera y seleccionamos la librera de servo.

Con esta librera vamos a crear un objeto, es un tipo de dato especfico al momento de
utilizar las funciones de nuestra librera. Para eso escribimos la palabra Servo y luego el
nombre que le vamos a poner a nuestro objeto, por ejemplo, servo1.

Despus vamos a declarar la constante para nuestro potencimetro. Tambin vamos a


declarar una variable una para el valor ledo por el potencimetro.

En la parte del void setup() vamos a configurar nuestro servo con la funcin attach, que
viene siendo como encender nuestro servo y el pin a donde est conectado.

En la parte del void loop() vamos a leer el valor de nuestro potencimetro con la funcin
analog.Read y lo vamos a guardar en la variable valor.

Despus vamos a mapear o escalar ese valor utilizando la funcin map, en donde vamos a
poner la variable que vamos a mapear (valor), luego los rangos, en este caso de 0 al 1023,
que es el valor del potencimetro escalar a de 0 a 179, que son los grados que queremos
que gire nuestro servo.

Finalmente movemos el servo al ngulo que obtenemos al mapear, con la funcin write y
damos un pequeo delay de 15 milisegundos.

Listo, con eso podemos controlar nuestro servo para que gire a la posicin que queramos
con un potencimetro, pero qu pasa si queremos que nuestro motor gire de forma
automtica?

También podría gustarte