You are on page 1of 49

INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO “UNITEK”

CARRERA PROFESIONAL DE COMPUTACIÓN E


INFORMÁTICA
LETRERO LED PROGRAMABLE, UTILIZANDO EL
ARDUINO Y EL REGISTRO DE DESPLAZAMIENTO
74LS164 – JULIACA , 2017 – 2018
PRESENTADO PARA OPTAR E TÍTULO DE PROFESIONAL
EN COMPUTACIÓN E INFORMÁTICA
AUTOR(A):
DIEGO EDUARDO SOTO CUSIHUALLPA
ASESOR(A):
JUAN ERNESTO PUMA QUISPE
JULIACA--PERÚ
2018

1
AGRADECIMIENTO

A Dios, por haberme guiado por el buen


camino, y mantenerme firme es fe.

Hebreos 11.1
La fe es la certeza de lo que se espera y
la convicción de lo que no se ve

Marcos 9.23
Al que cree todo le es posible

2
AGRADECIMIENTO

Agradezco a Líder por haberme


alentado a seguir en los caminos
de Dios.

Job 28.12
Mas ¿dónde se hallará la sabiduría?
¿Dónde está el lugar de la inteligencia?

Job 28.28
He aquí que el temor del Señor es la
sabiduría, Y el apartarse del mal, la
inteligencia.

3
DEDICATORIAS

Esta tesis se la dedico a mi mamá


porque ella invirtió los mejores
años de subida en mi educación,
led doy las gracias por todo lo que
hiso por mi hasta el último día de
su vida

Esta tesis se la dedico a Dios quién supo


guiarme por el buen camino, dándome
las fuerzas para seguir adelante y no
desmayar en los problemas que se
presentaban, enseñándome a enfrentar
las adversidades sin perder nunca la
dignidad, ni desfallecer en el intento.

A mis padres Pedro y Juana, por ser


un ejemplo para mí, por su apoyo
constante, y su inmenso cariño.

A mis Líder Rene por sus contantes oraciones


y fortalecer mi espíritu, por apoyar en eso
momentos más difíciles y a ayudarme a
diferenciar entre el bien y el mal.

4
INTRODUCCION

Para reducir gastos, usaremos el simulador de circuitos electrónicos ISIS PROTEUS, una
ves armado bien el circuito, podremos armarlo físicamente, y así reducir gastos en re
emplazar componentes que quemamos

Hablaremos de circuitos eléctricos, electrónicos y de algunos componentes electrónicos

Hablaremos del Arduino, tato como su IDE Arduino como, el hardware de Arduino y su
programación, en la programación aprenderemos a declarar variables, matrices,
funciones, etc.

Hablaremos del registro de desplazamiento 74ls164, que el que nos ayudara a manejar
nuestra matriz, al reducirnos la cantidad de columnas que sea a solo 3.

La finalidad de este proyecto es que aprendamos como es que funcionan las matrices de
leds, les dare un pequeño resumen de lo que habla el proyecto.
El Arduino es el que contiene todo el código de programación, específicamente el
ATmega 328 convertido a lenguaje maquina (lenguaje hexadecimal), que es el que envía
los datos al registro de desplazamiento y este es el que hace que se prendan los leds y e
desplacen de derecha a izquierda

