You are on page 1of 123

Angel HerBra.

Instituto Tcnico de Capacitacin y Productividad


-INTECAP-

Centro de Capacitacin Guatemala 1

Bachiller en Ciencias y Letras, y Tcnico en Electrnica Industrial

Arduino

Libro Azul

Elaborado por:
Angel De Jess Hernndez Bran.
Clave: 6, Grupo: 1612

Catedrtico asesor:
Jaime Batres

Guatemala, 2015

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

Angel HerBra.

ndice

Arduino ............................................................................................................................................... 8
Qu es Arduino? ........................................................................................................................ 8
Qu se puede hacer con Arduino?.......................................................................................... 8
Estructura de un sketch ................................................................................................................... 8
setup() ............................................................................................................................................ 9
loop()............................................................................................................................................... 9
Funciones ...................................................................................................................................... 9
Sintaxis ............................................................................................................................................. 11
{} Entre llaves .............................................................................................................................. 11
; Punto y coma ............................................................................................................................ 11
/* */ bloque de comentarios ................................................................................................... 12
// Lnea de comentarios ............................................................................................................. 12
#define:......................................................................................................................................... 13
#include: ....................................................................................................................................... 14
Declaracin de variables ........................................................................................................... 14
Utilizacin de una variable: ....................................................................................................... 15
Tipos de datos: ............................................................................................................................... 16
Byte:.............................................................................................................................................. 16
Int: ................................................................................................................................................. 16
Float: ............................................................................................................................................. 17
Void:.............................................................................................................................................. 17
Booleano: ..................................................................................................................................... 18
Long: ............................................................................................................................................. 18
Word: ............................................................................................................................................ 18
Unsigned long: ............................................................................................................................ 18
Arrays: .......................................................................................................................................... 19
Aritmtica: ........................................................................................................................................ 21
Asignaciones compuestas: ....................................................................................................... 21

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

Angel HerBra.
Operadores de comparacin: ................................................................................................... 22
Operadores de bits: ........................................................................................................................ 22
Operadores lgicos (booleanas): ............................................................................................. 22
Lgica AND: ................................................................................................................................ 22
Lgica OR: ................................................................................................................................... 23
Lgica NOT: ................................................................................................................................ 23
Constantes....................................................................................................................................... 23
Cierto/falso (true/false): ............................................................................................................. 23
high/low: ....................................................................................................................................... 24
input/output .................................................................................................................................. 24
Control de flujo (estructuras de control) ...................................................................................... 24
if (si condicional) ......................................................................................................................... 24
if else (si.. sino ..) ................................................................................................................ 25
Else: .............................................................................................................................................. 25
For:................................................................................................................................................ 26
Switch/case statements :........................................................................................................... 27
While:............................................................................................................................................ 28
do while: ................................................................................................................................... 28
Break: ........................................................................................................................................... 29
Continue:...................................................................................................................................... 29
Return:.......................................................................................................................................... 30
Goto: ............................................................................................................................................. 30
e/s digitales:..................................................................................................................................... 31
pinMode(pin, mode) : ................................................................................................................. 31
pinMode(pin, OUTPUT); ............................................................................................................ 31
digitalRead(pin): .......................................................................................................................... 32
digitalWrite(pin, value): .............................................................................................................. 32
e/s analgicas ................................................................................................................................. 34
analogRead(pin): ........................................................................................................................ 34
analogWrite(pin, value):............................................................................................................. 34
Control del tiempo .......................................................................................................................... 36
Debemos acercarnos los unos a los
otros para poder progresar juntos
-Nikola Tesla

Angel HerBra.
delay(ms): .................................................................................................................................... 36
millis(): .......................................................................................................................................... 36
Matemticas .................................................................................................................................... 37
min(x, y) ....................................................................................................................................... 37
max(x, y) ...................................................................................................................................... 37
constrain(x, a, b): ........................................................................................................................ 38
map(value, fromLow, fromHigh, toLow, toHigh): ................................................................... 38
Parmetros .............................................................................................................................. 39
Aleatorios: ........................................................................................................................................ 40
randomSeed(seed): ................................................................................................................... 40
random(max), random(min, max): ........................................................................................... 41
Comunicacin serie:....................................................................................................................... 42
Serial: ........................................................................................................................................... 42
Serial.begin(rate) ........................................................................................................................ 43
Serial.println(data): ..................................................................................................................... 43
Serial.print(data, data type) ....................................................................................................... 44
Parmetros .............................................................................................................................. 44
Serial.avaible() ............................................................................................................................ 45
Serial.Read(): .............................................................................................................................. 46
Practicas .......................................................................................................................................... 47
1# Encendido de led ................................................................................................................. 47
2# Parpadeo de led :................................................................................................................. 48
3# Encendido de LED con entrada digital ............................................................................. 49
4# Salida analgica .................................................................................................................... 50
5# Entradas analgicas ............................................................................................................ 53
6# Secuenciador de LEDs........................................................................................................ 55
7# Semforo ............................................................................................................................... 57
8# Comunicacin serial (usb, arduino). ................................................................................. 59
9# Sensor de temperatura ....................................................................................................... 62
10# Sensor ultrasnico ............................................................................................................. 64
11# Servo Motor (controlado) ................................................................................................... 67
Debemos acercarnos los unos a los
otros para poder progresar juntos
-Nikola Tesla

Angel HerBra.
12# Servo Motor controlado analgicamente ........................................................................ 70
13# DS 1307................................................................................................................................ 72
14# ADXL3xx (x,y,z.) ................................................................................................................. 75
15# Pantalla LCD ..................................................................................................................... 77
16# Pantalla LCD Blink .............................................................................................................. 79
17# LCD scroll............................................................................................................................. 81
18# Mdulo Bluetooth (configuracin) .................................................................................... 85
19# Encendido de LED con Bluetooth .................................................................................... 87
20# Sensor de color TCS230 ................................................................................................... 91
Vehculo seguidor de lnea ........................................................................................................... 96
Anexos ........................................................................................................................................... 111

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

Angel HerBra.

Introduccin

Conocer el funcionamiento de las cosas es algo que el hombre se ha


planteado desde el inicio de los tiempos; hoy en da nos enfrentamos
a una realidad donde abundan la automatizacin, la domtica, la
interaccin de las personas con las mquinas, la electrnica, la
mecnica y la programacin.
Casi cualquier proceso que nos podamos imaginar tiene un porcentaje
de dependencia de estas mquinas. Es una gua de referencia rpida
que siempre puede ser ampliada accediendo a la pgina oficial:
www.arduino.cc
El propsito del siguiente trabajo presentado es el de introducirse a la
placa Arduino, es una plataforma de electrnica abierta para la
creacin de prototipos basada en software y hardware flexibles y
fciles de usar, adaptndose a sus gustos o necesidades
dependiendo de la aplicacin que desea realizar.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

Angel HerBra.

Angel De Jess Hernndez


Bran.

Arduino
Libro Azul

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

Angel HerBra.

