Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Cueto Mosco RojasBarrera OnofreRuiz JimenezGuerrero PR2
Cueto Mosco RojasBarrera OnofreRuiz JimenezGuerrero PR2
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
Í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.
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.
SDA: datos
SCL: reloj
GND: tierra
23. ¿Cuáles son las terminales usadas en el Arduino UNO para comunicarse con el bus
I2C?
Wire.h
DESARROLLO
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).
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
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.
Modifique la actividad 4 para lograr un programa completo con menú de opciones tal
como se realizó en la actividad 3.
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
REFERENCIAS
Arduino. (2016). Home. Recuperado de: https://www.arduino.cc/
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/
https://sites.google.com/site/trastejant/tutoriales/tutoriales-arduino/lcd-con-
arduino#TOC-SetCursor
APÉNDICE.
Se anexan códigos.