5
contenido del proyecto ................................................................................................................. 7
1 DATOS INFORMATIVOS .............................................................................................................. 7
2 MARCO TEÓRICO ........................................................................................................................ 7
2.1 el microcontrolador............................................................................................................. 7
2.2 software para programar microcontroladores ................................................................... 9
2.2.1 JUST BASIC .................................................................................................................... 9
2.2.2 CCS C COMPILER........................................................................................................... 9
2.2.3 PICKIT.......................................................................................................................... 10
2.3ARDUINO ........................................................................................................................ 11
2.3.1 Software Arduino ........................................................................................................... 11
2.3.2 Placa arduino uno....................................................................................................... 12
2.4 MATRIZ LED ........................................................................................................................... 13
2.5 PROTEUS................................................................................................................................ 14
2.5.1 ISIS PROTEUS .................................................................................................................. 14
3 JUSTIFICACIÓN.......................................................................................................................... 15
4 descripción del proyecto .......................................................................................................... 15
4.1 Arduino .............................................................................................................................. 15
4.2 75ls164 .............................................................................................................................. 16
4.3 El software Arduino ........................................................................................................... 17
4.4 Modelo de matriz a utilizar ............................................................................................... 22
4.5 Simulación en proteus diagrama de conexión .................................................................. 22
5 objetivos ................................................................................................................................... 23
6 ubicación .................................................................................................................................. 23
7 beneficiarios ............................................................................................................................. 23
8 diseño del proyecto .................................................................................................................. 23
8.1 Lenguaje c.......................................................................................................................... 23
8.2 CARACTERÍSTICAS DE COMPILADOR PCW ........................................................................ 24
8.3 EL COMPILADOR PCW ....................................................................................................... 24
8.4 DIRECTIVAS EN EL CCS ....................................................................................................... 25
8.5 Ejemplo de programación en c.......................................................................................... 27
8.6 PROTEUS ........................................................................................................................... 28
8.6.1 Las partes de Proteus ................................................................................................. 28
8.7 Electrónica ......................................................................................................................... 32
8.8 programación en Arduino ................................................................................................. 33
8.8.1 Tipos de placas Arduino ............................................................................................. 36

6
1 DATOS INFORMATIVOS

 Nombre de proyecto

o Letrero led programable

2 MARCO TEÓRICO

2.1 EL MICROCONTROLADOR

 CONCEPTO

o Un microcontrolador es un circuito integrado que en su interior contiene

una unidad central de procesamiento (CPU), unidades de memoria (RAM

y ROM), puertos de entrada y salida y periféricos. Estas partes están

interconectadas dentro del microcontrolador, y en conjunto forman lo que

se le conoce como microcomputadora. Se puede decir con toda propiedad

que un microcontrolador es una microcomputadora completa encapsulada

en un circuito integrado.

o El microcontrolador es un computador dedicado a diversas aplicaciones.

En su memoria sólo reside un programa destinado a gobernar una

aplicación determinada; sus líneas de entrada/salida soportan el

conexionado de los sensores y actuadores del dispositivo a controlar, y

todos los recursos complementarios disponibles tienen como única

finalidad atender sus requerimientos. Una vez programado y configurado

el microcontrolador solamente sirve para gobernar la tarea asignada.

7
2.1 ARQUITECTURA DE LOS MICROCONTROLADORES

 Concepto

o Aunque inicialmente todos los microcontroladores adoptaron la

arquitectura clásica de von Neumann, en el momento presente se impone

la arquitectura Harvard. La arquitectura de von Neumann se caracteriza

por disponer de una sola memoria principal donde se almacenan datos e

instrucciones de forma indistinta. A dicha memoria se accede a través de

un sistema de buses único (direcciones, datos y control). La arquitectura

Harvard dispone de dos memorias independientes, una que contiene sólo

instrucciones y otra, sólo datos.

o La repercusión más importante del empleo de la arquitectura Harvard en los

microcontroladores PIC se manifiesta en la organización de la memoria del

8
sistema. La memoria de programa es independiente de la de los datos,

teniendo tamaños y longitudes de palabra diferentes. En los PIC16C5X el

formato de todas las instrucciones es de 12 bits y, en consecuencia, la longitud

de las palabras de la memoria de programa también. Este tamaño permite

codificar en una palabra el código OP de la instrucción junto al operando o su

dirección. Para adaptarse a las necesidades de las aplicaciones del usuario hay

modelos de la gama baja con 512 posiciones para la memoria de instrucciones

y otros que tienen 1 k y 2 k posiciones de 12 bits.

2.2 SOFTWARE PARA PROGRAMAR MICROCONTROLADORES

2.2.1 JUST BASIC

o sirve para programar microcontroladores, lo importante son las

exportaciones al lenguaje hexadecimal

2.2.2 CCS C COMPILER

o Este software sirve para programar microcontroladores el lenguaje de este

software es el “ lenguaje c “ y lo traduce al lenguaje

9
o El PCW Compiler es una herramienta útil para programar

microcontroladores PIC, en la cual están incluidas las librerías para

manejar una pantalla LCD, el protocolo de comunicación serial, manejo

de puertos, etc. En la actualidad el compilador PCW es una herramienta