Arduino
Qu es Arduino?
Arduino es una tarjeta electrnica que integra bsicamente a un micro controlador
y un conjunto de pines de conexin de entradas y salidas que permiten, mediante
un determinado programa, interaccionar con el medio fsico mediante sensores y
actuadores electrnicos. De esta forma podrs crear tus propios proyectos
tecnolgicos, dotarlos de sensores que detecten magnitudes fsicas como luz,
calor, fuerza, etc... y en base a esa informacin, escribiendo un programa, activar
otros dispositivos (actuadores) como pequeas bombillas, LEDs, servomotores,
pequeos motores DC, rels, etc... Los sensores se conectan a los pines de
entrada y los actuadores a los de salida.

Qu se puede hacer con Arduino?


Realmente el lmite lo marca tu imaginacin pero por dar alguna pista, podras
disear un sistema para la apertura y cierre de la puerta de un garaje, hacer un
robot mvil que detecte objetos o que siga una lnea negra, crear un detector de
luz y oscuridad, implementar un termmetro, controlar un cilindro neumtico, etc...

Estructura de un sketch
La estructura bsica del lenguaje de programacin de Arduino es bastante simple
y se compone de al menos dos partes. Estas dos partes necesarias, o funciones,
encierran bloques que contienen declaraciones, estamentos o instrucciones.

En donde setup() es la parte encargada de recoger la configuracin y loop() es la


que contienen el programa que se ejecutar cclicamente (de ah el termino loop
bucle-). Ambas funciones son necesarias para que el programa trabaje.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

Angel HerBra.

La funcin de configuracin debe contener la declaracin de las variables. Es la


primera funcin a ejecutar en el programa, se ejecuta slo una vez, y se utiliza
para configurar o inicializar pinMode (modo de trabajo de las E/S), configuracin
de la comunicacin en serie y otras.
La funcin bucle (loop) siguiente contiene el cdigo que se ejecutara
continuamente (lectura de entradas, activacin de salidas, etc) Esta funcin es el
ncleo de todos los programas de Arduino y la que realiza la mayor parte del
trabajo.

setup()
La funcin setup() se invoca una sola vez cuando el programa empieza. Se utiliza
para inicializar los modos de trabajo de los pins, o el puerto serie. Debe ser
incluido en un programa aunque no haya declaracin que ejecutar. As mismo se
puede utilizar para establecer el estado inicial de las salidas de la placa.

loop()
Despus de llamar a setup(), la funcin loop() hace precisamente lo que sugiere
su nombre, se ejecuta de forma cclica, lo que posibilita que el programa este
respondiendo continuamente ante los eventos que se produzcan en la placa.

Funciones
Una funcin es un bloque de cdigo que tiene un nombre y un conjunto de
instrucciones que son ejecutadas cuando se llama a la funcin. Son funciones
setup() y loop() de las que ya se ha hablado. Las funciones de usuario pueden ser
Debemos acercarnos los unos a los
otros para poder progresar juntos
-Nikola Tesla

Angel HerBra.

escritas para realizar tareas repetitivas y para reducir el tamao de un programa.


Las funciones se declaran asociadas a un tipo de valor. Este valor ser el que
devolver la funcin, por ejemplo 'int' se utilizar cuando la funcin devuelva un
dato numrico de tipo entero. Si la funcin no devuelve ningn valor entonces se
colocar delante la palabra void, que significa funcin vaca. Despus de
declarar el tipo de dato que devuelve la funcin se debe escribir el nombre de la
funcin y entre parntesis se escribirn, si es necesario, los parmetros que se
deben pasar a la funcin para que se ejecute.

tipo nombreFuncin(parmetros)
{
instrucciones;
}
La funcin siguiente devuelve un nmero entero, delayVal() se utiliza para poner
un valor de retraso en un programa que lee una variable analgica de un
potencimetro conectado a una entrada de Arduino. Al principio se declara como
una variable local, v recoge el valor ledo del potencimetro que estar
comprendido entre 0 y 1023, luego se divide el valor por 4 para ajustarlo a un
margen comprendido entre 0 y 255, finalmente se devuelve el valor v y se
retornara al programa principal.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

10

Angel HerBra.

Sintaxis
{} Entre llaves
Las llaves sirven para definir el principio y el final de un bloque de instrucciones.
Se utilizan para los bloques de programacin setup(), loop(), if.., etc.

Una llave de apertura { siempre debe ir seguida de una llave de cierre }, si no


es as el compilador dar errores. El entorno de programacin de Arduino incluye
una herramienta de gran utilidad para comprobar el total de llaves. Slo tienes que
hacer click en el punto de insercin de una llave abierta e inmediatamente se
marca el correspondiente cierre de ese bloque (llave cerrada).

; Punto y coma
El punto y coma ; se utiliza para separar instrucciones en el lenguaje de
programacin de Arduino. Tambin se utiliza para separar elementos en una
instruccin de tipo bucle for.

Nota: Si olvidis poner fin a una lnea con un punto y coma se producir en un
error de compilacin. El texto de error puede ser obvio, y se referir a la falta de un
punto y coma, o puede que no. Si se produce un error raro y de difcil deteccin lo
primero que debemos hacer es comprobar que los puntos y comas estn
colocados al final de las instrucciones.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

11

Angel HerBra.

/* */ bloque de comentarios
Los bloques de comentarios, o comentarios multi-lnea son reas de texto
ignorados por el programa que se utilizan para las descripciones del cdigo o
comentarios que ayudan a comprender el programa. Comienzan con / * y terminan
con * / y pueden abarcar varias lneas.

Debido a que los comentarios son ignorados por el compilador y no ocupan


espacio en la memoria de Arduino pueden ser utilizados con generosidad.
Tambin pueden utilizarse para "comentar" bloques de cdigo con el propsito de
anotar informaciones para depuracin y hacerlo ms comprensible para
cualquiera.
Nota: Dentro de una misma lnea de un bloque de comentarios no se puede
escribir otra bloque de comentarios (usando /*..*/).

// Lnea de comentarios
Una lnea de comentario empieza con / / y terminan con la siguiente lnea de
cdigo. Al igual que los comentarios de bloque, los de lnea son ignoradas por el
programa y no ocupan espacio en la memoria.

Una lnea de comentario se utiliza a menudo despus de una instruccin, para


proporcionar ms informacin acerca de lo que hace esta o para recordarla ms
adelante.

'variableEntrada' es la variable en s. La primera lnea declara que ser de tipo


entero int. La segunda lnea fija a la variable el valor correspondiente a la entrada
analgica PIN2. Esto hace que el valor de PIN2 sea accesible en otras partes del
cdigo. Una vez que una variable ha sido asignada, o re-asignada, usted puede
Debemos acercarnos los unos a los
otros para poder progresar juntos
-Nikola Tesla

12

Angel HerBra.

probar su valor para ver si cumple ciertas condiciones, o puede utilizar


directamente su valor. Como ejemplo ilustrativo veamos tres operaciones tiles
con variables: el siguiente cdigo prueba si la variable entradaVariable es inferior
a 100, si es cierto se asigna el valor 100 a entradaVariable y, a continuacin,
establece un retardo (delay) utilizando como valor entradaVariable que ahora
ser como mnimo de valor 100:

Nota: Las variables deben tomar nombres descriptivos, para hacer el cdigo ms
legible. Los nombres de variables pueden ser contactoSensor o pulsador, para
ayudar al programador y a cualquier otra persona a leer el cdigo y entender lo
que representa la variable. Nombres de variables como var o valor, facilitan
muy poco que el cdigo sea inteligible.
Una variable puede ser cualquier nombre o palabra que no sea una palabra
reservada en el entorno de Arduino.

