Está en la página 1de 25

UNIVERSIDAD

TECNOLÓGICA DE
MÉXICO

MICROCOMPUTADORAS
Cueto Mosco Kenya Itzel
Rojas Barrera Víctor
Onofre Ruiz Roberto
Jiménez Guerrero Ricardo Enrique

GRUPO: SC08S
LABRA PORTHELA VICTOR MANUEL

FECHA: 18 DE FEBRERO DE 2017


ÍNDICE

ÍNDICE................................................................................................................................................2
RESUMEN...........................................................................................................................................3
INTRODUCCIÓN..................................................................................................................................4
CUESTIONARIO DEL MARCO TEÓRICO...........................................................................................5
DESARROLLO................................................................................................................................9
DISCUSIÓN.......................................................................................................................................23
CONCLUSIONES................................................................................................................................23
REFERENCIAS....................................................................................................................................24
APÉNDICE.........................................................................................................................................24
RESUMEN
En esta práctica aprenderemos el funcionamiento del ADC, utilizar las funciones, integrar
comunicación serie de la pantalla LCD, integraremos un menú de opciones con la
comunicación serie y la pantalla LCD, así como aprenderemos a cargar librerías de
Arduino y utilizar el controlador I2C y los beneficios del evento serie.
INTRODUCCIÓN
Hace unos años apareció un proyecto libre, llamado arduino, el cual facilitaba el acceso a
esta clase de dispositivos a los estudiantes, dado que es una placa basada en
openhardware (su diseño es libre y es posible reproducirlo por cualquier persona).
Inicialmente, la placa se conectaba a través de un puerto USB para programarlo
(normalmente se hace en base a su IDE que lo podemos encontrar aquí). La
programación de arduino no se realizaba a bajo nivel con ensamblador como muchos
microcontroladores (a partir de ahora los llamaremos PICs), sino que se realiza con un
lenguaje más comprensible por la mayoría de nosotros, C/C++ (la referencia básica al
lenguaje la encontramos aquí y ejemplos en esta ruta).
Con estos elementos, un programador que no sabe de PICs, sería capaz de programar el
arduino en poco tiempo.
La placa de la versión UNO se componía de 14 pines de E/S digitales, de los cuales, tenía
2 para conexión serie. Estos pines nos sirve para la mayoría de sensores básicos, o para
reles, accionadores, etc… los cuales solo tienen 2 estados, encendido o apagado (o con
las constantes de arduino HIGH y LOW). También tiene 6 pines analógicos, capaces de
leer hasta 1024 niveles de tensión, llamados resolución del puerto analógico. Estos sirven
para leer sensores que nos devuelven rangos de tensiones diferentes dependiendo de su
estado, como pueda ser, una termoresistencia, una resistencia variable, etc…
CUESTIONARIO DEL MARCO TEÓRICO.
1. ¿Qué es un ADC y cuáles son los voltajes de referencia del ADC en el Arduino UNO?
-Los Microcontroladores solo entienden señales digitales (1’s y 0’s). El ADC son los
Pines A0 al A5 que funcionan como Convertidores de Señales Analógico al Digital.
Los voltajes de Referencia son de 5V y de 3.3V.
2. ¿En cuántos bits convierte el valor analógico de entrada el ADC del Arduino UNO? -10
Bits
3. ¿Qué es una pantalla LCD y qué significa la nomenclatura 2x16?
-Pantalla de Cristal Líquido es un dispositivo empleado para la visualización de contenidos
o información de una forma gráfica, mediante caracteres, símbolos o pequeños dibujos
dependiendo del modelo. Esta gobernado por un microcontrolador el cual dirige todo su
funcionamiento. Una LCD 16x2 nos deja saber que la pantalla cuenta con 2 filas de 16
caracteres cada una(Columnas).
4. ¿Cuál es la utilidad de cada terminal de la pantalla LCD?
Pines de Alimentación:
Vss: Gnd
Vdd: +5 voltios
Vee: corresponde al pin de contraste, lo regularemos con un potenciómetro de 10K
conectado a Vdd.

Pines de control:

RS: Corresponde al pin de selección de registro de control de datos (0) o registro de datos
(1). Es decir, el pin RS funciona paralelamente a los pines del bus de datos. Cuando RS
es 0 el dato presente en el bus pertenece a un registro de control/instrucción. y cuando
RS es 1 el dato presente en el bus de datos pertenece a un registro de datos o un
carácter.
RW: Corresponde al pin de Escritura (0) o de Lectura (1). Nos permite escribir un dato en
la pantalla o leer un dato desde la pantalla.
E: Corresponde al pin Entable o de habilitación. Si E (0) esto quiere decir que el LCD no
está activado para recibir datos, pero si E (1) se encuentra activo y podemos escribir o
leer desde el LCD.

Pines de Bus de datos:


El Bus de datos bidireccional comprende desde los pines D0 a D7. Para realizar la
comunicación con el LCD podemos hacerlo utilizando los 8 bits del bus de datos (D0 a
D7) o empleando los 4 bits más significativos del bus de datos (D4 a D7). En este caso
vamos a explicar la comunicación con el bus de 4 bits.
5. ¿Qué es un objeto en programación orientada a objetos?
- es una unidad dentro de un programa de computadora que consta de un estado y de un
comportamiento, que a su vez constan respectivamente de datos almacenados y de
tareas realizables durante el tiempo de ejecución
6. ¿Cómo se llama a un procedimiento en programación orientada a objetos?
-Programación Estructurada o Funciones
7. ¿Cómo se utiliza el constructor en Arduino para la LCD?
-Es necesario declarar la librería de LiquidCrystal y los pines que estarán en uso. Por
ejemplo:
8. ¿Cómo se inicializa la pantalla LCD en el Arduino?
#include <LiquidCrystal.h> //Librería Declarara
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //Pines que estarán en uso

9. ¿Cuáles son y cómo se utilizan los argumentos del método begin () de la clase
LiquidCrystal?
lcd.begin(COLS, ROWS);
10. ¿Cómo se identifica a cada línea y columna en la pantalla LCD?
-Filas y Caracteres
11. ¿Cuáles son y cómo se utilizan los argumentos del método setCursor() de la clase
LiquidCrystal?
- lcd.setCursor(fila, columna);
12. ¿Cómo se utiliza el método print() de la clase LiquidCrystal?
- lcd.print(textoParaMostrar);
-lcd.print(textoParaMostrar,BASE)
BASE: Esto es OPCIONAL y sirve para definir el formato en el que queremos mostrarlo.
Puede ser:
 BIN Binario (base 2)
 DEC Decimal (base 10)
 OCT Octal (base 8)
 HEX Hexadecimal. (base 16).
13. Para cada carácter de una pantalla LCD de 2x16, ¿cuál es su dirección interna de
memoria RAM?

14. Cada que se escribe un carácter en la pantalla LCD ¿Qué sucede con el apuntador de
dirección interna de la memoria RAM de la pantalla LCD?
15. ¿Cuál es la utilidad de la función Serial.available() y que valor devuelve?
Obtiene el número de bytes (caracteres) disponibles para su lectura desde el puerto
serie. Se trata de datos que ya llegaron y se almacenaron en el buffer de recepción
serie (que tiene 64 bytes).
available() hereda de la clase Stream
16. ¿Cuántos datos y de qué tipo devuelve la función Serialread()?
Lee o captura un byte (carácter) desde el puerto serie. Devuelve :El siguiente byte
(carácter) desde el puerto serie, ó -1 si no hay ninguno.
17. ¿Cómo se utiliza la instrucción switch … case?
1 switch(var){
2     case 1:
3        //si var = 1 se ejecuta esto
4     break;
5     case 2:
6        //si var = 2 se ejecuta esto
7     break;
8     //pueden haber tantos case como se necesite.
9     default:
10        //si nada coincide se ejecuta esto
11        //es opcional  
12     break;
13 }

18. ¿Qué significa y qué tipo de comunicación se obtiene con el bus I2C?
 ART (recepción-transmisión asíncrona universal) es uno de los protocolos serie
más utilizados. La mayoría de los microcontroladores disponen de hardware
UART. Usa una línea de datos simple para transmitir y otra para recibir datos.
Comúnmente, 8 bits de datos son transmitidos de la siguiente forma: un bit de
inicio, a nivel bajo, 8 bits de datos y un bit de parada a nivel alto. UART se
diferencia de SPI y I2C en que es asíncrono y los otros están sincronizados con
señal de reloj. La velocidad de datos UART está limitado a 2Mbps
 SPI es otro protocolo serie muy simple. Un maestro envía la señal de reloj, y tras
cada pulso de reloj envía un bit al esclavo y recibe un bit de éste. Los nombres de
las señales son por tanto SCK para el reloj, MOSI para el Maestro Out Esclavo In,
y MISO para Maestro In Esclavo Out. Para controlar más de un esclavo es preciso
utilizar SS (selección de esclavo).

19. ¿Cuántas líneas se requieren para el bus I2C y qué función tienen?

La principal característica de I²C es que utiliza dos líneas para transmitir la información:
una para los datos y otra para la señal de reloj. También es necesaria una tercera línea,
pero esta sólo es la referencia (masa). Como suelen comunicarse circuitos en una misma
placa que comparten una misma masa esta tercera línea no suele ser necesaria.

Las líneas se llaman:

 SDA: datos
 SCL: reloj
 GND: tierra

20. ¿Qué tipo de arquitectura de comunicación se utiliza en el bus I2C?