en desarrollo, poco a poco se han ido adaptando nuevas librerías, nuevos

microcontroladores y nuevas ayudas.

2.2.3 PICKIT

o Es un software quemador de PIC

10
o Esta es la placa para quemar del PICKIT.

2.3ARDUINO

2.3.1 Software Arduino

o Arduino es una plataforma de prototipos electrónica de código abierto

(open-source) basada en hardware y software _exibles y fáciles de usar.

Está pensado para artistas, diseñadores, como hobby y para cualquiera

interesado en crear objetos o entornos interactivos.

o Arduino puede _sentir_ el entorno mediante la recepción de entradas desde

una variedad de sensores y puede afectar a su alrededor mediante el control

de luces, motores y otros artefactos. El microcontrolador de la placa se

programa usando el _Arduino Programming Language_ (basado en

Wiring1) y el _Arduino Development Environment_ (basado en

11
Processing2). Los proyectos de Arduino pueden ser autonomos o se

pueden comunicar con software en ejecución en un ordenador (por

ejemplo, con Flash, Processing, MaxMSP, etc.).

o Las placas se pueden ensamblar a mano3 o encargarlas preensambladas4;

el software se puede descargar5 gratuitamente. Los diseños de referencia

del hardware (archivos CAD) están disponibles bajo licencia open-source,

por lo que eres libre de adaptarlas a tus necesidades.

2.3.2 Placa arduino uno

o Arduino de gama básica, todas las shields están diseñadas para usarse

sobre esta placa. Cuenta 14 pines entrada/salida digital de las cuales 6 se

pueden usar como PWM, además cuenta con 6 entradas analógicas,

además cuenta con I2C, SPI, además de un modulo UART.

Arduino UNO con microcontrolador en formato DIP

12
2.4 MATRIZ LED

 las matrices led se puede armar de dos diferentes formas el ánodo

común y las de cátodo común

13
2.5 PROTEUS

2.5.1 ISIS PROTEUS

o Proteus VSM es un sistema de diseño electrónico basado en la

simulación analógica, digital o mixta de circuitos, que brinda la

posibilidad de interacción con muchos de los elementos que integran el

circuito. Incluye componentes animados para la visualización de su

comportamiento en tiempo real, además de un completo sistema de

generación y análisis de señales. También cuenta con un módulo para el

diseño de circuitos impresos.

o Las siglas VSM significan Virtual System Modelling, que en español

podemos traducir como sistema de modelado virtual, ya que Proteus

VSM permite modelar de forma virtual en la computadora prácticamente

cualquier circuito.

o La característica principal que hace de Proteus VSM uno de los

simuladores preferidos por muchos aficionados y profesionales de la

electrónica es la posibilidad de simular circuitos que incluyen

microprocesadores o microcontroladores.

o Aunque el nombre completo del programa es Proteus VSM, a partir de

ahora nos referiremos a él solo como Proteus, para mayor facilidad.

14
3 JUSTIFICACIÓN

 Este proyecto es desarrollado por que ay una gran cantidad de compradores de

letreros de este tipo, especial mente los transportistas, también tiendas que desean

hacer más llamativa su tienda

4 descripción del proyecto

4.1 Arduino

o El hardware que tendrá nuestro programa es el Arduino uno.

15
4.2 75ls164

o Registro de desplazamiento que controlara las columnas

o Los registros de desplazamiento son circuitos secuenciales formados por

biestables o flip-flops generalmente de tipo D conectados en serie y una

circuiteria adicional que controlará la manera de cargar y acceder a los

datos que se almacenan.

o En los de desplazamiento se transfiere información de un flip-flop hacia

el adyacente, dentro del mismo registro o a la entrada o salida del mismo.

o La capacidad de almacenamiento de un registro es el número total de bits

que puede contener.

o El funcionamiento se realiza de manera síncrona con la señal de reloj. Gran

parte de los registros de desplazamiento reales incluyen una señal RESET

o CLEAR asíncrona, que permite poner simultáneamente todas las salidas

en "0" o estado bajo, sin necesidad de introducir ceros seguidos. Esto

permite limpiar rápidamente el registro de desplazamiento lo cual es muy

importante a nivel práctico.

16
4.3 El código para software Arduino

o Antes de hacer este programa, antes deberás practicar con ejemplos más

