8/16/2019 Libro- Ing. Santiago Manzano Diseño y Proyectos Básicos Arduino
1/47
8/16/2019 Libro- Ing. Santiago Manzano Diseño y Proyectos Básicos Arduino
2/47
DISEÑO
PROYECTOS
BÁSICOS CON
RDUINO
íctor
Santiago anzano
illafuerte
8/16/2019 Libro- Ing. Santiago Manzano Diseño y Proyectos Básicos Arduino
3/47
DISEÑO DE PROYECTOS BÁSICOS CON ARDUINO
Víctor Santiago Manzano Villafuerte
ISBN:
978 9942 13 437 0
IEPI CERTIFICADO No QUI 042567
Impreso: Editorial PIÓ XH
Teléfono:
2
421806
Ambato
Noviembre
2013
Primera Edición
INTRO U IÓN
Este libro está pensado
para
aquellas
personas que
siempre
han tenido un apego por la programación de microcontroladores
pero
por la
complejidad
en el aprendizaje de
estos quedaba
relegado todos
sus
deseos
por
incursionar
en
este campo.
Gracias a la nueva tecnología que está revolucionando la
electrónica digital se presenta una solución a este problema de
aprendizaje en
cuando
a la
facilidad
del
lenguaje
de
programación y el armado de los circuitos esta tecnología se
llama
Arduino.
Arduino
se
basa
en
hardware libre
y
código abierto
con la
posibilidad
de
utilizarlo
sin
conocimientos previos
de
electrónica permitiendo el desarrollo de proyectos electrónicos
co n
gran facilidad.
Además existe gran cantidad
de software
para
la implementación
y simulación de circuitos electrónicos y microcontroladores
destacando
Proteus
VS de
Labcenter Electronics
el
cual
ofrece
la
posibilidad
de
simular
la
placa
de
Arduino.
Por otra
parte
para la creación de diagramas físicos existe el
software Fritzing
el
cual permite tener
un
esquema
del
prototipo
real a ser
implementado.
8/16/2019 Libro- Ing. Santiago Manzano Diseño y Proyectos Básicos Arduino
4/47
DEDI TORI
A
Dios por ser mi luz y sabiduría
A mis padres: Manuel y Ro sita.
A m i
esposa:
Elizabeth a m i hijo: Josué
A
mis hermanos:
Irene
Enrique
Andreita.
a mi
cuñado Mauricio
y a mis
sobrinos.
Por todo el amor cariño y sobre todo el
apoyo incondicional.
También a mis amigos por haber
compartido su t iempo y sus conocimientos.
8/16/2019 Libro- Ing. Santiago Manzano Diseño y Proyectos Básicos Arduino
5/47
ÍN I E
GENER L
CAPÍTULO
11
Programando Arduino
1 1
1 1 Entornodel IDEdeArduino 1 1
1 2 Introducción a la programación 15
1 2 1 Comentarios 18
1 2 2 Bloques 1 9
1 2 3 Tipos de datos 19
1 2 4 Constantes 19
1 2 5
Variables
20
1 2 6 Operadores aritméticos 20
1 2 7 Operadores 21
1 2 8 Funciones 21
1 2 9 Estructuras de control 22
1 2 9 1 Sentencias condicionales 22
1 2 9 2 Bucle o Estructuras de repetición 24
1 2 9 3 Saliendo de los bucles 26
1 2 10
Siringo cadenas de caracteres 27
1 2 11
Entradas
y
salidas digitales
y
analógicas
28
1 3 Librerías 29
1 3 1
Otras Librerías
31
CAPÍTULO II 33
PROTEUS 33
2 1 Introducción 33
2 2
Entorno Gráfico ISIS 33
2 3
Manejo
Arduino en Proteus 36
8/16/2019 Libro- Ing. Santiago Manzano Diseño y Proyectos Básicos Arduino
6/47
CAPÍTULO
III 39
Proyectos 39
3.1
Proyectos
con
Leds
39
3.1.1-EncenderunLed 39
3.1.2 Encendido Progresivo y Apagado
de Led 42
3.1.3 Secuencia de Leds con un pulsador. 44
3.1.4 Cruce de Semáforos 47
3.1.5 Contador
de O a 99 con dos
display
de 7
segmentos
50
3.2
Proyecto
con
Frecuencias
53
3.2.1
Zumbador. 53
3.2.2 Variación de Frecuencias 55
3 2 3
Sonidos
57
3 3 Proyectos Entradas y Salidas 61
3.3.1. Control de Temperatura 61
3.3.2 Control de luz con
AC 66
3.3.3 Control de Motores DC 69
3.3.4Teclado
72
3.4 Transmisión serie Protocolo
de
Comunicación
I2C y
Almacenamiento
en la
memoria
EEPROM 78
3.4.1 Leer Datos desde Puerto
Serie 78
3 4 2
Protocolo
de
Comunicación
I2C 81
3.4.3 Transmisión serie del valor de temperatura
utilizando el Protocolo de Comunicación I2C y
Almacenamiento en la memoria EEEPROM 84
Bibliografía 90
ÍN I E
DE FIGUR S
I ir uuA
1.1: INTERFAZ ID E A R D U I N O
12
I K I I U A 1 2 VENTANA DE COMPILACIÓN 15
FIGURA 1.
3 : IDEARDU INO 17
FIGURA 1. 4 : FORMATO D E UN A FUNCIÓN 22
F IGURA 2. 1: IDE DE
PROTEUS
34
FIGURA 2 2: INTERFAZ DE ISIS PROTEUS 36
F I G U R A
2.3: INTERFAZ
ARDUINO MEGA2560 37
F i G U R A 2
4:
CONEXIÓN
D E
DISPOSITIVOS CON
ARDUINO
MEGA2560
37
FIGURA 2
S:CARGAR
CÓDIGO AL
ARDUINO
38
F IGURA 2 6: S IMULACIÓN DE PROGRAMA E N SIS PROTEUS 38
F I G U R A S
1: PROGRAMA ENCIENDE UN LED 40
F I G U R A S
2: ESQUEMA D E CONEXIÓN ISIS PROTEUS ENCENDER UN
L E D
41
F I G U R A S 3 : ESQUEMA CONEXIÓN F ÍS ICA PARA ENCENDER EL LED 41
F I G U R A S
4:
ESQUEMA
DE
CONEX IÓN
ISIS
PROTEUS ENC ENDER
U N L E D 4 3
F I G U R A S 5 :
ESQUEMA CONEXIÓN F Í S I C A PARA ENCENDER
EL LED 43
F I G U R A 3 6:
E S Q U E M A D E
C O N E X I Ó N D E
L A S E C U E N C I A
D E
L E D S C O N U N
P U L S A D O R
4 6
F I G U R A 3 7:
E S Q U E M A
D E C O N E X I Ó N
F Í S IC A S E C U E N C I A
D E
L E D S
C O N U N P U L S A D O R 46
F I G U R A
3 8 : C R U C E E N U N A I N T E R S E C C I Ó N 4 7
F I G U R A 3 9:
E S Q U E M A
D E
C O N E X I Ó N
E N ISIS
P R O T E U S
C R U C E D E
S E M Á F O R E S
4 9
F I G U R A S 1 0 :
E S Q U E M A C O N E X I Ó N F ÍS IC A C R U C E S E M Á F O R O S
4 9
F I G U R A S 11 :
E S Q U E M A
D E
C O N E X I Ó N C O N T A D O R
D E L O A L 9 9 5 2
F I G U R A S
12 :
E S Q U E M A
D E
C O N E X I Ó N F Í S IC A C O N T A D O R
O A L 9 9 5 2
F I G U R A
3 13: E S Q U E M A E N ISIS P R O T E U S Z U M B A D O R 5 4
F I G U R A
3 1 4 : E S Q U E M A
Físico
Z U M B A D O R 5 4
F I G U R A 3 15:
E S Q U E M A
E N ISIS
P R O T E U S V A R I A C IÓ N
D E
F E C U E N C I A S
5 6
F I G U R A
3 16:
E S Q U E M A
Físico
V A R I A C I Ó N
D E
F R E C U E N C I A S
5 6
F I G U R A
3 17:
E S Q U E M A
E N
ISIS
P R O T E U S S O N I D O S
C O N
L I B R E R Í A
P I L C H E S H
6 0
9
8/16/2019 Libro- Ing. Santiago Manzano Diseño y Proyectos Básicos Arduino
7/47
F I G U R A
3 18:
E S Q U E M A
Físico
S O N I D O S C O N L I B R E R Í A P I T CH E S . H 61
F I G U R A 3. 19: E S Q U E M A L M 35 6 2
F I G U R A 3 . 20: E S Q U E M A C O N E X I Ó N S S P R O T E U S S E N S O R
T E M P E R A T U R A 6 5
F I G U R A 3. 21: E S Q U E M A C O N E X I Ó N F Í S I C A S E N S O R T E M P E R A T U R A 6 5
F I G U R A 3. 22: E S Q U E M A
C O N E X I Ó N
L D R 6 6
F I G U R A 3. 23: E S Q U E M A S S P R O T E U S S E N S O R D E L u z 6 8
F I G U R A 3. 24: E S Q U E M A F Í S I C O
S E N S O R
D E L U Z 6 8
F I G U R A 3. 25: D I A G R A M A D E C O N E X I Ó N
CIL293D
69
F I G U R A 3. 26:
E S Q U E M A
S S P R O T E U S S E N S O R D E L u z 7 0
F I G U R A
3. 27:
E S Q U E M A F Í S I C O S E N S O R
D E L U Z 7 1
F I G U R A 3. 28:
E S Q U E M A
T E C L A D O 7 2
F I G U R A 3. 29: I N S E R T A R L I B R E R Í A K E Y P A D . H 7 3
F I G U R A 3. 30: E S Q U E M A S S P R O T E U S C O N T R O L P O R T E C L A D O . . . .
77
F I G U R A
3. 31:
E S Q U E M A
D E
C O N E X I Ó N F Í S I C A C O N T R O L T E C L A D O
7 7
F I G U R A 3. 32: V I R T U A L S E R I A L P O R T D R I V E R 78
F I G U R A
3 33:
E S Q U E M A D E CO N E X I Ó N P U E R T O S E R I E ISIS P R O T E U S 79
F I G U R A
3. 34:
S A L I D A
D E L
P U E R T O
C O M 2
80
F I G U R A 3. 35: E S Q U E M A F Í S I C O D E C O N E X I Ó N P U E R T O S E R I E 80
F I G U R A S . 36: E S Q U E M A CO N E X I Ó N D E L S E N S O R C O N A R D U I N O 83
F I G U R A S . 37 :
E S Q U E M A
D E
C O N E X I Ó N F Í S I CA
D E L
S E N S O R
Y
A R D U I N O
83
FIGURAS 38 :
ESQU EMA C O N EX IÓN
ICTC7 8
F I G U R A
3. 39:
E S Q U E M A C O N E X I Ó N
E N S S
P R O T E U S
8 9
F I G U R A 3 . 4 0 : E S Q U E M A D E
C O N E X I Ó N
F Í S I C A D E A R D U I N O Y
TC74A05 89
1
CAPITULO
I
Programando Arduino
I Entorno de l IDE de Arduino
l i l
E ntorno de P rogramación Integrado ID E ) de A r duino, es un
1 1 1 i m ultiplaforma, disponible para descargar d irectamente para
W i n d o w s ,
L inux y M ac O S . E s un a aplicación gratuita desarrollada
en
J a v a y
deriva
d e l I D E d e
Processing
y
Wiring, sencilla
de
instalar
y a la vez muy fácil de
utilizar.
la s ido diseñado teniendo en mente que sus usuarios no son
e x p e r t o s desarrolladores y sean capaces de familiarizarse con él
d e u n a manera intuitiva.
I n c l u y e un editor de código que resalta la sintaxis, esto es
resaltando
las palabras claves y funciones de otro color, además
permite
ver si
están bien
emparejadas las
llaves
de las
funciones
de
condición y ciclos de repetición.
A d e m á s
el entorno incluye todo lo necesario para com pilar gracias
l
compilador avr-gcc),
q ue
trasforma
el
código legible
por el
se r
humano a instrucciones legibles para la má qu ina llamado s
lleneros objeto), el proceso de com pilación es transparen te para
el usuario. Todo lo que tiene que hacer es pulsar un botón. S i
existen errores en el código de programación, el compilador
mostrará
un
m ens aj e
de
error
en la
parte inferior
del
IDE
y
resaltará la línea de código que parece tener el problema.
8/16/2019 Libro- Ing. Santiago Manzano Diseño y Proyectos Básicos Arduino
8/47
El código que se desarrolla es C/C++, aunque las funciones que
gobiernan el program a son setupQ y loop().
Los archivos se guardan con la
extensión
.ino.
El
IDE de arduino consta de cinco menús: File, Edit, Sketch,
Tools, Help
y una
barra
de
herramientas
que
permite verificar
el
proceso de carga, creación, apertura y guardado de programas,
además de la monitorización serie (ver Figura 1.1 .
ii l
<
«
1 . • - • «
Figura 1 1: líe faz IDE rduino
1. Barra de Menús: Son cinco m enús: File, Edit, Sketch, Tools,
Help. Los menús se activan cuando
existe
una tarea que se pueda
realizar en este.
2
Sketch
Tools
Copy for Discourse : Copia el código con un
formato
para incluirlo
en
foro.
Copy
as
H T M L : Copia el código con un
formato
HT ML pa ra incrustarlo
en una
página
Web.
Verify/Compile: Comprueba errores en el
código.
Import Library: Inserta una l ibrería al
program a, incluyendo la sentencia include en
el código.
Show
Sketch Folder: M uestra
la
carpeta
en
donde
se
almacenan
los
programas
A dd
File. . .: Inserta un archivo fuente al
programa.
Auto
Format:
ordena en código.
Board:
Selecciona la versión de arduino que
se está usando.
Serial Port: En este menú se presentan los
puertos serie real o virtual.
13
8/16/2019 Libro- Ing. Santiago Manzano Diseño y Proyectos Básicos Arduino
9/47
Burn Bootloader: Graba un gestor de
arranque en el arduino.
2.
Barra
d e Herr am ientas: Con este menú se permite
verificar, cargar y controlar el funcionamiento del
programa.
Comprueba
los errores del código.
Compila el código y lo vuelca en la placa E/S de
Arduino.
Crea un nuev o archivo.
Muestra todos los programas que se encuentran
en
el
Sketchbook
Guarda el
programa.
Permite comprobar el funcionamiento del código
por medio del puerto de Serie.
3. Editor de código: En este espacio se escribe el código.
4.
Área
de
mensajes: Espacio
en
donde
se
indica
si la
compilación del program a fue exitosa o indica la línea en
donde puede existir un error.
5. Consola: Área en donde se presenta el lugar en el que se
guardó el programa compilado. En el caso de existir
errores en el código del programa muestra las posibles
causas de
éste ver Figura
1.2).
14
o n
ompl
C;\Uaers\Sanciago\ílppData\Locil\l«ip\bttild3i38BlíJ21441lifli?l.^
\ l n c e n d e r _ L e d . c p p h «
i n a r y
s k e t c h s i z e
1 63 2 f o f b y t e Miiací
Figura
1 2 Ventana de Compilación
1 2
Introducción a la programación
,a
estructura básica del
lenguaje
de programación de A rduino se
compone
de dos
partes. Estas
dos
funciones
son
vitales para
el
liincionamiento
del programa.
void
setupQ
sentencias;
15
8/16/2019 Libro- Ing. Santiago Manzano Diseño y Proyectos Básicos Arduino
10/47
Curación
void loopQ
sentencias;
En donde
setupQ
es la parte encargada de recoger la
configu..^*^*
y loopQ es la que contienen el programa que se ejecutará
cíclicamente.
Ambas funciones son necesarias para que el programa trabaje.
La función de configuración setup ) debe contener la declaración
de las variables, establecer el estado de los pins, inicializar librerías,
etc.
Es la
primera
función a
ejecutar
en el
programa,
se
ejecuta
sólo una
vez,
y se
utiliza para
la
configuración
de la
comunicación
de
entrada/salida y serie entre otras.
La función bucle loop) contiene el código que se ejecutará
continuamente lectura
de
entradas, activación
de
salidas, etc)
Esta función es el núcleo de todos los programas de Arduino y la
qu e realiza la mayor parte del trabajo.
Para realizar la programación se abre el IDE de Arduino, que
por defecto abre un archivo en blanco ver figura
1.3)
16
MI hjullUJl Arruino
r t i b Ü l Q i
Figura 1 3: I Earduino
I n ra
compilar
el
programa pulsar
en el
botón
,
sino existe
errores deberá presentar en la parte inferior un mensaje de
on Compiling
I
í la
consola indica
la dirección en la cual se
guardó
el
archivo
compi lado
con la extensión
.hex
y el tamaño del fichero. Copie
17
8/16/2019 Libro- Ing. Santiago Manzano Diseño y Proyectos Básicos Arduino
11/47
este archivo en una carpeta en donde se tenga el proye cto a
desarrollar; en el caso de que no se visualice esta dirección dirijase
a File >Preferences y activar la opción com pilation.
En este capítulo se describirán los elementos más básicos y
esenciales para comenzar
a
programar.
1.2.1 Comentarios
Los com entarios no son considerados com o líneas de código en
el program a, sirve para docume ntar ciertos aspectos importantes.
Existen 2 tipos de com entarios:
El comentario de bloque, abarca todas las líneas contenidas entre
los símbolos / y /, Ejemplo:
/ Hola aquí se com enta acerca del programa,
y del proceso que realiza cada línea.
Línea
de
comentario:
con los
símbolos
// se
comenta
una
línea.
Ejemplo:
// Comentario para una línea.
8
1.2 .2 H i n q u es
I a i a
agrupar
un
conjunto
líneas se utiliza los símbolos
1.2.3 Tipos
de
datos
í n
la programación de
arduino existen diferentes tipos
de
datos:
•
Hyte.
Almacena 8 bits.
•
I n t . Almacena 16 bits.
• I ,ong. Almacena 32 bits.
• Float.
Almacenado 32 bits.
•
Arrays
Alamecena varios valores de un mismo tipo, el
primer valor se encuentra en índice O
1.2.4
Constantes
Son
variables
a las que no se puede modificar el valor. Ejemplos:
true/false
HIGH/LOW
INPUT/O UTPUT
19
8/16/2019 Libro- Ing. Santiago Manzano Diseño y Proyectos Básicos Arduino
12/47
1.2.5 Variables
E j e m p l o s :
Es una porción de mem oria que almacena valores de acuerdo al
tipo de declaración y que es conocido en el programa por un
determinado identificador
y por lo
tanto puede variar
en el
recorrido
del
programa.
Una variable puede tomar una infinidad de valores pero en un
mom ento particular tendrá uno solo.
Ejemplo:
int p; // variable p disponible para todo el programa
void setup() {
void loop()
{
for (int i=0; i
8/16/2019 Libro- Ing. Santiago Manzano Diseño y Proyectos Básicos Arduino
13/47
e de ¡d
ruñe
ion
inf Int nt y {
P., ,s, r,*4r«
25»
ívivr. .ik:
retum
pt,s rsc.ctr.
Figura 1 4: ormato de una función
1 2 9 Estructuras de control
Son aquellas estructuras que permiten modificar el flujo de
ejecución
del
programa,
es
decir,
el
orden
en el que se
ejecutan
las sentencias.
1 2 9 1 Sentencias condicionales
entencia
if
Ejecuta un código si se cumple la condición y otro distinto si no
se cumple
if (condición)
//
código
si se
cumple
2 2
ilie
código
si no se
cumple
e n t e n c i a switch
>
|
c i
id icnd o d el valor de una variable ej ecutará un código
distinto
: ¡ \ h (var)
{
I i j
ce
uta si var es 1
break;
case
2 :
Ejecuta
si var es 2
break;
default:
si nada concuerda, default
defau l t
es opcional
23
8/16/2019 Libro- Ing. Santiago Manzano Diseño y Proyectos Básicos Arduino
14/47
1 2 9 2
ucle o
Estructuras
de
repetición
Una estructura de repetición indica que se va a realizar varias
veces un mismo proceso existiendo varias maneras de representar
una
estructura de repetición dependiendo mucho de 3 parámetros
principales como son:
el iniciar un
contador, tener
un
número
tope
de
repeticiones
de proceso,
parámetro modificador
de uno
de
los parámetros anteriores los mismos que deberán actuar como
elementos para comparación o condición.
Existen
3
tipos
de
bucles:
ucle for
La declaración for es usada para repetir un bloque encerrado
entre llaves.
Un
incremento
de un
contador,
es
usado
normalmente para aumentar
y
terminar
con el
bucle.
La
estructura
fo r
es muy útil para la mayoría de las operaciones repetitivas, y
habitualmente se usa para operaciones con vectores, para operar
sobre conjuntos
de
datos/pines.
El bucle for tiene tres partes o argumentos en su inicialización:
for inicialización ; condición ; incremento) {
//sentencias;
La inicialización, se
produce sólo
la
primera vez. Cada
vez que
se
va a repetir el bucle, se revisa la condición: si es cierta, el
bloque
de
funciones
(y el
incremento
del
contador)
se
ejecutan,
24
)
l i «
ondu- ión vu el ve a ser
comprobada
de
nuevo.
Si la
condición
i . l . i l ; ; : i , el bucle termina.
l ' i
i
l e m p l o :
l » i ( M I
i );i
8/16/2019 Libro- Ing. Santiago Manzano Diseño y Proyectos Básicos Arduino
15/47
do
{
//sentencias
} while condición);
1 2 9 3
Saliendo
de los
bucles
Se
puede salir de un ciclo usando las siguientes
instrucciones:
•break //
sale
del
bucle
•continué // salta el paso actual del bucle
•return // sale de la función
•gotolabel //salta
a la etiqueta label
for inti=0;i0)
continué;
// Se
salta
el
código
del
resto
de la
iteración
else
break;
//sale
d el bucle
2 O
Siring
o
c den s
de
c r cteres
l n n i
l a r i l i l a r e l trabajo concadenas
d e caracteres, existe
laclase
S l i
n i ) 1 , . T iene lo s siguientes métodos
F u n c i ó n
c o m p á r e l o ] )
c o n c a t ( )
r n i l s W i l h O
c i j i i a l s f )
t ' ( | i i ; i l s ] ¡ ' , i i 0 r c C a s e ( )
n i i h O Í O
l a s t l n d e x O f O
I c n g l h O
i ' c p l a c c ( )
s l a r t s W i l h O
s i i b s l r i n g O
l t i L o w c r C a s e ( )
o l l p p c r C a s e ( )
i i i n )
D e t a l l e
C o m p a r a
d o s
c a d e n a s
C o n c a t e n a
C o m p r u e b a s i t e r m i n a
p o r . . .
C o m p r u e b a s i s o n i g u a l e s
C o m p r u e b a i g u a l d a d i g n o r a n d o m a y ú s c u l a s y
m i n ú s c u l a s
D e v u e l v e l a p r im e r a p o s i c i ó n d e l c a r á c t e r q u e
s e p a s a c o m o a r g u m e n t o
D e v u e l v e l a ú l t i m a p o s i c i ó n d e l c a r á c t e r q u e l e
p a s a m o s
L o n g i t u d d e l a c a d e n a
R e e m p l a z a
C o m p r u e b a s i e m p i e z a p o r
D e v u e l v e
u n f r a g m e n t o d e l a
c a d e n a o r i g i n a l
C o n v i e r t e
a
m i n ú s c u l a s
C o n v i e r t e a m a y ú s c u l a s
E l im i n a l o s e s p a c i o s i n i c i a l e s y f i n a l e s
27
8/16/2019 Libro- Ing. Santiago Manzano Diseño y Proyectos Básicos Arduino
16/47
1 2 11
Entradas
y salidas
digitales
y
analógicas
Fundón
pinMode p in , m ode )
digi talRead pin)
digitalWrite pin, valué)
analogRead pin)
analogWrite pin, va lué)
Detalle
C o n f i g u r a r
un p in pa ra com por ta r s e com o
entrada
INPUT)
o
salida OU TPU T).
Esta f u n c i ó n se utiliza dentro de s e t u p ) , por
d e f e c t o
en arduino todos los pines es tán como
salidas.
E j e m p l o
pinMode p in ,
OUTPUT);
Devuelve un valor en a l to
HIGH)
o en b a j o
L O W ) ,
de un p ing
digital determinado.
E j e m p l o :
=
digita lRead Pin);
Introduce un nive l a l to HIGH) o b a j o L O W )
en el pin digital especificado.
Ejemplo:
digitalWrite pin,HIGH);
Devuelve
un
valor desde
el pin
analógic
señalado con una resolución de 10 bi ts . Es ta
f u n c i ó n
solo f u n c i o n a
en los
pines analógicos
E l valor resultante e s u n entero d e O a 1023
Los pines analógicos ,
a
diferencia
de los
digitales no necesitan declararse previamente
com o INPUT o O U T P U T .
E j e m p l o :
= digita lRead Pin);
Ésta f u n c i ó n solo puede ser usada en pines
analógico. Escribe
u n
dato pseudo-analógico
utilizando P W M ,
e l
dato está
e n e l
rango
O -
255, e l O genera O V y e l 2 5 5 genera 5 V e n l a
salida del pin especif icado.
Ejemplo:
analogWrite pin, v );
m l l l l i O
F u n c i o n e s
d e t i e m p o y
m a t e m á t i c a s
n i » )
? / £ > ' • . • i i > v ' j -
0
i . y ) , max x , y)
Permite
real iza
u na pausa en e l programa,
especif icando en t iempo en
mi l i segundo.
Existe u n error en esta función, y a que cuando
se
ejecuta es ta instancia produce
que e l
programa se detenga excepto la s
interrupciones)
con lo
cua l
no lee
sensores,
n i
real iza cá lcu los
en e l t iempo especif icado.
Para t iempos mayores a decenas d e
mil isegundos
no s e
recomienda es ta función.
Retorna
u n
va lo r
e n
m il isegundos
qu e
Arduino
se
encuentra ejecutando el programa.
Retorna
el
m í n i m o
y el máximo entre su s
parámetros .
Funciones
de
generación
aleator ia
nl jirrd)
u »
) ,
i : i i i d o m ( m i n ,
m a x )
Determina un valor de inicio como e l punto de
part ida para l a f u n c i ó n
r an d o m Q .
Entrega u n
valor aleatorio e n t r e
e l
rango
indicado.
P u e r t o
s e r i e
n l . b i H ¡ n ( r a te )
i i l . p r i n t l n ( d a t a )
u l . r e a d Q
i i l . a v a i l a b l e O
P e r m i t e
e l u s o d e l
p u e r t o s e r i e
y
d e t e r m i n a
l a
v e l o c i d a d d e t r a n s m i s i ó n .
P e r m i te e n v i a r d a t o s a l p u e r t o s e r ie
L e e l o s d a t o s d e l p u e r t o
s e r i e .
D e v u e l v e
e l
n ú m e r o
d e
c a r a c t e r e s p r e s e n t e s
e n
el p u e r t o
s e r i e .
28
l i
Librerías
I
1 1 1 1 1 1
h r c r í a n o e s m á s q u e u n c o n j u n t o d e códigos empaquetados
v 1
lo s
c | i i e podemos llamar desde nuestro programa,
f a c i l i ta n d o
t i
d e s a r r o l l o
d e l programa, puesto q u e aprovecha u n código y a
ixiltente.
8/16/2019 Libro- Ing. Santiago Manzano Diseño y Proyectos Básicos Arduino
17/47
Para usar se tiene que im portar a nue stro código con la palabra
reservada
include
Si se requiere instalar una librería hay q ue descargarla y copiarla
en
la carpeta libraries del directorio, don de se guarda n nuestros
sketches de arduino.
ibrerías básicas
L i b r e r í a s
E E P R O M
E t h e r n e t
F i r m a t a
L i q u i d C r y s t a l
S D
S e r v o
S P I
S o f t w a r e S e r i a l
S t e p p e r
W i r e
D e t a l l e s
P e r m i t e
l e e r
y
e s c r i b i r
e n a l m a c e n a m i e n t o
p e r m a n e n t e
P e r m i t e c o n e c t a r a i n t e r n e t .
C o m u n i c a c i o n e s u s a n d o
u n
p r o t o c o l o
c o n c r e t o .
P e r m i te e l m a n e jo d e L C D .
L e c t u r a y e s c r it u ra e n t a r j e t a s S D .
C o n t r o l d e S e r v o s .
C o m u n i c a c i o n e s c o n d i s p o s it iv o s u s a n d o S P I.
P e r m i t e c o m u n i c ac io n e s ser i e p o r o t r o s p i n e s .
C o n t r o l d e m o t o r es p a so a p a s o .
c o m u n i c a c i o n e s I 2 C
O l í a s
ibrer ías
M
r r
n i i i i i i c i i l i o n
( n c t w o r k i n g
a n d p r o t o c o l s ):
e n g c r
S o f l S c r i i l
I V I r e
v c y b o i i r d
i l c
l y i c s s i i g c S y s t e m
l lI J M o b l lc
i l i i l i m
K i i n l r o l
P r o c e s a m e n s a j e s d e t e x t o p r o v e n i e n t e s d e l
P C .
V e r si ó n m e j o r a d a
d e
S o f t w a r e S e r i a l .
P e r m i t e la c o m u n i c a c i ó n c o n
d i s p o s i t i v o s
d e
D a l la s (f a b r i c a n t e d e d is p o s i t iv o s e l e c t ró n i c o s )
q u e u sa n e s t e p r o t o c o l o .
L e e c a r a c te r e s d e s d e u n t e c l a d o P S 2 .
E n v i a r m e n s a j e s e n t re a r d u in o y e l P C .
E n v í a m e n s a j e s d e t e x t o y
e m a i l
d e s d e e l
m ó v i l ( v ía c o m a n d o s A T ) .
S e r v i d o r
w e b
p a r a u s a r
c o n
a r d ui n o E t h e r n e t .
E n v í a s e ñ a l e s
d e l
p r o to c o l o X I
0
u s a n d o
lo s
c a b l e s e lé c t r ic o s d o m é s t ic o s .
C o m u n i c a c i o n e s X B e e s
e n
m o d o A P I.
C o n t r o l r e m o t o d e o t r o s A r d u i n o s p o r m e d i o
d e c o m u n i c ac io n e s ser i e
S r i m l n g :
( i i | i u c i l i v c S e n s i n g
D v b o u n c c
P e r m i t e u s a r d o s e n t r a d a s c o m o s e n s o r s
c a p a c i t i v o s .
P e r m i t e u s a r a n t i - r e b o t e
e n
e n t r a d a s
l ' u i i l u l l í i s \s
I m p n r n - t l L C D
l i b r a r y
( L C D
M e j o r a la
l ib rer ía
L C D
l i b r a r y
P e r m i t e m a n e j a r L C D s g r á f i c a s b a s a d a s
c h i p
K S 0 1 0 8 o
e q u i v a l e n t e .
en e l
8/16/2019 Libro- Ing. Santiago Manzano Diseño y Proyectos Básicos Arduino
18/47
L e d C o n t r o l
L e d D i s p l a y
M a n e j a
m a t r i c e s d e
l e d s
c o n c h ip s M A X 7 2 2 1
o M A X 7 2 1 9 .
C o n t ro l a p a n t a ll a s b a s a d a s e n H C M S - 2 9 x x
c o n s c r o l l.
M o to re s y P W M :
T L C 5 9 4 0
P e r m i t e
e l u s o d e l
c h i p T L C 5 9 4 0 1 6 c a n a l e s
c o n P W M d e 1 2 b it PW M .
M a n e j o d e l t ie m p o :
D a t e T i m e
M e t o
M s T i m e r l
A y u d a
c o n e l
t r a b a j a r
c o n
f e c h a s
y
h o r a s .
A y u d a a m e d i r in t e rv a l o s t e m p o r a l e s f i jo s
P e r m i te e j e c u ta r t a re a s c a d a N m i li se g u n d o s
( u s a 2 t e m p o r i z a d o r e s ) .
L i b r e r í a S e r v o
P e r m i t e c o n t r o l a r h a s t a 1 2 s e r v o s e n u n a r d u i n o U N O y 4 8 e n u n a r d u i n o M e g a
a t t a c h ( p i n )
w r i t e ( a n g u l o )
r e a d O
a t t a c h e d O
d e t a c h O
C o n e c t a e l o b j e t o s e r v o c o n e l p i n d a d o .
E s t a b l e c e
la p o s ic ió n d e l
s e r v o .
D e v u e l v e
la p o s i ci ó n d e l
s e r v o .
C o m p r u e b a s i
e s t á c o n e c t a d o .
D e s c o n e c t a e l p i n d e l s e r v o .
C P I T U L O
II
P R O T E O S
I
I n t r o d u c c i ó n
32
l i o i r u s
es un software para el diseño de circuitos eléctricos y
• I r r i m i l icos
con los
cuales
se
pue de realizar proyectos com pletos
un
sle
ám bito.
Proteus
es
desarrollado
po r
Labcen ter Electronics
i | i n -
ronsta
de los dos
program as principales: Ares
e
Isis
• \
I
S
Advanced
Routing
and
Editing
S oftware)
es la
herram ienta
d i
r u m i ad o , ub icación
y
edición
d e
componentes,
se
utiliza para
l n I , i l n
icación
de placas de circuito im preso.
I . I
i
( 1 1 1 1 c 1 1
i
gent S chematic Input S ystem) perm ite diseñar el plano
l <
• 1 1 i ro de l circuito que se desea realizar con componentes m uy
v i i i , i d o s .
I
u . i de
las
prestaciones
de
Proteus, integrada
con
I S I S ,
es V SM
i
V n
1 1 u i l
S ystem
M odeling), con la cual se puede sim ular en tiem po
i r a l l óe l a s las características de varias f a m i l i a s de
m u u n on iroladores, así com o la simulación d e arduino.
/
n I o n i o Gráfico
S S
I u
i
, 1 . 1 he r r a m ie n ta se
p ue d e n
crear
diseños
de
circuitos
•
l i
i
i i o i i i i os y se puede probar su funcionam iento gracias a la
• • m m l i u
i o n .
8/16/2019 Libro- Ing. Santiago Manzano Diseño y Proyectos Básicos Arduino
19/47
En
este libro
se
explicará
de
manera rápida sobre
la
utilización
de esta herramienta así como la colocación de componentes en
la hoja de
trabajo.
Para
comenzar
se
debe abrir
el
programa Proteus desde
el
icono
ISIS presentándose una ventana con un entorno de trabajo como
el
que se
indica
en figura
2.1 conformado
por
varias barras
de
herramientas.
I - V K I N T A N A
DE
VISTA PREVIA vista previa d el circuito o
• l i los
e l emen tos
del diseño.
SULKCTOR DE OBJETOS en esta ventana aparecerán
> : ;
com ponen tes
y
otros elementos disponibles dependiendo
l e |
m o d o
seleccionado
y
desde allí podremos elegirlos para
co loca r lo s en el
diseño.
lt > K I E DE
HOJA la línea de color azul determina e l límite
de
la hoja de trabajo; debemos colocar el circuito dentro de
VENTANADE EDICIÓN es la ventana donde dibujaremos
l o : c i r c u i t o s electrónicos colocando lo s componentes
i in conectándolos
y
agregando también otros instrumentos
v
herramientas.
J 1 1 A K RA DE
ESTADO
aquí aparece información útil
de lo
i | i i c tengamos
seleccionado
o del
elemento sobre
el
cual
se
encuentre el
cursor
de l
mouse
en ese
momento.
i
I t AKRA D E
COORDENADAS en esta barra podemos ver
l . i s coordenadas donde
se
encuentra
e l
cursor
en
todo
i
noinento mientras lo desplazamos por la ventana de edición.
/ S IMULAC IÓN : aquí podemos encontrar lo s controles de
simulación
Figura 2 1: I E E PROTEUS
5
8/16/2019 Libro- Ing. Santiago Manzano Diseño y Proyectos Básicos Arduino
20/47
2 3 M anejo Arduino en Proteus
Para la simulación abrimos el ISIS de Proteus, el cual muestra
una pantalla como la que se
indica
en la figura 2.2
1 J : i.
i
UJUJU.1..1
Figura
2 2:
Interfaz
de
ISIS
Proteus
En la
paleta
de
dispositivos, agregar
el microprocesador a
utilizar,
en este caso es el ardu ino MEGA 2560, com o indica en l figur
2.3
6
p [»
t _
l í i r t f t t
„
- f e »
i^^Mt
s « i » f e u « «« ¿i,;?
Figura 2 3: Interfaz Ardu ino MEGA 2560
> I .
misma
forma como
se
añadió
el
arduino,
se
tiene
que
Idlcionar los diferentes dispositivos a utilizar en el circuito, como
II
i n d i c a
la figura 2.
4.
Figura
2 4:
Conexión de
d ispositivos
c on
Arduino MEGA2560
8/16/2019 Libro- Ing. Santiago Manzano Diseño y Proyectos Básicos Arduino
21/47
Cargue e l programa en el micro haciendo doble click sobre el
micro
de
arduino
y
seleccionar
el
archivo.
Figura 2 5:
Cargar
Código
a l
Arduino
Para
comprobar
el funcionamiento del
programa pulsar play
>¡? í
QX QI
• • • • • • • i .;«»
8/16/2019 Libro- Ing. Santiago Manzano Diseño y Proyectos Básicos Arduino
22/47
una pausa en este estado se utiliza la función delay
la
cual espera la cantidad de milisegundos indicado.
delay 5000);
El
programa completo
deberá
quedar como
se indica en la
Figura 3.1
í C £ i
,L«i
t feíih- a 1
S
» • *«4i«
Wi
Í
„ ,= {33603;
i
t
1
I
Figura 3 1:
Programa enciende
un Led
1 i l i i e i m i de conexión del circuito en ISIS Proteus se muestra
n ur
3.2 y la
conexión
física se
nuestra
en la figura 3.3
• «•« 3 2: Esquema de
conexión ISIS
roteus
encender
un Led
Figura
3 3
squema conexión
física
para encender
el led
8/16/2019 Libro- Ing. Santiago Manzano Diseño y Proyectos Básicos Arduino
23/47
3 1 2 Encendido Progresivo y pagado de Led
El
programa va encendiendo progresivamente un
led
y luego lo
va apagando poco a poco.
El
código
del
programa queda
de
esta manera:
intledPin=9;
void setup () {
pinMode(ledPin,OUTPUT);
}
voidloopQI
for(inti=0;i0;i—){
analogWrite ledPin,i ;
delay lOO ;
Tcjíf^J.;-: r̂ ? »-
l£O I _
• • »:-«
,L»J.«•*»»(
Figura 3 4: Esquema de conexión ISIS Proteus encender un Led
Figura
3 5:
Esquema conexión física para encender el led
8/16/2019 Libro- Ing. Santiago Manzano Diseño y Proyectos Básicos Arduino
24/47
3 1 3 Secuencia
de Leds con un
pulsador
El
programa enciende
los
leds
de
manera
secuencial,
como
si
se
tratara de las luces del auto fantástico, siempre que se
presione el pulsador.
El
código para
su
funcionamiento
es el
siguiente:
int leds[]={5,6,7,8}; // Vector de puertos de salida
intpulsador=9;
inttiempo-20;
int
n=0;
void
setupQ
{//comienza la configuración
for n=0;n
8/16/2019 Libro- Ing. Santiago Manzano Diseño y Proyectos Básicos Arduino
25/47
Figura 3 6:
Esquema
de
conexión
de la
Secuencia
de
leds
con un pulsador ~ 3 7: Esquema d e conexión física Secuencia de leds
con u n pulsador
6
I
Hice
d e
Semáforos
l p i o i . r a i n a
controla
lo s semáforos
para
el cruce e n u n a
iel
sección.
Figura
3 8: Cruce
en una
intersección
I
I
i ó c l i g o
para
su
funcionamiento
es el
siguiente:
U x
={2,3,4,5,6,7};
m i irmpo=3000;
m i
l n . i n p o l = 5 0 0 ;
\ t i i d
setup(){
l » > r ( i n t n = 0 ; n < 6 ; n + + )
I
pinMode(x[n],OUTPUT);
8/16/2019 Libro- Ing. Santiago Manzano Diseño y Proyectos Básicos Arduino
26/47
void
loop )
{
digitalWrite x[0],HIGH);
digitalWrite x[3] HIGH);
delay tiempo);
digitalWrite x[3],LOW);
digitalWrite x[4],HIGH);
delay tiempol);
digitalWrite x[4],LOW);
digitalWrite x[5],HIGH);
digitalWrite x[0],LOW);
digitalWrite x[2],HIGH);
delay tiempo);
di
g
italWrite x[2],LOW );
digitalWrite x[l],HIGH);
delay tiempol);
digitalWrite x[l],LOW);
digitalWrite x[5],LOW);
48
i i « I p i o i c u s insertamos las librerías de arduino mega2560 y el
M i l u - h j J U s .
I
luura 3 9: Esquema de conexión en ISIS Proteus Cruce de Sem áfores
Figura 3 10: Esquema conexión física Cruce Semáforos
8/16/2019 Libro- Ing. Santiago Manzano Diseño y Proyectos Básicos Arduino
27/47
3 1 5 Contador
de O a 99 con dos displ y de 7 segmentos
El programa cuenta del O al 99 utilizado dos displays de 7
segmentos.
El código para su funcionamiento es el siguiente:
>
in t disp[] = {2, 3 , 4 ,
5,
6 ,7 ,8};
in t displ[]
= {22,23,24,25,26,27,28};
bytedigi ts[10][8]=
{
/ / a b c d e f g .
{ 1, 1, 1, 1, 1, 1, O, 0}, // O
{ O, 1, 1, O, O, O, O, 0}, // 1
{ 1, 1,0, 1,
1,0, l , 0} ,/ /2
{ 1, 1, 1,
1,0,0,
1,
0 } , / / 3
{ O, 1, 1,
0,0,
1, 1,
O } , / /
4
{ 1, O, 1, 1, O, 1, 1, O } , / / 5
{ 1,0, 1, 1, 1, 1, 1, 0 } , / / 6
{1,1, 1, O , O, O, O,
0},
// 7
{ 1, 1, 1, 1, 1, 1, 1, 0 } , / / 8
{ 1, 1, 1, 1,0, 1, 1, 0} II
I i
u n í
x l 0 ; x l
8/16/2019 Libro- Ing. Santiago Manzano Diseño y Proyectos Básicos Arduino
28/47
Figura 3 11: Esquema de conexión Contador del O al 99
Figura 3 12 Esquema
de
conexión
física
Contador
O al 99
5
»
Proyecto con recuencias
\ l \r
I
p i o j ' . i í i m a
consiste
en
generar
un
tono, como
una
señal
de
I N O .
n i ; ; U programa se utiliza la función tone ( ), en la cual se
i
i l ilr cc el pin de salida, la frecuencia
y
la duración de esta.
i j ' . o para su funcionamiento es el siguiente:
lil
( " K m i ();i < > , (.60,
100);
I .
\ ,\ \
/ . S ) ;
53
8/16/2019 Libro- Ing. Santiago Manzano Diseño y Proyectos Básicos Arduino
29/47
Figura
3 13: Esquem a
en
ISIS Proteos Zumbador
Figura 3 14:
Esquema F ísico Zumbador
5
. . ¿ ariación de recuencias
I u
. 1 u n B u c l e d e Re p r o d uc c i ó n d e so n i d o s , en el que la
l u í i i i - n c i a sea cada v ez menor y aumente la longitud, es decir:
1 1 .
( I i
n,
I recuencia_baj
a,longitud_aumenta)
|| ü i
> < l i ; ; o para
su
funcionamiento
es el
siguiente:
n i l
1 m S o n i d o
=11;
i i i d :,ckip )
{
I
n i iMode(PinSonido,OUTPUT);
\ | loopQ {
m i
l i ccuenci a
= 4978;
m i
lon gi tu d
= 3 0 ;
\ \ l n l e (frecuencia > 3 1 )
lone(PinSonido, frecu encia, longitud);
dclay(longitud);
l iccuencia =
frecuencia
- 95;
lon gi tu d
=
longitud
+10;
hoTonc(PinSonido);
d i l u y ( 2 0 0 0 ) ;
55
t onidos
8/16/2019 Libro- Ing. Santiago Manzano Diseño y Proyectos Básicos Arduino
30/47
R Í
Figura 3 15:
Esquema
en
ISIS Proteus Variación de Frecuencias
Figura 3 16: Esquema Físico Variación de Frecuencias
56
i
n
. u i o n d e s o n i d o s
c o n nota musicales p o r
m e d i o d e
la
l i b r e r í a
l l
Ill K.ll
i
n l i j o p a r a s u
funcionamiento
e s e l
siguiente:
h u í
l u i k pitches.h
n i i . : ; i n th e melody:
m i m . - l t ) d y [ ] = {
N O T E _ D O , N O T E
R E ,
N O T E _ M I , NOTE_FA,
N <
> I
l
SOL, NÓTENLA,
N O T l i
S I } ;
n o l c
durat ions: 4
=
qua r t c r
n o l c ,
8 =
eighth
note, etc.
l u í
no lcDura t ions [ ]
= {4,8 } ;
M i u l
setupQ
mi
pausa_ent re_notas
1 0 0 0 / 8 )
*
1.30;
| ) i nMode 1 0 , O U T Í M I I ) ;
p i n M o d e l l, O U T I H I I ) ;
l i g i t a l W r i t e 1 0 , H I i l l ) ;
l b r i n t i = l ; i < 4 ;
ü
)
i
l u ii e l l ,N O T E J v V S ) ;
i l c lay pausa_ent rc n o i i i s ) ;
l o n e l l, N O T E _ l) 0 , X ) ,
i . . . . . ( I
I . N ( ) l l ;
I ( A , S ) ;
8/16/2019 Libro- Ing. Santiago Manzano Diseño y Proyectos Básicos Arduino
31/47
delay pausa_entre_notas);
tone ll,NOTE_FA,8);
delay pausa_entre_notas);
tone ll,NOTE_SOL,8);
delay pausa_entre_notas);
tone ll,NOTE_LA,8);
delay pausa_entre_notas);
tone ll,NOTE_LA,8);
delay p
ausa_entr
e_notas);
tone ll,NOTE_SOL,8);
delay pausa_entre_notas);
tone ll,NOTE_SI,8);
delay pausa_entre_notas);
tone ll,NOTE_LA,8);
delay pausa_entre_notas);
tone ll,NOTE_SOL,8);
delay pausa_entre_notas);
tone ll,NOTE_FA,8);
delay pausa_entr e_notas);
tone ll,NOTE_FA,8);
delay pausa_entre_notas);
i l . l , i i | i . n i . . , i m i r e
notas) ;
í
i
I I . N O T I Í M I , 8);
I
l . r ,
( p . n i s i i
cnlrcjiotas);
i . . . . . i I I .N ( ) T l í _ R E , 8 ) ;
I . l . i \ ( | ) ; u i s a cntre_notas);
l l l o l
I I .N O T E _ D O , 8 ) ;
d > lny(pausa_ent re_notas) ;
I . . M . ( I I , N ( ) T E _ S O L , 8 ) ;
i k l , n (
pausa_entre_notas);
. . . . . . - ( I I , N O T E _ S O L , 8 ) ;
i l «
i is lpausa_entre__notas) ;
l M i i f ( l l , N O T E _ D O , 8 ) ;
i | c lnv(pausa_entre_notas) ;
| M I I , (
I 1, N O T E _ D O ,8 ) ;
1 1 r I a v (
pausa_entre_notas)
;
i i . n . - ( l l , N O T E _ R E , 8 ) ;
i d luy(pausa_entre_notas);
I r
l n y ( pausa_entre_notas);
i n i i l - ( l l , N O T E _ F A , 8 ) ;
59
8/16/2019 Libro- Ing. Santiago Manzano Diseño y Proyectos Básicos Arduino
32/47
delay pausa_entre_notas);
tone ll,NOTE_FA,8);
delay pausa_entre_notas);
}
noTone ll);
digitalWrite 10,LOW);
}
void loop() {
// Loop s i gn i f i c a el buc l e a repetir, siempre
Üt
Figura
3 17: squema en
ISIS roteos
Sonidos
co n
librería
pitches h
60
Figura 3 18: Esquema Físico Sonidos co n librería pitches h
\
\s
Entradas
y
Salidas
V \ I ontrol de Temperatura
I
u
o) -. r am a
consiste
en
tomar
la
temperatura
del
sensor LM35
\
I M
s e n t a r este
dato en un LCD.
I
I I
M
í 5
e s un
sensor
d e
temperatura con una precisión calibrada
i ' I < ' . Su rango de medición abarca desde -55°C hasta 150°C.
I
, i
' . a l id a e s lineal y cada grado centígrado equivale a l Om V, por
l i I , m í o :
I M ) " C = I S O O m V
40°C = -400mV
61
\r analógico de
tensión.
8/16/2019 Libro- Ing. Santiago Manzano Diseño y Proyectos Básicos Arduino
33/47
TO 22
Plástic Pacfcage
O
M
56
S
U U U
%y<
N
Figura 3 19: Esquema LM 5
Arduino proporciona varias patillas con capacidad para leer valores
analógicos. Cuando
se lee un
valor
se
tiene
una
resolución
de
10
bits, lo que quiere decir que podremos obtener valores entre O y
1023.
Para leer estos valores se utiliza la función:
analogRead(pin);
Para calibrar
el
valor leído
del
sensor
se
utiliza
el
siguienti
algoritmo:
sensorValue = ( 5.0 *
analogRead(sensorPin)
* 100.0) / 1024.0;
En
donde:
6
\ i , i I d ) , icad = lectura analógica de tensión.
I u n
1
1 Resolución d e
lectura
e n
microsegundos.
I
•
l
o
2 10 ,
valor binario
de 10
dígitos binarios.
I n* módulos LCD se encuentran en
diferentes
presentaciones,
I ..... n
i n p l o
2x16 (2 líneas de 16 caracteres), 2x20, 4x20, 4x40,
a
continuación describe en detalle los pines de l módulo
D
l ' I N
B BHfc
J
-
»
1
1
/
1
' *
t
l i
4
»
1 ')
SÍMBOLO
vss
V D D
v o
R S f f
R W »
E
D L
D i
D2
D3
D 4
D5
D6
D7
L E D +
I E D ~
Nombre
y
función
b : ; £ (
ríe
ira ? v )
Al imer.t ac i
n
- r T - V
Ar.:.-'te
del : _ r - i
t - i -
G i - l e -
: i > - n
DATO
^ I I T F
L
I- ~ ' la o e o c i i * ~ r- i
-i L ' D
r. -,' i l- tací r.
D rit ner.
c .
' i ' . f i r s r i v
D «
D 2
D 3
D 4
D5
D 6
D 7
bit más sigificativo
Ánodo de LED backlight
Cátodo de LED backlight
Ñ u t a ; # significa negado.
8/16/2019 Libro- Ing. Santiago Manzano Diseño y Proyectos Básicos Arduino
34/47
El código para el funcionamiento del programa quedaría de la
siguiente manera:
include
LiquidCrystal lcd 12, 11, 5, 4, 3, 2);
int sensorPin = A O ;
int sensorValue = 0;
void
setup ) {
lcd.begin 16,2);
}
void loop )
{
sensorValue = 5.0 * analogR ead sensorPin) * 100.0) /
1024.0;
lcd.println sensorValue);
delay 3000);
i\inia 3 20: Esquema cone xión ISIS Proteus S ensor Te mperatura
Figura 3 21: Esquema conex ión física Sensor Tem peratura
I
iste sensor está configurado para
funcionar
cuando
no
exista
la
8/16/2019 Libro- Ing. Santiago Manzano Diseño y Proyectos Básicos Arduino
35/47
3 3 2 Control de luz con AC
El programa consiste en utilizar un sensor LDR para controlar
un foco de H O v .
El LDR es un componente electrónico cuya resistencia disminuye
con el aumento de intensidad de luz incidente
Al
utilizar
el LDR
como resistencia inferior
del
divisor
de
tensión,
se obtiene la tensión máxima cuando se tenga el LDR en plena
oscuridad, ya que opondrá el máximo de su resistencia al paso
de la corriente derivándose esta por
Vout.
Si se utiliza como
resistencia superior, el resultado será el inverso, la tensión será
máxima cuando esté completamente i luminado,
ya que se
comportará prácticamente como un cortocircuito, con una
resistencia de
50Q
o 100
Q
in rior
out
Figura 3 22: Esquema conexión LDR
presencia de
luz,
el
cual envía
una
señal
al
micro
y
este prende
una lámpara de HOv.
l
;
l
sensor está conectado
a la
entrada analógica
Al de
arduino.
I
; i salida
se
produce
en el
ping 13, salida digital,
con la
ayuda
de
u n transistor para amplificar la señal y disparar un relay que
funciona a 5v, el cual activa el paso de la corriente ac para
encender la
lámpara.
n sensorPin
= Al;
n t
sensorValue = 0;
n t
Foco=13;
void setup() {
pinMode(Foco,OUTPUT);
void
loopQ
{
sensorValue
= ( 5.0 * analogRead (sensorPin) *
100.0)
/1024.0;
/* Valores leídos Max= 499 en ausencia de luz
Min=166
iluminado com pletamente
*/
(sensorValué
>=
495)
i
gitalWrite(Foco,HIG H );
dse
il¡gitalWrite(Foco,LOW);
67
3 3 3
ontrol
de
Motores
DC
8/16/2019 Libro- Ing. Santiago Manzano Diseño y Proyectos Básicos Arduino
36/47
igura 3 23: Esquema ISIS
Proteos ensor de
Luz
13 24:
Esquema
físico
Sensor
de luz
8
í
este proyecto se controlará el giro de un motor de comente
direc ta DC).
Para
realizar
el
control
de
giro
se
utiliza
el
circuito integrado
1 293D el cual posee un Puente para cumplir con su cometido.
f
vea
igura
3 25: Diagrama
de
conexión
CIL 93D
8/16/2019 Libro- Ing. Santiago Manzano Diseño y Proyectos Básicos Arduino
37/47
intDerecha-2;
intlzquierda=3;
voi setup Í
voidloopOl
l
UalWnte Derecha,LOW ,l
Figura
3 26: Esquema
¡ Proteus Sensor de uz
70
Figura
3 27:
squema
físico
Sensor de luz
71
4
eclado
8/16/2019 Libro- Ing. Santiago Manzano Diseño y Proyectos Básicos Arduino
38/47
En este proyecto se utilizará un teclado 3 X 4, de 12 teclas (0-
9,*, ) para
el
control
de
acceso
por
clave.
El
esquema
del
teclado
se
indica a continuación:
Figura
3 28 :
squema Teclado
Para
realizar este prog ram a se utilizará la librería ,
la cual permite leer los datos de un teclado matricial. Esta librería
hay que descargar desde el sitio http://playground.arduino.cc y
guardarla
en la carpeta libraries del IDE de arduino.
Reiniciar el IDE del arduino y la barra de menú insertar esta
librería al program a, como se indica en la figura 3.29.
Archivo tdter
Ssíícn
Hciramientas
Ayuda
• er i f icar
Compilar
Ctri R
M ostrar la
C a r p e t a
de Sk etch Ctri K
Aoriíid? A , c h ; v o , , ,
impor tarL íbr toa . . .
Figura 3 29: Insertar Librería
Keypad h
El código para el funcionamiento de la aplicación es el siguiente:
include
include
73
72
// initialize the library with me num bers of the interface pins
8/16/2019 Libro- Ing. Santiago Manzano Diseño y Proyectos Básicos Arduino
39/47
LiquidCrystal lcd(12, 11, 25, 24, 23, 22);
const
byte
numFilas = 4;
const byte
numColumnas = 3;
//Matriz que
contiene
los
números
de l
teclado
const char teclas [numFilas] [numColumnas] = {
{' ', '2',
'3' } ,
{'4', '5',
'6' } ,
{'7',
'8',
'9' },
{ '*', 'O ' , '#' }
//Fines
de
entrada para
la
Filas
y
columnas
byte filaPins [numFilas] = { 2, 3, 4, 5 };
byte columnaPins [numColumnas] ={6,7,8};
//Crear el teclado
Keypad keypad
=
Keypad(makeK eymap ( teclas) , f i laPins,
columnaPins, numFilas, numColumnas);
Stringingreso= ;
void
setupQ
Serial.begin(9600);
// Establece e l número de filas y columnas en el LCD:
lcd.begin(16,2);
for (int fila = 0; fila < num Filas; fila++ )
{
pinMode(filaPins[fila],INPUT);
;
digitalWrite(fílaPins[fila],HIGH);
}
for (int column = 0; column < numColumnas; column++ )
{
pinMode(columnaPins[column],OUTPUT);
digitalWrite(columnaPins[column],HIGH);
} . : .
lcd.setCursor(0,0); 1 ' ^
lcd.println( Ingrese
la
Clave ); :
lcd.setCursor(0,
1);
;
lcd.príntln( +* );
} .
v
• • .
void
loop(){
75
8/16/2019 Libro- Ing. Santiago Manzano Diseño y Proyectos Básicos Arduino
40/47
char key
=
keypad.getKeyQ;
icd.clear();
Serial.println(key);
lcd.println(key);
ingreso
+=
key;
if key
'*'){
if(ingreso== 1234* ){
Icd.clearQ;
lcd.println( Puerta
Abierta );
ingreso= ;
}
else{
Icd.clearQ;
lcd.println( Clave Incorrecta );
ingreso= ;
í íSí|
9
Figura 3 30: Esquema ISIS
Proteus
Contro p
r
Teclado
Figura
3.31: Esquema de conexión física Contro
Teclado
77
8/16/2019 Libro- Ing. Santiago Manzano Diseño y Proyectos Básicos Arduino
41/47
C O M 2
3 4 2 Protoco lo de Comu nicación I2C
8/16/2019 Libro- Ing. Santiago Manzano Diseño y Proyectos Básicos Arduino
42/47
¡o
serie
puerco
serie
jswsrt» serie
pBeziSQ aerie
poertx
13O
írto serie
ot i»
Rwtsstea ptierto
ís ri
stelwsl&a
puerto
a«.rie
PxKudba
pu»r tx>
«trie
x t d k poerto sfeZ-le
ppKaseilB*
s««rto
s«ri 137
gjAutoswe É̂lŜ SfeS..̂ ̂ :
9
?
OÍ>
Figuro
3 34: So/ido
del uerto
comZ
Figura
3 35:
Esquema
físico
de conexión Puerto serie
El protocolo d e comunicación I2 C consta de l as s igu ien tes
características:
B u s de comu nicaciones en serie.
Velocidad d e lOOKbits por segundo en el mod o estándar.
Dos
líneas
d e
comunicación b id ireccionales
SDA(SignalData)
SCL (Signal Clock)
Comunicación
Master—
Slave.
l ibrería W ire permite comu nicar con d isposit ivos I2C y
Arduino.
Para
la
lectura
d e
datos desde
el
sensor
al
ardu ino
se
presenta
el sigui ente programa:
inc lude
int dirección = 0; //dirección: la localización en donde escribir,
desde O
a
511 (int)
int pinlectu ra=l
3;
int d ireccion_sensor=77;
int temperatura=0;
byte envio=0;
81
void setupQ
{
W
jj.¿SSÜÍÍÍ Í
8/16/2019 Libro- Ing. Santiago Manzano Diseño y Proyectos Básicos Arduino
43/47
W ire.beg in );//Inicializa la librería W ire
void loopQ
{
//sensor de
temperatura
Wire.beginTransmission direccion_sensor);/*Comienzala
transmisión al dispositivo I2C esclavo con la
dirección */
envio=0;
W ire.write env io);/*Escribe datos desde un dispositivo esclavo
en
respuesta
a una
solicitud
de un
Maestro*/
W ire.endTransmission );//Finaliza una transmisión a un esclavo
W ire.reque stFrom direccion_sensor,l);/*Solicitabytes
de
otro
dispositivo, se p one 1 para
pedir
al
sensor
de
tem peratura
qu e
envíe
los
datos*/
while Wire.available )==0);
//Devuelve el
número
de
bytes
disponibles para recupe rar
temperatura=Wire.read ); //Lee lo s byte que fueron
transmitidos
Q¡;|;.;̂ ĵ l¡||.̂
fl:t:F-í+
ASK
ípe
Figura 3 36: Esquema conexión del sensor con arduino
Figura 3 37: Esquem a de conexión física de l s nsor y arduino
Dfriuras.» .
3 4 3 Transm isión serie
del
valor
de
temperatura
En las
líne s
de com unicación se conectan resistencias con una
configuración pull-up de 10KÚ , con lo que provoca que en el
8/16/2019 Libro- Ing. Santiago Manzano Diseño y Proyectos Básicos Arduino
44/47
utilizando
el
Protocolo
de
Comunicación
I2C y
Almacenam iento en la
memoria EEPRO M
En
el proyec to se utiliza un sensor de temp eratura que permite la
comunicación con Arduino por medio del protocolo I2C. Para el
almacenamiento
de los
datos adquiridos
se
utiliza
la
memoria
EEPR OM de Arduino y además se realiza la transmisión de los
datos
por medio del puerto serial.
El sensor de temperatura I2C utilizado es el TC74A5 que tiene
una
dirección por
defecto
de 77 en decimal, ésta dirección permite
conectarse por m edio del protocolo I2C que posee Arduino m ega
(Ver figura 3.38)
TO 22
Figura 3 38: Esquema conexión
IC
TC74
84
mo men tos que no exista com unicación con los dispositivos de la
red se
mantenga
la
línea
de
com unicación
con una
tensión
de 5
voltios.
En proteus se hizo la simulación del puerto serial com 3 por
medio del programa
Configure
V irtual Serial
Port
Driver, el cual
permite
la
simulación
de un
puerto
serie en el
caso
que la
computadora
no disponga de éste.
Para control del almac enam iento de los datos se usa un switch el
cual cuando está desactivado guarda los datos en la memoria
EEPRO M, m ostrando la temperatura en el LCD y enviando los
datos
al
puerto serial com3.
Cuando está activado lee los datos de la memoria EEPRO M de
arduino, mo strando en el LCD y enviando los datos al puerto
serial com3 .
El código para el funcionamiento de la aplicación es el
siguiente:
include
include
include
// la dirección actual en la EEPROM // (p.e. cual es el
siguiente byte
a
escribir)
in t
dirección
= 0;
//dirección:
la
localización
en
donde
escribir, desd e O a 511 (int)
int pinlectura=
13;
int direccion_sensor=77;
85
int temperatura=0;
Wire.requestFrom(direccion_sensor,l);/*Solicita bytes de
otro dispositivo, se pone 1 para pedir al sensor de
8/16/2019 Libro- Ing. Santiago Manzano Diseño y Proyectos Básicos Arduino
45/47
byte envio=0;
LiquidCrystal
lcd(12, 11, 5, 4, 3, 2);
void
setupQ
{
lcd.begin(16,
2);
Serial.begin(9600);//Establece la
velocidad
de
transmisión
Wire.begin();//Inicializa la librería Wire
Serial.println("Inicio
del
programa");
loop {
//sensor
de
temperatura
Wire.beginTransmission(direccion_sensor);
/* Comienza la transmisión al dispositivo I2C esclavo con
la
d irección*/
envio=0;
Wire.
write(envio);
/^Escribe datos desde un dispositivo esclavo en respuesta
a una solicitud de un maestro*/
Wire.
endTransmissionQ;
//Finaliza
una transmisión a un esclavo
86
temperatura que envíe los datos*/
while(Wire . available()=0) ;
/*Devuelve
el
numero
de
bytes disponibles para
recuperar*/
temperatura=Wire.read();
//Lee
los
byte
qu e
fueron transmitidos
S erial.print(temperatura)
;
Serial.println("C");
delay SOO);
dirección = dirección + 1
;
if
(dirección
==
512) dirección
= 0;
delay lO O );
EEPROM.write(direccion, temperatura);
//Guarda los
datos leídos
if(digitalRead(pinlectura) =
HIGH
)
{
//Comprueba
el
estado
del
switch
Icd.clearQ;
lcd.println(temperatura,DEC) ;
lcd.print("C");
87
else{
8/16/2019 Libro- Ing. Santiago Manzano Diseño y Proyectos Básicos Arduino
46/47
Icd.clearQ;
lcd.println( Lectura de Datos );
delay SOO);
lcd.clear();
int valor
= EEPROM.read(direccion);
lcd.print(direccion);
lcd.print( \t );
lcd.print valor, DEC);
Icd.printlnQ;
dirección
=
dirección
+ 1;
//incrementa la
dirección
de
memoria
if
dirección 512)
dirección
= 0;
delay SOO);
}
Icd.displayQ;
delay SOO);
88
Figura 3 39: Esquem a conexión en ISIS Prote>
u
Esquema de conexión
física
de Arduino y TC74A05
ibliogr fí
8/16/2019 Libro- Ing. Santiago Manzano Diseño y Proyectos Básicos Arduino
47/47
>
http://arduino.cc/es/Guide
http://fritzing.org
> G a r c í a
Breijo
E d u a r d o .
2008).
C O M P I L A D O R C C C S Y
S I M U L A D O R
PROTEUS
PARA
M I C R O C O N T R O L A D O R E S PIC.
MÉXICO.
A L F A O M E G A .
> Grupo
Sabika. 2010). EJERCICIOS
D E
A R D U I N O RESUELTOS
[en línea].