#define:
Es un componente C til que permite al programador para dar un nombre a un
valor constante antes de compilar el programa. Constantes definidas en arduino
no ocupan ningn espacio de memoria de programa en el chip. El compilador de
reemplazar las referencias a estas constantes con el valor definido en tiempo de
compilacin.
Esto puede tener algunos efectos secundarios no deseados sin embargo, si por
ejemplo, un nombre de la constante que haba sido #defined est incluido en algn
otro nombre constante o variable. En ese caso el texto se sustituye por el nmero
#defined (o texto).
En general, se prefiere la palabra clave const para las constantes que definen y se
debe utilizar en lugar de #define.
Ejemplo:

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

13

Angel HerBra.

#include:
Se utiliza para incluir bibliotecas fuera de su dibujo. Esto le da al acceso
programador para un gran grupo de bibliotecas estndar de C (grupos de
funciones pre-hechos), y tambin bibliotecas escrito especialmente para Arduino.
Tenga en cuenta que #include, similar a #define, no tiene terminador punto y
coma, y el compilador producir mensajes de error crpticos si agrega uno.
Ejemplo:

Declaracin de variables
Todas las variables tienen que declararse antes de que puedan ser utilizadas.
Para declarar una variable se comienza por definir su tipo como int (entero), long
(largo), float (coma flotante), etc,

Asignndoles siempre un nombre, y, opcionalmente, un valor inicial. Esto slo


debe hacerse una vez en un programa, pero el valor se puede cambiar en
cualquier momento usando aritmtica y reasignaciones diversas.
El siguiente ejemplo declara la variable entradaVariable como una variable de tipo
entero int, y asignndole un valor inicial igual a cero. Esto se llama una
asignacin.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

14

Angel HerBra.

Una variable puede ser declarada en una serie de lugares del programa y en
funcin del lugar en donde se lleve a cabo la definicin esto determinar en que
partes del programa se podr hacer uso de ella.

Utilizacin de una variable:


Una variable puede ser declarada al inicio del programa antes de la parte de
configuracin setup(), a nivel local dentro de las funciones, y, a veces, dentro de
un bloque, como para los bucles del tipo if.. for.., etc. En funcin del lugar de
declaracin de la variable as se determinara el mbito de aplicacin, o la
capacidad de ciertas partes de un programa para hacer uso de ella.
Una variable global es aquella que puede ser vista y utilizada por cualquier funcin
y estamento de un programa. Esta variable se declara al comienzo del programa,
antes de setup().
Una variable local es aquella que se define dentro de una funcin o como parte de
un bucle. Slo es visible y slo puede utilizarse dentro de la funcin en la que se
declar.
Por lo tanto, es posible tener dos o ms variables del mismo nombre en diferentes
partes del mismo programa que pueden contener valores diferentes. La garanta
de que slo una funcin tiene acceso a sus variables dentro del programa
simplifica y reduce el potencial de errores de programacin.
El siguiente ejemplo muestra cmo declarar a unos tipos diferentes de variables y
la visibilidad de cada variable:

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

15

Angel HerBra.

Tipos de datos:
Byte:
Byte almacena un valor numrico de 8 bits sin decimales. Tienen unrango entre 0
y 255.

Int:
Enteros son un tipo de datos primarios que almacenan valores numricos de 16
bits sin decimales comprendidos en el rango 32,767 a -32,768.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

16

Angel HerBra.

Nota: Las variables de tipo entero int pueden sobrepasar su valor mximo o
mnimo como consecuencia de una operacin. Por ejemplo, si x = 32767 y una
posterior declaracin agrega 1 a x, x = x + 1 entonces el valor se x pasar a ser 32.768. (algo as como que el valor da la vuelta).

Float:
El formato de dato del tipo punto flotante float se aplica a los nmeros con
decimales. Los nmeros de punto flotante tienen una mayor resolucin que los de
32 bits con un rango comprendido 3.4028235E +38 a +38-3.4028235E.

Nota: Los nmeros de punto flotante no son exactos, y pueden producir resultados
extraos en las comparaciones. Los clculos matemticos de punto flotante son
tambin mucho ms lentos que los del tipo de nmeros enteros, por lo que debe
evitarse su uso si es posible.
Void:
La palabra clave void se emplea slo en la declaracin de funciones. Se indica
que se espera que la funcin devuelva ninguna informacin a la funcin de la que
se llama.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

17

Angel HerBra.

Booleano:
Un booleano tiene uno de dos valores, verdadero o falso. (Cada variable booleana
ocupa un byte de memoria.)
Long:
Las variables largas (Long) se extienden variables de tamao para el
almacenamiento de nmero, y almacenar 32 bits (4 bytes), desde -2147483648 a
2147483647.
Si hacer matemticas con nmeros enteros, por lo menos uno de los nmeros
debe ser seguido por una L, lo que oblig a ser un largo.

http://www.arduino.cc/en/Reference/IntegerConstants
Word:
Una palabra (Word) almacena un nmero sin signo de 16 bits, de 0 a 65535. La
misma como un unsigned int.

Unsigned long:
Variables de largo sin signo (unsigned long) se amplan las variables de tamao
para el almacenamiento de nmero, y almacenar 32 bits (4 bytes). A diferencia de
los largos estndar largos sin signo no almacenar nmeros negativos, por lo que
su rango de 0 a 4294967295 (2 ^ 32-1).

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

18

Angel HerBra.

Arrays:
Un array es un conjunto de valores a los que se accede con un nmero ndice.
Cualquier valor puede ser recogido haciendo uso del nombre de la matriz y el
nmero del ndice. El primer valor de la matriz es el que est indicado con el ndice
0, es decir el primer valor del conjunto es el de la posicin 0. Un array tiene que
ser declarado y opcionalmente asignados valores a cada posicin antes de ser
utilizado.

int miArray[] = {valor0, valor1, valor2...} del mismo modo es posible declarar una
matriz indicando el tipo de datos y el tamao y posteriormente, asignar valores a
una posicin especifica:

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

19

Angel HerBra.

Para leer de un array basta con escribir el nombre y la posicin a leer:

Las matrices se utilizan a menudo para estamentos de tipo bucle, en los que la
variable de incremento del contador del bucle se utiliza como ndice o puntero del
array. El siguiente ejemplo usa una matriz para el parpadeo de un LED.
Utilizando un bucle tipo for, el contador comienza en cero 0 y escribe el valor que
figura en la posicin de ndice 0 en la serie que hemos escrito dentro del array
parpadeo[], en este caso 180, que se enva a la salida analgica tipo PWM
configurada en el PIN10, se hace una pausa de 200 ms y a continuacin se pasa
al siguiente valor que asigna el ndice i.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

20

Angel HerBra.

Aritmtica:
Los operadores aritmticos que se incluyen en el entorno de programacin son
suma, resta, multiplicacin y divisin. Estos devuelven la suma, diferencia,
producto, o cociente (respectivamente) de dos operan dos.

La operacin se efecta teniendo en cuenta el tipo de datos que hemos definido