básicos, que estarán anexados al final

o Aquí será editado nuestro código para mostrar mensajes en la matriz de

led, el código es el siguiente

int AA[8][16]= {

{0 ,1 ,1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1 ,1 ,0},

{0 ,1 ,0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0 ,0 ,0},

{0 ,1 ,0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0 ,0 ,0},

{0 ,1 ,1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0 ,0 ,0},

{0 ,1 ,0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0 ,0 ,0},

{0 ,1 ,0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0 ,0 ,0},

{0 ,1 ,0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0 ,0 ,0},

{0 ,1 ,0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1 ,1 ,0} };

int ASS[8][16]= {

17
{0 ,0 ,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ,0 ,0},

{0 ,0 ,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ,0 ,0},

{0 ,1 ,1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1 ,1 ,1},

{0 ,1 ,1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1 ,0 ,1},

{0 ,1 ,1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1 ,0 ,1},

{0 ,1 ,1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1 ,0 ,1},

{0 ,1 ,1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1 ,0 ,1},

{0 ,1 ,1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1 ,1 ,1} };

int SA[1][16]= {

{1 ,1 ,0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1 ,1 ,1} };

int A[7][16]= {

{1,1,0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1,1,1},

{1,1,1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1,1,1},

{1,1,1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1,1,1},

{1,1,1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1,1,1},

{1,1,1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1,1,1},

{1,1,1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1,1,1},

{1,1,1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1,1,1} };

int desplazamiento=0;

//int f=5; int

dato=2; int

reset=4; int

clock=3;

18
int t=0;