El bus I2C tiene una arquitectura de tipo maestro-esclavo. El dispositivo maestro inicia la
comunicación con los esclavos, y puede mandar o recibir datos de los esclavos. Los
esclavos no pueden iniciar la comunicación (el maestro tiene que preguntarles), ni hablar
entre si directamente.

21. La dirección de un dispositivo I2C ¿cuántos bits utiliza?


Lo más común en los dispositivos para el bus I2C es que utilicen direcciones de 7 bits,
aunque existen dispositivos de 10 bits. Este último caso es raro.

22. ¿Cuáles son las ventajas y desventajas del bus I2C?


VENTAJAS
 Requiere pocos cables
 Dispone de mecanismos para verificar que la señal hay llegado
DESVENTAJAS
 Su velocidad es media-baja
 No es full duplex
 No hay verificación de que el contenido del mensaje es correcto

23. ¿Cuáles son las terminales usadas en el Arduino UNO para comunicarse con el bus
I2C?

24. ¿Cuál librería extra se emplea con la librería de I2C?

Wire.h

DESARROLLO

Actividad 1. Convertidor ADC.

Capture, guarde, compile y cargue en el ARDUINO el siguiente programa.

Conecte el canal 0 del ADC a 3.3 V. Abra el monitor serie y reporte los resultados.
Posteriormente conecte a GND (tierra o 0 V) y 5 V el canal analógico 0 y observe las
lecturas que aparecen en el monitor serie.
Actividad 2. Hola mundo con pantalla LCD.

Conectar la pantalla LCD de 16x2 con el Arduino siguiendo los diagramas de las figuras
1 y/o 2 o las indicaciones de la tabla 1.
Figura 1. Conexión pantalla LCD y Arduino (Fritzing).

Figura 2. Diagrama esquemático de conexiones entre pantalla LCD y Arduino.


Pantalla LCD ARDUINO
Pin Pin / Uso
1 Vss Tierra Power / GND
2 Vdd Polarización Power / 5V
3 Vee Contraste Derivación central potenciometro de contraste.

4 RS Selec. Registro Digital 12


5 R/W Read /Write Power / GND
6 E Habilitación de LCD Digital 11
7 D0 Bit de dato 0
8 D1 Bit de dato 1
9 D2 Bit de dato 2 Sin conectar
10 D3 Bit de dato 3
11 D4 Bit de dato 3 Digital 5
12 D5 Bit de dato 3 Digital 4
13 D6 Bit de dato 3 Digital 3
14 D7 Bit de dato 3 Digital 2
15 A Ánodo backlight 4.2 V Power / 5V
16 K Cátodo backlight Power / GND
Tabla 1. Conexionado pantalla LCD y Arduino.
Actividad 3. Menú de opciones de métodos de librería LCD.

Elabore un menú de opciones que tenga por lo menos 8 opciones de los métodos de la
librería de la pantalla LCD. Algunas de las funciones pueden ser: clear(), cursor(),
noCursor(), display(), noDisplay(), blink(), noBlink(), scrollDisplayLeft(),
scrollDisplayRight(), entre otras.

Recordar que la llamada de una función o método en lenguaje C++ debe realizarse
conforme la sintaxis (nombre_objeto punto método punto y coma):

Nombre_Objeto.método() ;

Para nuestro caso el nombre del objeto es lcd, entonces para llamar el método limpiar
pantalla es:

lcd.clear();

Utilice el siguiente código como base para crear un menú de opciones. Observe que
únicamente se lee un carácter y por medio de la instrucción switch se elige la opción que
empleará alguna función solicitada.
También deberá codificar una función que despliegue el menú de opciones para que el
usuario elija la tecla correspondiente a la función deseada.
Actividad 4. I2C con pantalla LCD.

El controlador I2C para LCD incluye 4 terminales son de polarización (5 V y GND) y las
señales de I2C (SDA y SCL). En el Arduino UNO R3 se encuentran identificadas arriba de
las señales digitales. En caso de no estar identificadas conectar SDA en la terminal A4 y
SCL en la terminal A5.

También será necesario añadirle al IDE del Arduino la librería correcta para poder
controlar a la pantalla LCD por I2C, para lo cual se debe ir al menú Programa, seleccionar
la opción Incluir Librería y por último darle click a la opción Gestionar Librería (ver
figura 3).
Figura 3. Gestionar librería.

Realizado lo anterior se abre una ventana del gestor de librarías (ver figura 4) y en ella
anotar en la parte derecha LiquidCrystal I2C (ver figura 5). Para mí en lo particular, la
librería que me ha funcionado es LiquidCrystal I2C by Marco Schartz (ver figura 6).