para los operandos (int, dbl, float, etc..), por lo que, por ejemplo, si definimos 9 y 4
como enteros int, 9 / 4 devuelve de resultado 2 en lugar de 2,25 ya que el 9 y 4
se valores de tipo entero int (enteros) y no se reconocen los decimales con este
tipo de datos.

Esto tambin significa que la operacin puede sufrir un desbordamiento si el


resultado es ms grande que lo que puede ser almacenada en el tipo de datos.
Recordemos el alcance de los tipos de datos numricos que ya hemos explicado
anteriormente. Si los operandos son de diferentes tipos, para el clculo se utilizar
el tipo ms grande de los operandos en juego. Por ejemplo, si uno de los nmeros
(operandos) es del tipo float y otra de tipo integer, para el clculo se utilizar el
mtodo de float es decir el mtodo de coma flotante.
Elija el tamao de las variables de tal manera que sea lo suficientemente grande
como para que los resultados sean lo precisos que usted desea. Para las
operaciones que requieran decimales utilice variables tipo float, pero sea
consciente de que las operaciones con este tipo de variables son ms lentas a la
hora de realizarse el cmputo.
Nota: Utilice el operador (int) para convertir un tipo de variable a otro sobre la
marcha. Por ejemplo, i = (int) 3,6 establecer i igual a 3.

Asignaciones compuestas:
Las asignaciones compuestas combinan una operacin aritmtica con una
variable asignada. Estas son comnmente utilizadas en los bucles tal como se
describe ms adelante. Estas asignaciones compuestas pueden ser:

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

21

Angel HerBra.

Nota: Por ejemplo, x * = 3 hace que x se convierta en el triple del antiguo valor x y
por lo tanto x es reasignada al nuevo valor.

Operadores de comparacin:
Las comparaciones de una variable o constante con otra se utilizan con frecuencia
en las estructuras condicionales del tipo if.. Para testear si una condicin es
verdadera. En los ejemplos que siguen en las prximas pginas se ver su
utilizacin prctica usando los siguientes tipo de condicionales:

Operadores de bits:
Operadores lgicos (booleanas):
Los operadores lgicos son usualmente una forma de comparar dos expresiones y
devolver un VERDADERO o FALSO dependiendo del operador. Existen tres
operadores lgicos, AND (&&), OR (||) y NOT (!), que a menudo se utilizan en
estamentos de tipo if:
Lgica AND:

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

22

Angel HerBra.

Lgica OR:

Lgica NOT:

Constantes
El lenguaje de programacin de Arduino tiene unos valores predeterminados, que
son llamados constantes. Se utilizan para hacer los programas ms fciles de leer.
Las constantes se clasifican en grupos.
Cierto/falso (true/false):
Estas son constantes booleanas que definen los niveles HIGH (alto) y LOW (bajo)
cuando estos se refieren al estado de las salidas digitales. FALSE se asocia con 0
(cero), mientras que TRUE se asocia con 1, pero TRUE tambin puede ser
cualquier otra cosa excepto cero. Por lo tanto, en sentido booleano, -1, 2 y -200
son todos tambin se definen como TRUE. (esto es importante tenerlo en cuanta).
Debemos acercarnos los unos a los
otros para poder progresar juntos
-Nikola Tesla

23

Angel HerBra.

high/low:
Estas constantes definen los niveles de salida altos o bajos y se utilizan para la
lectura o la escritura digital para las patillas. ALTO se define como en la lgica de
nivel 1, ON, 5 voltios, mientras que BAJO es lgica nivel 0, OFF, o 0 voltios.

input/output
Estas constantes son utilizadas para definir, al comienzo del programa, el modo de
funcionamiento de los pines mediante la instruccin pinMode de tal manera que el
pin puede ser una entrada INPUT o una salida OUTPUT.

Control de flujo (estructuras de control)


if (si condicional)
if es un estamento que se utiliza para probar si una determinada condicin se ha
alcanzado, como por ejemplo averiguar si un valor analgico est por encima de
un cierto nmero, y ejecutar una serie de declaraciones (operaciones) que se
escriben dentro de llaves, si es verdad. Si es falso (la condicin no se cumple) el

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

24

Angel HerBra.

programa salta y no ejecuta las operaciones que estn dentro de las llaves, El
formato para if es el siguiente:

En el ejemplo anterior se compara una variable con un valor, el cual puede ser una
variable o constante. Si la comparacin, o la condicin entre parntesis se cumple
(es cierta), las declaraciones dentro de los corchetes se ejecutan. Si no es as, el
programa salta sobre ellas y sigue.
Nota: Tenga en cuenta el uso especial del smbolo '=', poner dentro de if (x = 10),
podra parecer que es valido pero sin embargo no lo es ya que esa expresin
asigna el valor 10 a la variable x, por eso dentro de la estructura if se utilizara
X==10 que en este caso lo que hace el programa es comprobar si el valor de x es
10.. Ambas cosas son distintas por lo tanto dentro de las estructuras if, cuando se
pregunte por un valor se debe poner el signo doble de igual ==.

if else (si.. sino ..)


if else viene a ser un estructura que se ejecuta en respuesta a la idea si esto no
se cumple haz esto otro. Por ejemplo, si se desea probar una entrada digital, y
hacer una cosa si la entrada fue alto o hacer otra cosa si la entrada es baja, usted
escribira que de esta manera:

Else:
Puede ir precedido de otra condicin de manera que se pueden establecer varias
estructuras condicionales de tipo unas dentro de las otras (anidamiento) de forma
que sean mutuamente excluyentes pudindose ejecutar a la vez. Es incluso
posible tener un nmero ilimitado de estos condicionales. Recuerde sin embargo

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

25

Angel HerBra.

qu slo un conjunto de declaraciones se llevar a cabo dependiendo de la


condicin probada:

Nota: Un estamento de tipo if prueba simplemente si la condicin dentro del


parntesis es verdadera o falsa. Esta declaracin puede ser cualquier declaracin
vlida. En el anterior ejemplo, si cambiamos y ponemos (inputPin == HIGH). En
este caso, el estamento if slo chequeara si la entrada especificado esta en nivel
alto (HIGH), o +5v.

For:
La declaracin for se usa para repetir un bloque de sentencias encerradas entre
llaves un nmero determinado de veces. Cada vez que se ejecutan las
instrucciones del bucle se vuelve a testear la condicin. La declaracin for tiene
tres partes separadas por (;), vemos el ejemplo de su sintaxis:

La inicializacin de una variable local se produce una sola vez y la condicin se


testea cada vez que se termina la ejecucin de las instrucciones dentro del bucle.
Si la condicin sigue cumplindose, las instrucciones del bucle se vuelven a
ejecutar. Cuando la condicin no se cumple, el bucle termina.
El siguiente ejemplo inicia el entero i en el 0, y la condicin es probar que el valor
es inferior a 20 y si es cierta i se incrementa en 1 y se vuelven a ejecutar las
instrucciones que hay dentro de las llaves:
Debemos acercarnos los unos a los
otros para poder progresar juntos
-Nikola Tesla

26

Angel HerBra.

Nota: El bucle en el lenguaje C es mucho ms flexible que otros bucles