void setup() {

digitalWrite(reset,LOW);

for(int i=2;i<=13;i++){

pinMode(i,OUTPUT);

for(int i=6;i<=13;i++){

// digitalWrite(i,HIGH);

digitalWrite(i,LOW);

digitalWrite(reset,HIGH);

digitalWrite(clock,LOW);

digitalWrite(dato,LOW);

// m.setIntensity(1);

void loop() {

barrido();

t=t+1;

19
if(t >=50){ t=0;

desplazamiento=desplazamiento+1;

if(desplazamiento==48){

desplazamiento=0;

Serial.println(t);

void barrido(){

for(int f=0;f<=7;f++){ // multiplexión de las filas

digitalWrite(reset,HIGH);

digitalWrite(reset,LOW);//reset del registro de desplazamiento

delay(0.1);

// digitalWrite(reset,LOW);

digitalWrite(reset,HIGH);

for (int c=0;c<=desplazamiento;c++){ // la variable desplazamiento es

la que hace rotar el mensaje

digitalWrite(clock,LOW);

20
if(BA[f][c]==0){ // matriz para ingresar datos en el registro de

desplazamiento

digitalWrite(dato,HIGH);

else {

digitalWrite(dato,LOW);

digitalWrite(clock,HIGH); // ingreso del valor en el registro de

desplazamiento

delay(0.1);

digitalWrite(clock,LOW);

digitalWrite(13-f,LOW); //prender la fila deseada

delay(1);

digitalWrite(13-f,HIGH);

21
4.4 Modelo de matriz a utilizar

4.5 Simulación en proteus diagrama de conexión

22
5 objetivos

 Objetivos directos

o El motivo principal de realizar este proyecto es para generar

ingresos

 Objetivos indirectos

o Ya que este proyecto es dedicado para los transportistas, el

punto es de tener un letrero llamativo que atraiga a la gente

6 ubicación

 Jr Moquehua con 8 de noviembre – tienda deportiva Anderson Sport

7 beneficiarios

 Beneficiarios directos

o La persona a cargo del proyecto

 Beneficiarios indirectos

o Los transportistas u otra empresa que lo requiera

8 diseño del proyecto

8.1 Lenguaje c

o Tradicionalmente muchos programadores de microcontroladores PIC

utilizan el lenguaje ensamblador para realizar sus proyectos, pero en la

actualidad existen compiladores de lenguajes de alto nivel que permiten

23
realizar las mismas tareas en un menor tiempo de desarrollo y con mucha

mayor facilidad en la programación.

o El PCW Compiler es una herramienta útil para programar

microcontroladores PIC, en la cual están incluidas las librerías para

manejar una pantalla LCD, el protocolo de comunicación serial, manejo

de puertos, etc. En la actualidad el compilador PCW es una herramienta

en desarrollo, poco a poco se han ido adaptando nuevas librerías, nuevos

microcontroladores y nuevas ayudas.

8.2 CARACTERÍSTICAS DE COMPILADOR PCW

o Traduce el código C del archivo fuente (.c) a lenguaje de máquina para

programar microcontroladores PIC (.HEX).

o Se incluye Drivers o librerías de código fuente para manejo de pantallas

LCD, teclados, sensores, protocolos de comunicación, memorias,

conversión analógica a digital, etc.

o Se integra al módulo de desarrollo IDE del MPLAB (software de

desarrollo de Microchip) y otros simuladores y editores para la depuración

del código fuente.

o Funciones para el manejo de interrupciones.

8.3 EL COMPILADOR PCW

o Básicamente el compilador PCW maneja la misma estructura de

programación que el lenguaje de programación C, las similitudes más

importantes son:

o OPERADORES ARITMÉTICOS

24
 Los operadores aritméticos del PCW son prácticamente los

mismos que su homólogo el lenguaje C y son los siguientes:

Operador Descripción Ejemplo

+ Suma (enteros) Suma = a + b

- Resta (enteros) Resta = a – b

* Producto (enteros) Produ= a * b

/ División (enteros) div = a / b

% Módulo: (residuo ) Mod = a % b

o Los operadores relacionales son los siguientes

 < Menor que

 > Mayor que

 <= Menor o igual que

 >= Mayor o igual que

 == Igual que

8.4 DIRECTIVAS EN EL CCS

o #INCLUDE <NOMBRE_DEL_FICHERO>

 Esta directiva hace que el compilador incluya en el fichero fuente

el texto que contiene el archivo indicado.

 Ejemplo: #include <16F877.H>

o #FUSE

 Esta directiva define qué fusibles deben activarse en el dispositivo

cuando se programe. Esta directiva no afecta a la compilación; sin

25
embargo, esta información se pone en el archivo de salida. Algunas

de las opciones más usadas son:

 LP, XT, HS, RC (Tipo de oscilador) WDT, NOWDT

(Activación del Watch Dog Timer) PROTECT,

NOPROTECT (Protección del código) PUT, NOPUT

(Temporizador de arranque) BROWNOUT,

NOBROWNOUT (Detección de caídas de tensión de la

fuente de alimentación)

 Ejemplo #fuse HS, WDT.

o #INT_XX

 Estas directivas especifican que la función que le sigue es una

función de interrupción. Las funciones de interrupción no pueden

tener ningún parámetro. Como es natural, no todas las directivas

pueden usarse con todos los dispositivos. Las directivas más

comunes son las siguientes:

 #INT_EXT: Interrupción externa

 #INT_TRCC: Desbordamiento del TIMER0 (RTCC)

 #INT_RB: Cambio en los pines B4, B5, B6, B7

 #INT_AD: Conversor A/D

 #INT_TIMER1: Desbordamiento del TIMER1.

 #INT_TIMER2: Desbordamiento del TIMER2

 #INT_CP1: Modo captura de datos por CCP1

26
 #INT_CCP2: Modo captura por CCP2

o #USE DELAY (Clock = Frecuencia):

 Esta directiva indica al compilador la frecuencia del procesador,

en ciclos por segundo, a la vez que habilita el uso de las funciones

DELAY_MS() y DELAY_US().

 Ejemplo: #USE DELAY (CLOCK = 4000000)

o Set_ tris_puerto(Valor)

 Estas funciones permiten escribir directamente los registros tri-

estado para la configuración de los puertos (configurar pines de

entrada y salida).

 Esto debe usarse con FAST_IO(), cuando se accede a los puertos

de I/O como si fueran memoria, igual que cuando se utiliza una

directiva #BYTE. Cada bit de value representa una patilla. Un '1'

indica que la patilla es de entrada y un '0' que es de salida.

 Ejemplo : Set_tris_A(0xff); puerto A como entrada

8.5 Ejemplo de programación en c

o Parpadeo de un led

#include <16f877a.h>

#fuses hs,nowdt

#use delay (clock = 20M)

void main()

27
set_tris_b(0b0);

output_low(pin_b0);

while (true)

output_high(pin_b0);

delay_ms(500);

output_low(pin_b0);

delay_ms(500);

8.6 PROTEUS

8.6.1 Las partes de Proteus

o El programa cuenta con dos partes o componentes principales. Uno de

ellos es el módulo ISIS, que es donde vamos a dibujar los diagramas de

los circuitos electrónicos y, también, desde donde efectuaremos las

simulaciones. Si es la primera vez que abrimos el módulo ISIS, después

de instalar Proteus en el sistema, es posible que aparezca una ventana

llamada View Sample Designs, que nos preguntará si queremos ver los

diseños de ejemplo que se instalan junto con el programa.

28
o hacer click en el botón yes

o le aparecerá la siguiente ventana para que elija algún ejemplo

o Además del módulo ISIS, Proteus cuenta con otro módulo, denominado

ARES, que es donde se diseñan las placas de circuito impreso (PCB)

utilizadas para el posterior armado de los circuitos. En relación a este tema,

otra característica muy interesante de este programa es la posibilidad de

importar un circuito dibujado en ISIS directamente al módulo ARES. De

29
esta manera, podremos diseñar fácil y rápidamente un circuito impreso

para él.

o Esta es la interfaz de ISIS PROTEUS

30
 Ejemplo de parpadeo led con

o pic 16f877a

o 2 resistencias

o 2 led

o El código para el pic es el que está más atrás en el lenguaje c

 una captura con las placas de Arduino

31
o Si también se puede simular circuito con las placas Arduino

8.7 Electrónica

o En la parte electrónica la conexión de los leds será el siguiente

o Cátodos para las columnas y ánodos para las filas

32
8.8 programación en Arduino

o La estructura básica del lenguaje de programación 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.

void setup()

estamentos;

void loop()

estamentos;

o En donde setup() es la parte encargada de recoger la configuración y

loop() es la que contienen el programa que se ejecutará cíclicamente (de

ahí el termino loop –bucle-).

33
o Ambas funciones son necesarias para que el programa trabaje.

o La función de configuración debe contener la declaración de las

variables. Es la primera función a ejecutar en el programa, se ejecuta sólo

una vez, y se utiliza para configurar o inicializar pinMode (modo de

trabajo de las E/S), configuración de la comunicación en serie y otras.

o La función bucle (loop) siguiente contiene el código que se ejecutara

continuamente (lectura de entradas, activación de salidas, etc) Esta

función es el núcleo de todos los programas de Arduino y la que realiza

la mayor parte del trabajo.

o setup()

 La función 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 declaración que ejecutar.

void setup()

pinMode(pin, OUTPUT); // configura el 'pin' como salida

o loop()

34
 Después de llamar a setup(), la función loop() hace precisamente

lo que sugiere su nombre, se ejecuta de forma cíclica, lo que

posibilita que el programa este respondiendo continuamente ante

los eventos que se produzcan en la tarjeta

void loop()

digitalWrite(pin, HIGH); // pone en uno (on, 5v) el ´pin´

delay(1000); // espera un segundo (1000 ms)

digitalWrite(pin, LOW); // pone en cero (off, 0v.) el ´pin´

delay(1000);

35
8.8.1 comparación de las placas Arduino de placas Arduino

36
8.8.2 Programación en Arduino para mostrar mensaje en pantalla LCD

2x16

 Este es diagrama de conexión en el Proteus

 En físico combinen las dos

 El código Arduino es el siguiente copearlo tal como esta

/*

LiquidCrystal Library - scrollDisplayLeft() and scrollDisplayRight()

37
Demonstrates the use a 16x2 LCD display. The LiquidCrystal

library works with all LCD displays that are compatible with the

Hitachi HD44780 driver. There are many of them out there, and you

can usually tell them by the 16-pin interface.

This sketch prints "Hello World!" to the LCD and uses the

scrollDisplayLeft() and scrollDisplayRight() methods to scroll

the text.

The circuit:

* LCD RS pin to digital pin 12

* LCD Enable pin to digital pin 11

* LCD D4 pin to digital pin 5

* LCD D5 pin to digital pin 4

* LCD D6 pin to digital pin 3

* LCD D7 pin to digital pin 2

* LCD R/W pin to ground

* 10K resistor:

* ends to +5V and ground

* wiper to LCD VO pin (pin 3)

Library originally added 18 Apr 2008

by David A. Mellis

library modified 5 Jul 2009

38
by Limor Fried (http://www.ladyada.net)

example added 9 Jul 2009

by Tom Igoe

modified 22 Nov 2010

by Tom Igoe

modified 7 Nov 2016

by Arturo Guadalupi

This example code is in the public domain.

http://www.arduino.cc/en/Tutorial/LiquidCrystalScroll

*/

// include the library code:

#include <LiquidCrystal.h>

// initialize the library by associating any needed LCD interface pin

// with the arduino pin number it is connected to

const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;

LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

void setup() {

// set up the LCD's number of columns and rows:

lcd.begin(16, 2);

39
// Print a message to the LCD.

lcd.print("hola como les va chaval");

delay(1000);

void loop() {

// scroll 13 positions (string length) to the left

// to move it offscreen left:

for (int positionCounter = 0; positionCounter < 13;

positionCounter++) {

// scroll one position left:

lcd.scrollDisplayLeft();

// wait a bit:

delay(150);

// scroll 29 positions (string length + display length) to the right

// to move it offscreen right:

for (int positionCounter = 0; positionCounter < 29;

positionCounter++) {

// scroll one position right:

lcd.scrollDisplayRight();

// wait a bit:

delay(150);

40
// scroll 16 positions (display length + string length) to the left

// to move it back to center:

for (int positionCounter = 0; positionCounter < 16;

positionCounter++) {

// scroll one position left:

lcd.scrollDisplayLeft();

// wait a bit:

delay(150);

// delay at the end of the full loop:

delay(1000);

41
o Reproductor mp3 con Arduino

o El código para el ejemplo en el siguiente

#include <SD.h> // Se inclye la libreria SD

#include <SPI.h> // Se incluye la libreria para la comunicacion SPI

#include <TMRpcm.h> // Se incluye la libreria para reproducir

.WAV

#define SD_ChipSelectPin 4 // Selecciona la tarjeta SD. Puede ser cualquier

pin que NO se esté utilizando ya.

TMRpcm Audio; // Se crea un objeto para usar las funciones de la libreria

TMRpcm

bool boton_A = 0; //Variable que guarda el estado del pulsador de cambiar

de cancion

bool boton_B = 0; //Variable que guarda el estado del pulsador de pausar

42
int song = 0; //Se inician en 0 para que cuando se incremente la cancion al

principio se reproduzca la cancion 1

int last_song = 0; //Almacena el número de la ultima cancion

/* C O N E X I O N E S S P I

Arduino Nano/Arduino UNO

12 -------------------> MISO

11 -------------------->MOSI

13 -------------------->SCK

4 ---------------------->CS

9 ---------------------->Speaker

GND ------------------>GND

5V ------------------> VCC

Arduino MEGA ---------> SD Card

50-------------------> MISO

51-------------------->MOSI

52 -------------------->SCK

53---------------------->CS

11---------------------->Speaker

GND ------------------>GND

5V ------------------> VCC

*/

43
void setup(){

Audio.speakerPin = 9; //Selecciona la salida de audio: pin 9 (UNO y nano)

pines 5,6,11 o 46 (Mega)

Audio.quality(1); // Mejoramos la calidad de sonido (puede ser 0 o 1)

Audio.setVolume(5); // Se selecciona el volumen: valor entre 0 y 7. Solo

funciona bien si la calidad del audio está a 1.

//En caso de que no se oiga nada o se oiga mal, bajad el

volumen o borrad la funcion

pinMode(3,INPUT); // Declara el boton de pasar de cancion como entrada

pinMode(2,INPUT); // Declara el boton de pausar la cancion

Serial.begin(9600); //Se inicializa el puerto serie

Serial.println("Inicializando");

if (!SD.begin(SD_ChipSelectPin)) { // Comprueba si la tarjeta SD se ha

inicializado correctamente

Serial.println("Fallo de la tarjeta SD, revisa las conexiones papu :v");

return; // Si la tarjeta SD falla, el programa termina

else{

Serial.println("SD inicializada correctamente!");

44
}

void loop(){

boton_A = digitalRead(3); //Se lee el boton de pasar de cancion

boton_B = digitalRead(2); //Se lee el boton de pausa

if(boton_A == 1){ // Si pulsas el pulsador se incrementa la cancion a

reproducir

if(song <= 2)

song++; // Se incrementa la cancion a reproducir

else

song = 1; // Si se ha llegado a la ultima cancion, vuelve a la cancion

numero 1

while(boton_A == 1){ boton_A = digitalRead(3); } //Espera a que

levantes el dedo del pulsador para continuar

if(boton_B == 1){

Audio.pause(); //Pausa la cancion que está sonando

Serial.println("Cancion pausada o renaudada");

while(boton_B == 1){ boton_B = digitalRead(2); } //Espera a que

levantes el dedo del pulsador para continuar

45
}

if(song != last_song){ //Reproduce el audio una unica vez siempre que se

haya cambiado de cancion

switch(song)

case 1: Audio.play("dross2.wav"); Serial.println("Cancion 1"); break;

case 2: Audio.play("vegeta.wav"); Serial.println("Cancion 2"); break;

case 3: Audio.play("faded.wav", 30); Serial.println("Cancion 3 desde el

segundo 30"); break;

last_song = song;

// NOTA: si llamamos a la función Audio. play() todo el rato nunca

oiremos la canción ya que se resetea y estará todo el tiempo

//en el minuto 0:00. Hay que llamarla una única vez, por ello tenemos la

condición if que solo se ejecuta una única

//vez si la canción ha cambiado.

46
9. ADMINISTRACIÓN DEL PROYECTO POR ETAPAS

9.1 ETAPA DE ELABORACIÓN DEL PERFIL DEL PROYECTO A NIVEL DE ESTUDIO

o Responsable del proyecto.

 Diego Eduardo soto Cusihuallpa

o Cronograma de elaboración del proyecto

Pasos a seguir Octubre Noviembre Diciembre

Definición del nombre del X

proyecto

Justificación, Descripción, X

Objetivos, Beneficiarios

Diseño del proyecto X X

Financiamiento X X

Impresión del proyecto X

10 INVERSIÓN DEL PROYECTO

Materiales Costo

Búsqueda de información 20 soles

Software Arduino 0 soles

Placa Arduino uno 50 soles

300 led 45 soles

Registros de desplazamiento 4 soles

47
11 DETERMINACIÓN DE LOS RESULTADOS
Los resultados fueron buenos a lo largo del proyecto, claro todo fue

posible gracias a que ya tuve conocimientos previos manejando la placa

Arduino desde la secundaria, en el curso de educación por el trabajo

(ELECTRÓNICA).

12 LOGROS Y DIFICULTADES
Las dificultades fueron en el armado de la matriz de led, pero todo con

ayuda se puede.

Los logros fueron que la matriz funciona correctamente

13 CONCLUSIONES Y RECOMENDACIONES
Conclusiones: el programa creado en el IDE Arduino funciona

correctamente, físicamente puedes añadir más columnas.

Recomendaciones: no cerrar se en una sola forma de hacer letreros leds,

la que yo elegí es esta, pero hay mas

 en los anexos estarán el manual de Arduino, ejemplos y también se

hará la entrega del con todos los contenidos del proyecto y tutoriales

48
14 BIBLIOGRAFÍA


http://personales.unican.es/manzanom/planantiguo/edigita
li/REGG4.pdf

 https://www.carrod.mx/products/ci-ttl-registro-de-
corrimiento-salida-en-paralelo-y-entrada-en-serial-8

 https://teoriadelastelecomunicaciones.files.wordpress.com/
2011/11/multiplexacion.pdf

 https://cdn-shop.adafruit.com/datasheets/BL-
M12A881.PDF

 http://recursostic.educacion.es/secundaria/edad/4esotecno
logia/quincena6/pdf/quincena6.pdf

 http://roble.pntic.mec.es/jlop0164/archivos/electronica-
digital-3.pdf

 http://www.ceduvirt.com/resources/1.%20Compuertas%20l
%C3%B3gicas.pdf

 https://arduinobot.pbworks.com/f/Manual+Programacion+
Arduino.pdf

 http://www.tecnica1lomas.com.ar/tutoriales/manual-
proteus.pdf

49

You might also like