Para instalar la librería deseada, colocarse sobre ella darle un click con el botón izquierdo
del ratón (mouse) y seleccionarla, después con los botones que aparecen en el extremo
inferior derecho de la librería seleccionada, elegir la versión correcta de la misma (si es que
aparecen distinta versiones) y por último oprimir el botón Instalar (ver figura 7).

En caso de contar con una la librería en formato zip, la forma más rápida de instalarla es
descomprimiéndola en la carpeta libraries que aparece dentro de la carpeta Arduino donde
se guardan generalmente los sketches creados. Generalmente la ruta es:
Mis Documentos -> Arduino -> libraries

Figura 4. Gestor de Librerías.


Figura 5. Gestión específica para librería LCD I2C.

Figura 6. Librería LiquidCrystal I2C by Marco Schartz Versión 1.1.2.

Figura 7. Instalación de libraría.

Alambrar y conectar el Arduino conforme se aprecia en la figura 8 y 9.


Figura 8. Conexión de controlador I2C con Arduino.

Figura 9. Conexión de controlador I2C con Arduino y pantalla LCD.

Capturar, compilar, guardar y cargar en el IDE del ARDUINO el siguiente código:


Generalmente cada librería de LCD trae su ejemplo de “Hello World” la cual puede
encontrarse abriendo el menú Archivo, opción Ejemplos y la ventana que se abre ubicar la
librería deseada, colocar el ratón sobre ella y aparecerán los ejemplos.

Abrir el monitor serial del IDE del ARDUINO y reportar los resultados obtenidos.
Actividad 5. I2C con pantalla LCD y ADC.

Integre las actividades 1 y 4 para lograr que la lectura del ADC se observe en la pantalla
LCD empleando el controlador I2C.

Actividad 6. I2C con pantalla LCD y menú de opciones. OPCIONAL.

Modifique la actividad 4 para lograr un programa completo con menú de opciones tal
como se realizó en la actividad 3.

Distribución de puntuación de los programas:

Actividad Puntos
1. ADC. 1
2. Hola Mundo con pantalla LCD 1.5
3. Menú de opciones de métodos de librería LCD. 1
4. I2C con pantalla LCD. 1.5
5. I2C con pantalla LCD y ADC. 1
6. I2C con pantalla LCD y menú de opciones. OPCIONAL. 2
Reporte escrito. 4
Total. 10
Tabla 2. Valor de cada programa.

DISCUSIÓN
La práctica del día de hoy nos ayudó mucho para conocer un poco la programación en Arduino,
como utilizar el bus I2C, sus librerías, el funcionamiento de la pantalla LCD, y como utilizar el bus
i2c para controlar la pantalla LCD.
CONCLUSIONES

Rojas Barrera Víctor


En conclusión, esta práctica ayudo a reafirmar los conocimientos que se fueron aprendiendo
durante el cuatrimestre de memorias y periféricos en donde empezamos a ver los métodos de
programación, entonces estos ejercicios sirvieron de practica para poder resolver las futuras
prácticas.

Cueto Mosco Kenya Itzel


Esta práctica me recordó mucho al curso de memorias ya que en las ultimas practicas utilizamos el
I2C, por lo cual en esta practica ya se tenia una noción de como utilizarlo para resolver los
ejercicios de la práctica.

Onofre Ruiz Roberto


Jiménez Guerrero Ricardo Enrique

REFERENCIAS
Arduino. (2016). Home. Recuperado de: https://www.arduino.cc/

Arduino. (2016). Languaje Reference. Recuperado de:


https://www.arduino.cc/en/Reference/HomePage

Arduino. (2016). LiquidCrystal Library. Recuperado de:


https://www.arduino.cc/en/Reference/LiquidCrystal

Fritzing. (2016). Home. Recuperado de: http://fritzing.org/home/

Datasheet Catalog.com. (2016). Home. Recuperado de: http://www.datasheetcatalog.com/

Luis Llamas (2017). El bus I2C en Arduino. Recuperado de:


http://www.luisllamas.es/2016/05/arduino-i2c/

Luis Llamas (2017). Conectar un display LCD Hitachi a Arduino por bus I2C. Recuperado de:
http://www.luisllamas.es/2016/05/arduino-lcd-i2c/

Tronixstuff (2017). Tutorial: Arduino and I2C bus – Part One. Recuperado de:
http://tronixstuff.com/2010/10/20/tutorial-arduino-and-the-i2c-bus/

Tronixstuff (2017). Tutorial: Arduino and I2C bus – Part Two. Recuperado de:
http://tronixstuff.com/2010/10/29/tutorial-arduino-and-the-i2c-bus-part-two/

Arduino. (2017). analogRead(). Recuperado de:


https://www.arduino.cc/en/Reference/AnalogRead

https://sites.google.com/site/trastejant/tutoriales/tutoriales-arduino/lcd-con-
arduino#TOC-SetCursor
APÉNDICE.
Se anexan códigos.

También podría gustarte