encontrados en algunos otros lenguajes de programacin, incluyendo BASIC.
Cualquiera de los tres elementos de cabecera puede omitirse, aunque el punto y
coma es obligatorio. Tambin las declaraciones de inicializacin, condicin y
expresin puede ser cualquier estamento vlido en lenguaje C sin relacin con las
variables declaradas. Estos tipos de estados son raros pero permiten disponer
soluciones a algunos problemas de programacin raras.

Switch/case statements :
Como si las declaraciones, switch...case controla el flujo de programas
permitiendo a los programadores especificar diferente cdigo que debe ejecutarse
en diversas condiciones. En particular, una sentencia switch compara el valor de
una variable a los valores especificados en las declaraciones de casos. Cuando se
encuentra una sentencia case cuyo valor coincide con el de la variable, se ejecuta
el cdigo en esa declaracin de caso.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

27

Angel HerBra.

While:
Un bucle del tipo while es un bucle de ejecucin continua mientras se cumpla la
expresin colocada entre parntesis en la cabecera del bucle. La variable de
prueba tendr que cambiar para salir del bucle.
La situacin podr cambiar a expensas de una expresin dentro el cdigo del
bucle o tambin por el cambio de un valor en una entrada de un sensor.

El siguiente ejemplo testea si la variable "unaVariable es inferior a 200 y, si es


verdad, ejecuta las declaraciones dentro de los corchetes y continuar ejecutando
el bucle hasta que 'unaVariable' no sea inferior a 200.

do while:
El bucle do while funciona de la misma manera que el bucle while, con la salvedad
de que la condicin se prueba al final del bucle, por lo que el bucle siempre se
ejecutar al menos una vez.

El siguiente ejemplo asigna el valor ledo leeSensor() a la variable 'x', espera 50


milisegundos, y luego continua mientras que el valor de la 'x' sea inferior a 100:

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

28

Angel HerBra.

Break:
Se utiliza para salir de un do, para, o while, sin pasar por el estado normal de
bucle. Tambin se usa para salir de la sentencia switch.

Continue:
La sentencia continue salta el resto de la iteracin actual de un bucle (do, for, or
while). Se contina por el control de la expresin condicional del bucle, y de
continuar con cualquier iteracin posterior.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

29

Angel HerBra.

Return:
Terminar una funcin y devolver un valor desde una funcin a la funcin que
llama, si se desea.

Goto:
El flujo del programa Transferencias a un punto marcado en el programa

Nota: El uso de Goto se desaconseja en la programacin C, y algunos autores de


libros de programacin C afirman que la sentencia goto nunca es necesario, sino
que se utiliza con criterio, se puede simplificar ciertos programas. La razn de que
muchos programadores desaprueban el uso de Goto es que con el uso
incontrolado de sentencias goto, es fcil crear un programa con el flujo del
programa no definido, que nunca puede ser depurado.
Debemos acercarnos los unos a los
otros para poder progresar juntos
-Nikola Tesla

30

Angel HerBra.

e/s digitales:
pinMode(pin, mode) :
Esta instruccin es utilizada en la parte de configuracin setup () y sirve para
configurar el modo de trabajo de un PIN pudiendo ser INPUT (entrada) u OUTPUT
(salida).

pinMode(pin, OUTPUT);
configura pin como salida las terminales de Arduino, por defecto, estn
configurados como entradas, por lo tanto no es necesario definirlos en el caso de
que vayan a trabajar como entradas. Los pines configurados como entrada
quedan, bajo el punto de vista elctrico, como entradas en estado de alta
impedancia.
Estos pines tienen a nivel interno una resistencia de 20 K a las que se puede
acceder mediante software. Estas resistencias se accede de la siguiente manera:

Las resistencias internas normalmente se utilizan para conectar las entradas a


interruptores. En el ejemplo anterior no se trata de convertir un pin en salida, es
simplemente un mtodo para activar las resistencias interiores.
Los pins configurado como OUTPUT (salida) se dice que estn en un estado de
baja impedancia estado y pueden proporcionar 40 mA (miliamperios) de corriente
a otros dispositivos y circuitos. Esta corriente es suficiente para alimentar un diodo
Debemos acercarnos los unos a los
otros para poder progresar juntos
-Nikola Tesla

31

Angel HerBra.

LED (no olvidando poner una resistencia en serie), pero no es lo suficiente grande
como para alimentar cargas de mayor consumo como rels, solenoides, o
motores.
Un cortocircuito en las patillas Arduino provocar una corriente elevada que
puede daar o destruir el chip Atmega. A menudo es una buena idea conectar
en la OUTUPT (salida) una resistencia externa de 470 o de 1000 .

digitalRead(pin):
Lee el valor de un pin (definido como digital) dando un resultado HIGH (alto) o
LOW (bajo). El pin se puede especificar ya sea como una variable o una constante
(0-13).

digitalWrite(pin, value):
Enva al pin definido previamente como OUTPUT el valor HIGH o LOW
(poniendo en 1 o 0 la salida). El pin se puede especificar ya sea como una variable
o como una constante (0-13).

El siguiente ejemplo lee el estado de un pulsador conectado a una entrada digital y


lo escribe en el pinde salida LED:

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

32

Angel HerBra.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

33

Angel HerBra.

e/s analgicas
analogRead(pin):
Lee el valor de un determinado pin definido como entrada analgica con una
resolucin de 10 bits. Esta instruccin slo funciona en los pines (0-5). El rango de
valor que podemos leer oscila de 0 a 1023.

Nota: Los pins analgicos (0-5) a diferencia de los pines digitales, no necesitan
ser declarados como INPUT u OUPUT ya que son siempre INPUTs.

analogWrite(pin, value):
Esta instruccin sirve para escribir un pseudo-valor analgico utilizando el
procedimiento de modulacin por ancho de pulso (PWM) a uno de los pins de
Arduino marcados como pin PWM. El ms reciente Arduino, que implementa el
chip ATmega168, permite habilitar como salidas analgicas tipo PWM los pines 3,
5, 6, 9, 10 y 11. Los modelos de Arduino ms antiguos que implementan el chip
ATmega8, solo tiene habilitadas para esta funcin los pines 9, 10 y 11. El valor
que se puede enviar a estos pines de salida analgica puede darse en forma de
variable o constante, pero siempre con un margen de 0-255.

Si enviamos el valor 0 genera una salida de 0 voltios en el pin especificado; un


valor de 255 genera una salida de 5 voltios de salida en el pin especificado. Para
valores de entre 0 y 255, el pin saca tensiones entre 0 y 5 voltios - el valor HIGH
de salida equivale a 5v (5 voltios). Teniendo en cuenta el concepto de seal PWM,
por ejemplo, un valor de 64 equivaldr a mantener 0 voltios de tres cuartas partes
del tiempo y 5 voltios a una cuarta parte del tiempo; un valor de 128 equivaldr a
mantener la salida en 0 la mitad del tiempo y 5 voltios la otra mitad del tiempo, y
un valor de 192 equivaldr a mantener en la salida 0 voltios una cuarta parte del
tiempo y de 5 voltios de tres cuartas partes del tiempo restante.
Debemos acercarnos los unos a los
otros para poder progresar juntos
-Nikola Tesla

34

Angel HerBra.

Debido a que esta es una funcin de hardware, en el pin de salida analgica


(PWN) se generar una onda constante despus de ejecutada la instruccin
analogWrite hasta que se llegue a ejecutar otra instruccin analogWrite (o una
llamada a digitalRead o digitalWrite en el mismo pin).
Nota: Las salidas analgicas a diferencia de las digitales, no necesitan ser
declaradas como INPUT u OUTPUT.
El siguiente ejemplo lee un valor analgico de un pin de entrada analgica,
convierte el valor dividindolo por 4, y enva el nuevo valor convertido a una salida
del tipo PWM o salida analgica:

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

35

Angel HerBra.

Control del tiempo


delay(ms):
Detiene la ejecucin del programa la cantidad de tiempo en ms que se indica en la
propia instruccin. De tal manera que 1000 equivale a 1seg.

millis():
Devuelve el nmero de milisegundos transcurrido desde el inicio del programa en
Arduino hasta el momento actual. Normalmente ser un valor grande
(dependiendo del tiempo que est en marcha la aplicacin despus de cargada o
despus de la ltima vez que se puls el botn reset de la tarjeta).

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

36

Angel HerBra.

Nota: Este nmero se desbordar (si no se resetea de nuevo a cero), despus de


aproximadamente 9 horas.

Matemticas
min(x, y)
Calcula el mnimo de dos nmeros para cualquier tipo de datos devolviendo el
nmero ms pequeo.

Si 'valor' es menor que 100 `valor` recoger su propio valor si valor es mayor que
100 valor pasara a valer 100.

max(x, y)
Calcula el mximo de dos nmeros para cualquier tipo de datos devolviendo el
nmero mayor de los dos.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

37

Angel HerBra.

De esta manera nos aseguramos de que valor ser como mnimo 100.

constrain(x, a, b):
Restringe un nmero para estar dentro de un rango.
Parmetros:
x: el nmero para limitar, todos los tipos de datos
a: El extremo inferior de la gama, todos los tipos de datos
b: el extremo superior de la gama, todos los tipos de datos

Devoluciones
x: si x est entre A y B
a: Si x es menor que a
b: si x es mayor que b

map(value, fromLow, fromHigh, toLow, toHigh):


Re-mapea un nmero de un rango a otro. Es decir, un valor de fromLow
conseguira asignada a toLow, un valor de fromHigh a toHigh, los valores en el
medio a los valores en el medio, etc.

No restringir los valores dentro del rango, ya que los valores fuera de rango a
veces se destinan y til. La funcin de restriccin () se puede utilizar ya sea antes
o despus de esta funcin, si se desean lmites de los rangos.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

38

Angel HerBra.

Tenga en cuenta que los "lmites inferiores" de cualquiera de rango pueden ser
ms grandes o ms pequeos que los "lmites superiores" para que el mapa ()
funcin se puede utilizar para revertir un rango de nmeros, por ejemplo

y = mapa (x, 1, 50, 50, 1);

La funcin tambin se ocupa de los nmeros negativos, para que este ejemplo

y = mapa (x, 1, 50, 50, -100);

Tambin es vlido y funciona bien.

La funcin map () utiliza enteros de matemticas por lo que no generar


fracciones, cuando la matemtica podra indicar que debera hacerlo. Restos
fraccionarios se truncan, y no son redondeadas o promedio.

Parmetros
valor: el nmero de mapa
fromLow: el lmite inferior del rango actual del valor
fromHigh: el lmite superior del rango actual del valor
toLow: el lmite inferior del rango objetivo del valor
toHigh: el lmite superior del rango objetivo del valor

Devoluciones
El valor asignado.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

39

Angel HerBra.

Aleatorios:
randomSeed(seed):
randomSeed () inicializa el generador de nmeros pseudo-aleatorios, haciendo
que se inicia en un punto arbitrario en su secuencia aleatoria. Esta secuencia,
mientras que muy largo, y al azar, es siempre la misma.
Si es importante para una secuencia de valores generados por azar () para variar,
de las ejecuciones posteriores de un sketch, utilice randomSeed () para inicializar
el generador de nmeros aleatorios con una entrada bastante aleatorio, como
analogRead () en un pin desconectado.
A la inversa, puede ocasionalmente ser til utilizar secuencias de pseudoaleatorios que se repiten exactamente. Esto se puede lograr llamando
randomSeed () con un nmero fijo, antes de comenzar la secuencia aleatoria.
Debemos acercarnos los unos a los
otros para poder progresar juntos
-Nikola Tesla

40

Angel HerBra.

Parmetros:
largo, int - pasar un nmero para generar la semilla.

random(max), random(min, max):


La funcin random devuelve un nmero aleatorio entero de un intervalo de valores
especificado entre los valores min y max.
puede ocasionalmente ser til utilizar secuencias de pseudo-aleatorios que se
repiten exactamente. Esto se puede lograr llamando randomSeed () con un
nmero fijo, antes de comenzar la secuencia aleatoria.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

41

Angel HerBra.

Comunicacin serie:
Serial:
Se utiliza para la comunicacin entre la placa Arduino y un ordenador u otros
dispositivos. Todas las placas Arduino tienen al menos un puerto serie (tambin
conocido como un UART o USART): Serial. Se comunica en los pines digitales 0
(RX) y 1 (TX), as como con el ordenador a travs de USB. Por lo tanto, si utiliza
estas funciones, no se puede tambin utilizar pines 0 y 1 para la entrada o salida
digital.
Puede usar monitor incorporado de serie del entorno Arduino para comunicarse
con una placa Arduino. Haga clic en el botn de monitor de serie en la barra de
herramientas y seleccione la misma velocidad de transmisin utilizada en la
llamada para comenzar ().

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

42

Angel HerBra.

Serial.begin(rate)
Abre el puerto serie y fija la velocidad en baudios para la transmisin de datos en
serie. El valor tpico de velocidad para comunicarse con el ordenador es 9600,
aunque otras velocidades pueden ser soportadas.

Nota: Cuando se utiliza la comunicacin serie los pins digital 0 (RX) y 1 (TX) no
puede utilizarse al mismo tiempo.

Serial.println(data):
Imprime los datos en el puerto serie, seguido por un retorno de carro automtico y
salto de lnea. Este comando toma la misma forma que Serial.print(), pero es ms
fcil para la lectura de los datos en el Monitor Serie del software.

Nota: Para obtener ms informacin sobre las distintas posibilidades de


Serial.println () y Serial.print () puede consultarse el sitio web de Arduino.
El siguiente ejemplo toma de una lectura analgica pin0 y enva estos datos al
ordenador cada 1 segundo.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

43

Angel HerBra.

Serial.print(data, data type)


Vuelca o enva un nmero o una cadena de carateres, al puerto serie. Dicho
comando puede tomar diferentes formas, dependiendo de los parmetros que
utilicemos para definir el formato de volcado de los nmeros.
Parmetros
data: el nmero o la cadena de caracteres a volcar o enviar.
data type: determina el formato de salida de los valores numricos (decimal, octal,
binario, etc...) DEC, OCT, BIN, HEX, BYTE , si no se establece nada vuelva ASCII.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

44

Angel HerBra.

Serial.avaible()
Devuelve Un entero con el nmero de bytes disponibles para leer desde el buffer
serie, o 0 si no hay ninguno. Si hay algn dato disponible, SerialAvailable() ser
mayor que 0. El buffer serie puede almacenar como mximo 64 bytes.

Ejemplo:

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

45

Angel HerBra.

Serial.Read():
Lee o captura un byte (un caracter) desde el puerto serie. Devuelve el siguiente
byte (carcter) desde el puerto serie, o -1 si no hay ninguno.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

46

Angel HerBra.

Practicas
1# Encendido de led
El objetivo de encender un led a travs de un micro controlador arduino es para
iniciarse en la plataforma de programacin de arduino y el comienzo para el
desarrollo de programas ms complejos.
El encendido del led es para aprender a definir variables, salidas y estados de la
salida alto o bajo (HIGH, LOW),

Diagrama:

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

47

Angel HerBra.

2# Parpadeo de led :
Utilizacin de comandos bsicos que siempre deben de estar en los programas de
ARDUINO.
En el parpadeo del led utilizaremos el circuito anterior con la diferencia en
variaciones del programa, el programa har que el lede se encienda y se apague
cada cierto tiempo.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

48

Angel HerBra.

Diagrama:

3# Encendido de LED con entrada digital


El siguiente ejemplo aprenderemos a leer las entradas y obtener una respuesta.
El programan debe de encender un led a presionar un pulsador que se encuentra
en un puerto designado como entrada y el led en uno designado como salida. El
led se prende cuando el pulsador este presionado, y se apaga cuando se deja de
presionar el pulsador.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

49

Angel HerBra.

Diagrama:

4# Salida analgica
Las salidas analgicas pueden ser utilizadas cuando se necesita entregar un valor
x en la salida que no se desea que sea encendido o apagado sino un valor
intermedio.
En el siguiente ejemplo se escribir el valor que se desea que tome la salida, en
este caso el led.
Programa:
int led= 13;
void setup()
{
}
voidloop()
{
analogWrite(13,1); //"1" es el valor que tomara el pin 13,
delay(10);

// puede ser de 1 a 255.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

50

Angel HerBra.

Diagrama:

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

51

Angel HerBra.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

52

Angel HerBra.

5# Entradas analgicas
Con las entradas analgicas se pude tomar un rango ms amplio de lecturas que
no sean solo "encendido y apagado", se pueden utilizar para tomar mediciones de
temperatura, resistencia, peso, etc....
El siguiente programa hace que la luminosidad del led sea dependiendo del valor
analgico que se lee en la entrada.

*Los pines por defecto estn configurados como entradas.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

53

Angel HerBra.

Diagrama:

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

54

Angel HerBra.

6# Secuenciador de LEDs
Esta prctica nos servir para practicar el encendido y apagado de las salidas
digitales, utilizando diferentes salidas que se debern encender y apagar en una
secuencia establecida, la secuencia puede variar dependiendo de cmo la dese.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

55

Angel HerBra.

Diagrama:

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

56

Angel HerBra.

7# Semforo
El objetivo de esta prctica es mejorar el conocimiento de los comandos de
programacin de arduino y que tome en cuenta que siempre se debe de cerrar
cada llave "{-}" que es abierta para no tener errores y que se debe de apagar la
salida cuando no se desea que este activa o de lo contrario se mantendr actica.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

57

Angel HerBra.

Diagrama:

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

58

Angel HerBra.

8# Comunicacin serial (usb, arduino).


Arduino utiliza un puerto serial usb para ser programado y a travs del cual se
pueden enviar y recibir datos que pueden ser visualizados por medio del monitor
serial que brinda arduino.
Monitor serial.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

59

Angel HerBra.

Al seleccionar la opcin del monitor serial se desplegar una ventana en donde se


mostraran los datos de los que se desean conocer.
En la ventana se muestran varias opciones en las que se podr seleccionar la
velocidad de comunicacin, en donde se mostraran diferentes velocidades de
comunicacin. Se encuentra en la parte inferior derecha.
El desplazamiento de la hoja de forma manual o automtica para mostrar el
ltimo dato impreso en ella. Se encuentra en la parte inferior izquierda.
Barra de comunicacin, barra donde se pueden escribir comandos que se
desean enviar al arduino y que ejecute alguna funcin. Esta barra se encuentra en
la parte superior de la ventana.
Opciones de lnea se elige el modo de comunicacin que sea de su utilidad.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

60

Angel HerBra.

Barra de comunicacin

Desplazamient
o de hoja

Velocidad de
comunicacin

Opciones de lnea

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

61

Angel HerBra.

9# Sensor de temperatura
Utilizar las entradas analgicas y la comunicacin serial del arduino, para
visualizar los valores obtenidos en el ordenador a travs del monitor serial.
Deberemos de utilizar una formula debido el sensor de temperatura (LM35) no
proporciona los datos en grados Celsius.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

62

Angel HerBra.

Diagrama:

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

63

Angel HerBra.

10# Sensor ultrasnico


Objetivo:
Aprender a utilizar el sensor ultrasnico para usarlo en diversas aplicaciones como
medir distancia, detectar objetos, proximidad de objetos, etc...
Materiales necesarios:
1 Micro controlador ARDUINO
1 sensor ultrasnico (HC-SR04)
Cables de conexin.
1 protoboard

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

64

Angel HerBra.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

65

Angel HerBra.

Diagrama:

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

66

Angel HerBra.

11# Servo Motor (controlado)


Objetivo:
Aprender a utilizar la herramienta de libreras que nos brinda arduino, para reducir
el tamao de la programacin, en este caso la utilizaremos un librera para la
programacin de un servomotor.
Materiales a utilizar:
1 controlador ARDUINO.
1 servo motor.
Cables de conexin.
El siguiente programa de ejemplo de control de un servo motor debe de realizar
una secuencia establecida de mover el servo a los 0 esperar un tiempo y
moverse a los 90 luego otro retardo y cambiar a los 180 esta secuencia se
repetir de forma inversa tambin.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

67

Angel HerBra.

Diagrama:

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

68

Angel HerBra.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

69

Angel HerBra.

12# Servo Motor controlado analgicamente


Objetivo:
Controlar el servo de forma analgica, dependiendo de lo que vari la entrada
anloga determina la posicin que tomara el servo motor.
Materiales necesarios:
1 controlador ARDUINO.
1 servo motor.
1 potencimetro.
Cables de conexin.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

70

Angel HerBra.

Diagrama:

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

71

Angel HerBra.

13# DS 1307
El modulo DS1307 es un reloj de hora y fecha que poses una batera para
seguir contando el tiempo aun que se desconecte de la fuente de alimentacin, se
puede utilizar para realizar una funcin cada cierto tiempo, en minutos, horas, o
das.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

72

Angel HerBra.

Programa:
En el siguiente programa configuramos en modulo "DS 1307" con la hora y la
fecha, la hora y la fecha sern tomados del ordenador.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

73

Angel HerBra.

Diagrama:

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

74

Angel HerBra.

14# ADXL3xx (x,y,z.)

El mdulo ADXL3xx es un acelermetro en tres ejes que se puede utilizar para


saber la posicin de un objeto en las tres dimensiones (con este mdulo
podramos utilizarlo para mantener una plataforma estable o en la posicin que
deseamos)
En el siguiente ejemplo aprenderemos a programar el sensor y leeremos las
distintas posiciones de los ejes (X,Y,Z) y las observaremos en el monitor serial que
nos proporciona Arduino.
Programa:

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

75

Angel HerBra.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

76

Angel HerBra.

Diagrama:

* Abrir el monitor serial para visualizar los valores que se obtienen del sensor
"ADXL335"

15# Pantalla LCD


La pantalla LCD sirve para mostrar datos de forma visible y leble para conocer un
valor de nuestro inters como temperatura, distancia, etc. O transmitir algn
mensaje.
Demostraremos el uso de la pantalla LCD de 16x2 imprimiendo el mensaje hola
mundo
Materiales:
1 pantalla LDC de 16x2
1placa arduino
Cables de conexin
Programa:
Debemos acercarnos los unos a los
otros para poder progresar juntos
-Nikola Tesla

77

Angel HerBra.

Para el siguiente programa incluiremos la librera #include <LiquidCrystal.h>


para poder utilizar la pantalla.

Diagrama:

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

78

Angel HerBra.

16# Pantalla LCD Blink


La pantalla LCD sirve para mostrar datos de forma visible y leble para conocer un
valor de nuestro inters como temperatura, distancia, etc. O transmitir algn
mensaje.
En el siguiente ejemplo imprimiremos algn mensaje que deseamos, en la pantalla
LCD de 16x2. Y se dar un pequeo parpadeo (blink) al mostrar el mensaje.
Materiales:
1 pantalla LDC de 16x2
1placa arduino
Cables de conexin
Programa:
Para el siguiente programa incluiremos la librera #include <LiquidCrystal.h>
para poder utilizar la pantalla.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

79

Angel HerBra.

Diagrama:

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

80

Angel HerBra.

17# LCD scroll


La pantalla LCD sirve para mostrar datos de forma visible y leble para conocer un
valor de nuestro inters como temperatura, distancia, etc. O transmitir algn
mensaje.
Este ejemplo imprime "Hello World!" a la LCD y utiliza el scrollDisplayLeft () y
scrollDisplayRight () para desplazarse el texto.
Materiales:
1 pantalla LDC de 16x2
1placa arduino
Cables de conexin
Programa:

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

81

Angel HerBra.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

82

Angel HerBra.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

83

Angel HerBra.

Diagrama:

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

84

Angel HerBra.

18# Mdulo Bluetooth (configuracin)


El modulo bluetooth se puede utilizar para tener una comunicacin de forma
remota con la placa arduino y mandar comandos de activacin de sentencias
establecidas en el programa.
Materiales necesarios:
1 Placa arduino
1 Modulo Bluetooth.
Cables de conexin.
Para utilizar el modulo bluetooth debemos configurarlo para establecerle un
nombre, la velocidad de comunicacin y una contrasea si se desea. Esto se hace
para establecer una sincronizacin con el modulo deseado y no conectares con
orto modulo.
Programa:

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

85

Angel HerBra.

Para la comunicacin con el arduino solo se debe de ordenar en el programa que


se lean los puertos seriales a los cuales se conectara el modulo bluetooth.

Al momento de cargar el programa en la tarjeta debe de desconectar los


puertos de comunicacin serial, al no desconectarlos podr causar una
demora en la carga del programa o indicara un erro, al estar conectados los
puertos seriales causan una interferencia con el puerto usb.

Diagrama:

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

86

Angel HerBra.

19# Encendido de LED con Bluetooth


En el siguiente programa se encender y apagara un led atreves de la
comunicacin serial del mdulo bluetooth con ayuda del puerto bluetooth del
celular utilizando una aplicacin que crearemos.
Materiales necesarios:
1 Placa arduino
1 Modulo Bluetooth.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

87

Angel HerBra.

1 Resistencia de 330.
1 Led
1 Telfono celular con bluetooth y Android

Programa:

Programa aplicacin:

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

88

Angel HerBra.

La aplicacin anterior se realiz en : http://appinventor.mit.edu/explore/


*Se incluir un video tutorial.

Diagrama:

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

89

Angel HerBra.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

90

Angel HerBra.

20# Sensor de color TCS230


Aprender a utilizar el sensor de color en la plataforma arduino, para ampliar los
conocimientos en micro controladores.
El sensor de color lo podemos utilizar para decantar los colores y puede
emplearse en clasificacin de objetos dependiendo de su color.

El siguiente ejemplo deber de detectar los colores verde, rojo y azul. Activara una
salida dependiendo del color detectado.
Materiales:
1 placa arduino
1mudulo TCS230
Protoboard y cables de conexin.
Programa:

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

91

Angel HerBra.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

92

Angel HerBra.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

93

Angel HerBra.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

94

Angel HerBra.

Diagrama:

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

95

Angel HerBra.

Vehculo seguidor de lnea


El siguiente proyecto es un ejemplo de una posible aplicacin con arduino, consta
de un vehculo seguidor de lnea que detecta obstculos y posee la opcin de ser
controlado por medio del mdulo bluetooth.
Para realizar el proyecto necesitaremos los siguientes materiales.
Materiales:
1placa arduino
1sensor ultrasnico (SRF-05).
1 modulo bluetooth (HC-06)
2 servo motores.
5 resistencias de 10K
2 resistencias de 220
2 resistencias de 1k
2 transistores NPN (2N2222A- 2N3904)
2 leds infra rojos.
2 receptores infra rojos.
1 interruptor
Cables de conexin
Pin header macho y hembra.
Placa de cobre.
Porta bateras.

Los servo motores los modificaremos para lograr una rotacin continua, ya que en
su interior se encuentra un potencimetro para indicar el ngulo en el que se
encuentra y un tope en los engranajes para evitar que de en giro completo y
continuo.
Debemos acercarnos los unos a los
otros para poder progresar juntos
-Nikola Tesla

96

Angel HerBra.

Programa:

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

97

Angel HerBra.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

98

Angel HerBra.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

99

Angel HerBra.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

100

Angel HerBra.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

101

Angel HerBra.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

102

Angel HerBra.

Aplicacin

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

103

Angel HerBra.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

104

Angel HerBra.

Esquemtico:
Seguidor de lnea:

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

105

Angel HerBra.

Control:

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

106

Angel HerBra.

Placas:
Debemos acercarnos los unos a los
otros para poder progresar juntos
-Nikola Tesla

107

Angel HerBra.

Placa seguidor de lnea:

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

108

Angel HerBra.

Placa control:

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

109

Angel HerBra.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

110

Angel HerBra.

Anexos

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

111

Angel HerBra.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

112

Angel HerBra.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

113

Angel HerBra.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

114

Angel HerBra.

Modulo Bluetooth

Cables de conexin

Sensor ultrasnico

Sensores infra rojos

ADLX335

Servo motor

Pin header
Macho

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

Hembra

115

Angel HerBra.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

116

Angel HerBra.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

117

Angel HerBra.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

118

Angel HerBra.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

119

Angel HerBra.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

120

Angel HerBra.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

121

Angel HerBra.

Debemos acercarnos los unos a los


otros para poder progresar juntos
-Nikola Tesla

122

You might also like