InicioInfoIntroducción a Arduino [Guía completa] Parte 2

Introducción a Arduino [Guía completa] Parte 2

Info•10/2/2016
Una Breve introducción.

Arduino ¿qué es y cómo funciona?


Introducción a Arduino [Guía completa] Parte 2

En el mundillo de la informática hay una corriente que de a poco está ganando cada vez más fuerza. Se trata de las filosofías libres. En los últimos años el software libre ha ganado muchísimo terreno, desde el código que da vida a infinidad de sitios en Internet, hasta el sistema operativo más común en dispositivos móviles a día de hoy, todo construido sobre usando como base software de código abierto.

Hacer libre el software no es demasiado difícil. Solo hace falta que quién invierte tiempo desarrollando código esté dispuesto a compartir su tiempo y esfuerzo con otras personas de manera íntegra. El software es replicable con impresionante facilidad, cosa que no es tan sencilla de hacer con el hardware, por lo que pensar el hardware libre requiere tener mucha visión.

De eso se trata Arduino, un sistema que desde hace ya casi una década sirve como núcleo del hardware libre, y será el tema central de este Hardware para novatos.


¿Qué es Arduino?

Definir Arduino es complicado, muy complicado. Cuando hablamos de Android, por ejemplo, todos sabemos que se trata de un sistema operativo. Sin embargo, Android no es un único sistema operativo estático, cada fabricante lo implementa a su modo, e incluso la comunidad de desarrollo independiente ha puesto en Internet multitud de versiones del sistema operativo. Y hasta empresas como Nokia y Amazon utilizan Android sin siquiera mencionarlo.

arduino

Algo similar a lo descrito en el párrafo anterior ocurre con Arduino. Se trata de un microcontrolador, una placa, un pequeño sistema de procesamiento. Sin embargo, su condición de sistema libre ha propiciado tantas variaciones de lo mismo, que Arduino no es una pieza de hardware única, y de hecho podemos encontrar tantas configuraciones como desarrolladores dispuestos a hacer cambios en los esquemas puedan existir.

Pero claro, debemos cuando menos darle una razón de ser a Arduino. Para ello tenemos qué saber qué hace exactamente un microcontrolador. La respuesta, de nuevo, es que depende de la configuración. Así, encontraremos placas de Arduino capaces de dar vida a un teléfono móvil, un mando a distancia, consolas portátiles, y hasta cámaras fotograficas.

Para simplificar las cosas (y tomando alguna licencia), Arduino es el hardware libre y hardware libre el es Arduino.


Un poco de historia

Hasta hace relativamente poco, un estudiante de sistemas o electrónica tenía que enfrentar que uno de los grandes inconvenientes de su carrera es que para algunos proyectos hacía falta hacerse con placas y microcontroladores que como poco rondaban los 100 dólares. Ese tipo de precios ya era bastante complicado en el primer mundo para un estudiante, siendo que las cosas estaban mucho peor para los países en vías de desarrollo, donde en la mayoría de los casos directamente preferían pasar de estos proyectos.

guia arduino 2016

Tomando en cuenta esto, Massimo Banzi y Hernando Barragan decidieron que había que hacer algo al respecto. Fue así como se pusieron manos a la obra para desarrollar una plataforma que fuera lo suficientemente completa como para competir con los costosos sistemas comerciales, pero que al mismo tiempo pudiera mantenerse ligera, económica y fácil de compartir por Internet.

Es así, como en la actualidad, Arduino y sus variantes, pueden ser adquiridos por entre 10 y 30 dólares, dependiendo de proveedores y distribuidores. Claro, los diseños también pueden ser directamente descargados de Internet de manera gratuita, y el usuario puede ensamblarlos y cargar el software necesario para hacer funcionar los microcontroladores.


¿Cómo funciona Arduino?

Como pasa con la mayoría de las placas microcontroladores las funciones de Arduino pueden resumirse en tres. En primera instancia, tenemos una interfaz de entrada, que puede estar directamente unida a los periféricos , o conectarse a ellos por puertos. El objetivo de esa interfaz de entrada es llevar la información al microcontrolador, la pieza encargada de procesar esos datos. El mentado microcontrolador varía dependiendo de las necesidades del proyecto en el que se desea usar la placa, y hay una buena variedad de fabricantes y versiones disponibles

display lcd arduino.

Por último, tenemos una interfaz de salida, que lleva la información procesada a los periféricos encargadas de hacer el uso final de esos datos, que en algunos casos puede bien tratarse de otra placa en la que se centralizará y procesara nuevamente la información, o sencillamente, por ejemplo, una pantalla o un altavoz encargada de mostrar la versión final de los datos.

De nuevo, Arduino es un sistema, y no una placa única. Por esto, el funcionamiento concreto dependerá del proyecto. Así, en un móvil hecho con Arduino tendremos varios microcontroladores, encargados de las conexiones de red, los datos necesarios para la entrada de números y mostrar información en pantalla, entre otras cosas. Así mismo, un reloj hecho con Arduino solamente haría falta un chip que cuantifique la hora y la muestre en una pantalla.

Como ya hemos dicho, Arduino es casi sinónimo de hardware libre, y con eso, estamos hablando de una de las plataformas más complejas y variables que podrían existir.



Introducción a Arduino [Guía completa] Parte 2

Sensor de ultrasonidos HC-SR04

Dentro del mundo Arduino, el emisor/receptor de ultrasonidos HC-SR04 es quizás uno de los complementos más reconocibles. Este sensor se emplea en todo tipo de proyectos, siendo su principal uso el de reconocer obstáculos, aunque debido su buena resolución, también se emplea para medir la distancias a objetos.

Descripción

Lo más singular del sensor de ultrasonidos HC-SR04 es quizás su "par de ojos", estos no son más que un emisor y un receptor de ultrasonidos que trabajan a una frecuencia de 40KHz (una frecuencia inaudible para las personas).

led arduino

Este sensor consta de 4 pines, alimentación (Vcc), un disparador (Trig), el receptor (Echo) y masa (GND). Para el correcto funcionamiento del sensor es necesario el conectar estos 4 pines.

Las características básicas de este sensor y que se deben de tener en cuenta al trabajar con él son:


oled arduino

Como funciona

El principio en el que se basa su funcionamiento es muy sencillo, tan solo hay que generar una onda sónica en el emisor mediante un pulso en la patilla que pone "trig" (trigger o disparador), esta onda al encontrarse con algún obstáculo rebotará, volviendo al sensor y siendo registrada por el receptor, traduciéndose esta en un pulso en la patilla "Echo".

Introducción a Arduino [Guía completa] Parte 2

Con esto podemos hacer dos cosas, detectar un obstáculo esperando simplemente que Arduino reciba un "Echo" o contar el tiempo que transcurre desde que se manda el pulso por el trigger hasta que se recibe, de esta forma, y conociendo cual es la velocidad del sonido, podemos determinar de forma muy sencilla la distancia exacta a la que se encuentra el objeto en el que esta rebotando la señal.

Para aclarar un poco el factor de multiplicación que vamos a introducir en Arduino, basta con decir que la velocidad es igual al espacio dividido por el tiempo que se tarda en recorrer dicho espacio. La velocidad del sonido es conocida (343m/s) y el tiempo lo vamos a determinar, como el tiempo que transcurre desde que efectuamos el disparo hasta que recibimos el eco.

Tener en cuenta que este tiempo será doble, ya que la onda hace el camino de ida y el de regreso.

Aquí tenéis un pequeño resumen del cálculo que hay que hacer:


arduino

Ejemplo para medir distancias

Ahora os voy a enseñar un ejemplo básico para que implementéis el sensor de ultrasonidos como medidor de distancias, a partir de aquí, podéis complicar todo lo que queráis el ejemplo y usarlo en proyectos más complejos, pero esta es la base que debéis conocer.

Para este montaje vais a necesitar:

  • Una placa Arduino
  • Un sensor de ultrasonidos HC-SR04
  • Una placa de prototipado
  • Cables de conexión

El montaje es muy sencillo, tan solo hay que suministrar alimentación al modulo de ultrasonidos (conectar Vcc a +5 y GND a masa) y los pines de "echo" y "triger" conectarlos a los pines 8 y 9 respectivamente.

Aquí os dejo un esquema del montaje:


guia arduino 2016

Una vez conectado todo, tan solo habrá que cargar el código de programa.

Código de programa

Como podéis ver a continuación, el código de programa no hace más que lo explicado anteriormente, emitirá un pulso por la patilla 9 que esta asignada al "trigger" que previamente se habrá reseteado (puesta a LOW) para evitar problemas.

digitalWrite(pulso,LOW); //Por cuestión de estabilización del sensor

delayMicroseconds(5);

digitalWrite(pulso, HIGH) //envío del pulso ultrasónico

delayMicroseconds(10);

Y en las siguientes instrucciones se obtiene el tiempo (al recibir el "echo" y se aplica la fórmula explicada anteriormente para obtener la distancia exacta al objeto

tiempo = pulseIn(rebote, HIGH); //función para medir el tiempo y guardarla en la variable "tiempo"

distancia = 0.01715*tiempo; //fórmula para calcular la distancia

/*
PRACTICA 1 "SENSOR DE ULTRASONIDOS"
Muestra la distancia a la que se encuentran los objetos
*/

#define pulso 9 //define la salida por donde se manda el pulso como 9
#define rebote 8 //define la salida por donde se recibe el rebote como 10

int distancia; //crea la variable "distancia"
float tiempo; //crea la variable tiempo (como float)

void setup()
{
Serial.begin(9600); //inicializa el puerto serie
pinMode(pulso, OUTPUT); //Declaramos el pin 9 como salida (pulso ultrasonido)
pinMode(rebote, INPUT); //Declaramos el pin 8 como entrada (recepción del pulso)
}

void loop()
{
digitalWrite(pulso,LOW); //Por cuestión de estabilización del sensor
delayMicroseconds(5);
digitalWrite(pulso, HIGH); //envío del pulso ultrasónico
delayMicroseconds(10);
tiempo = pulseIn(rebote, HIGH); //funcion para medir el tiempo y guardarla en la variable "tiempo"
distancia = 0.01715*tiempo; //fórmula para calcular la distancia

/*Monitorización en centímetros por el monitor serial*/
Serial.print("Distancia: ";
Serial.print(distancia);
Serial.println(" cm";
delay(3000);
}



Una vez tengáis el circuito montado y le carguéis a Arduino el programa que os he dejado, tan solo tendréis que abrir la comunicación serie para poder visualizar la dista distancia a la que se encuentra el objeto más cercano en la pantalla del vuestro ordenador. Para abrir el monitor serie en el entorno de programación de Arduino, debeis ir a la pestaña "herramientas" y darle a la opcion "Monitor Serial" o usar las teclas de acceso rápido Ctrl + Mayusculas + M.

Se abrirá una pestaña como esta que mostrará el valor de la distancia en "cm".


display lcd arduino


Sensor de Temperatura y Humedad DHT

Para medir temperaturas existen un gran número de sensores en el mercado, la mayoría de ellos son sensores resistivos (termistores), los cuales varían su resistencia en función de la temperatura, estos sensores pueden ser de dos tipos, PTC (Positive Temperature Coefficient) que aumentan su resistencia al aumentar su temperatura ó NTC (Negative Temperature Coefficient) que disminuyen su resistencia al aumentar la temperatura. Otro tipo de sensores son los llamados "termopares", que son sensores formados por dos metales distintos que producen una diferencia de potencial al someterse dichos metales a temperaturas diferentes.

Descripción del sensor DHT

Dentro de la amplia gama de sensores que existen, uno de los más utilizados en conjunto con Arduino, son los de la serie DHT. Estos son sensores digitales que se usan para la medida de temperatura y humedad en el ambiente y están formados por un sensor de humedad resistivo y una resistencia NTC para la medida de la temperatura, todo ello conectado a un microcontrolador de 8bit y encapsulado en un mismo dispositivo.

Dentro de la serie de sensores DHT, podemos encontrar 2 tipos, el DHT-11 y el DHT-22, estos sensores funcionan de igual forma, la única diferencia es la resolución que podemos obtener y los rangos de temperatura máximo y mínimo de cada uno.


led arduinooled arduino

Como podéis ver en la tabla superior, la diferencia entre ambos sensores es notable, haciendo que el uso del sensor DHT-11 este relegado a aplicaciones educacionales o a usos en los que no se necesiten resoluciones elevadas. La diferencia de precio entre ambos también es importante, siendo el sensor DHT-22 3 o 4 veces más caro que el DHT-11.

Tened en cuenta las características de ambos sensores antes de adquirir uno u otro, dependiendo de donde queráis aplicarlo puede que necesitéis una resolución u otra.


Uso del Sensor

Tanto el sensor DHT-11 como el DHT22 funcionan de la misma manera, ambos cuentan con 4 pines de los que tan solo 3 son utilizados. El pin 1 se conectará a alimentación (3-5v) el pin 2 se utilizará para la transmisión de datos entre el sensor y Arduino y el pin 4 irá conectado a masa.

Introducción a Arduino [Guía completa] Parte 2

Ejemplo para medir temperatura y humedad.

En este pequeño ejemplo vamos a leer tanto la temperatura como la humedad del sensor DHT-11 y la vamos a mostrar en el monitor serie.

Para este montaje vais a necesitar:

Una placa Arduino


  • El sensor de Temperatura y humedad DHT-11 ó DHT-22
  • Una placa de prototipado (BreadBoard)
  • Cables de conexión

El montaje que vamos a realizar es muy sencillo, tan solo hay que conectar el sensor en la placa de prototipado alimentándolo por el pin 1 (5 voltios) y conectando a masa el pin 4. Para la transmisión de datos usaré la E/S digital 2 de Arduino que conectaré al pin 2 del sensor.

arduino

Aquí tenéis el esquema del montaje:

Una vez tengáis el montaje completo, tan solo debéis de cargar el código de programa.

Código de programa


El programa que vamos a utilizar es muy básico, tan solo vamos a leer información del sensor y la vamos a mostrar por pantalla usando para ello el monitor del puerto serie.

Lo primero que vais a ver en el código de programa es un #include que hace referencia a la librería que usa Arduino para trabajar tanto con el sensor DHT-11 como con el DHT-22, antes de cargar el código, debeis de aseguraros de tener la librería incluida dentro de la carpeta "libraries" que encontraréis dentro de la carpeta de Arduino.


#include <dht.h> //Añade la librería necesaria para usar el sensor
#define dht_dpin 2 //define el pin donde va conectado el sensor
dht DHT;

void setup()
{
Serial.begin(9600); //inicializa el puerto serie
}

void loop()
{
DHT.read11(dht_dpin);
Serial.print("Humedad = "; //muestra en pantalla "Humedad = "
Serial.print(DHT.humidity); //muestra el valor de humedad
Serial.print("% ";
Serial.print("Temperatura = "; //muestra en pantalla "Temperatura = "
Serial.print(DHT.temperature); //muestra el valor de temperatura
Serial.println("C ";
delay(1000);
}


Como podéis ver, el código es muy sencillo, tan solo hay que habilitar el puerto serie para mostrar los datos y en el bloque de programa principal hacer una lectura de los datos del sensor con la instrucción DHT.read11(dht_dpin);

Para mostrar los datos simplemente abrir el puerto serie con vuestra placa conectada y empezareis a ver los datos del sensor.


guia arduino 2016

Tipos de LCD para Arduino

Los displays LCD son elementos muy útiles en la mayoría de proyectos para poder visualizar información sin tener conectado a nuestro Arduino un ordenador, es por ello que vamos a hacer un pequeño repaso a los diferentes tipos de displays LCD que podemos encontrarnos y que son 100% compatibles con Arduino. El conocer diferentes displays y sus características nos será muy útil a la hora de decidir que display usaremos en nuestros proyectos.

display lcd arduino

Tipos de Display

En el mercado podemos encontrar muchos tipos de displays diferentes, estas diferencias están marcadas fundamentalmente por el tipo de display, que va a determinar como van a ser mostrados los datos y por la conexión que se usa para mostrar los datos en el display.

Display LCD de lineas

Los displays LCD (liquid crystal display) son pantallas delgadas formadas por una serie de pixeles de color monocromo que usualmente se colocan delante de una luz reflectora. Este tipo de displays se utilizan en infinidad de dispositivos debido a a su bajo consumo y a que tienen una vida util muy grande. Son los displais mas comunes a la hora de trabajar con Arduino, ya que además de ser unos displais muy sencillos de usar son muy asequibles.


led arduino

Cuando compremos displays de este tipo lo que debemos de tener en cuenta es que tipo de dato vamos a mostrar, ya que solo permiten mostrar caracteres y algunos símbolos dentro de una posición definida para el carácter, para que os hagáis una idea, cada carácter va a estar formado por una matriz de pixeles de 5x8 que va a acotar nuestros caracteres.

oled arduino

Dentro de los displays LCD de lineas hay un gran numero de variantes, podemos encontrarlos con diferente numero de líneas, mayor o menor numero de caracteres por línea, retroiluminados en algún color concreto o incluso sin retroiluminar. De todas estas variantes, actualmente los mas comunes son los displays de 2x16 (2 lineas y 16 caracteres por línea) y de 4x20 (4 líneas y 20 caracteres por línea).

Dentro de estos dos tipos podemos encontrarnos la retroiluminación en diversos colores, según el fabricante.


Conexionado del display ldc de lineas

Este tipo de displays poseen 16 pines de conexión (14 si el display no tiene retroiluminación), por estos pines es por donde el display recibirá la alimentación, tendrá la referencia para el ajuste del contraste, recibirá los datos por el bus de información y algunas otras funciones que veremos mas detalladas en la tabla del pineado del display.

Introducción a Arduino [Guía completa] Parte 2

VSS: este pin debe ir conectado a GND (masa).

VDD: pin asociado a la alimentación principal del display.

VO: en este pin podemos ajustar el contraste del display, puede conectarse a un potenciometro de 10K que permita variar el brillo o a una resistencia fija si no queremos alterar el valor del contrste.

RS: es el selector de registro, conmuta entre el envío de caracteres y el envío de comandos de control, como por ejemplo borrar la pantalla o desplazar el cursor.

RW: es el pin que conmuta entre lectura/escritura. Normalmente se trabaja con este pin a GND (modo escritura).

E: pin que habilita la pantalla para recibir información "Enable".

D0~D3: Estos pines solo se usan cuando utilizamos el modo de comunicación con 8 bit's, normalmente se usa el modo de 4 bit´s por necesitar menor cableado.

LED+ y LED- : Estos pines estan asociados al led que retroilumina la pantalla, normalmente están descritos en la placa por A (anodo) que se conecta a 5v y K (cátodo) que va conectado a GND.

Conector I2C

Los displays mostrados anteriormente son muy usados desde hace bastantes años, pero tenian el inconveniente de necesitar demasiadas conexiones, lo que en muchas ocasiones limitaba el poder controlarlos con un microcontrolador de gama baja ya que requerían que al menos 6 pines del microcontrolador estuvieran dedicados al display. Para solucionar esto, se desarrolló un interface que acoplado al display hace que este reciba la información mediante un conector I2C, reduciendo la conexión a 2 hilos (mas otros dos para la alimentación).

arduino

El poder utilizar displays conectados a Arduino mediante un bus I2C ha simplificado tanto el trabajo que es muy común ver proyectos sobre esta plataforma que muestren datos por uno de estos displays.

Display LCD en matriz de puntos

Este es un tipo de display muy conocido por la gente que se dedica al mundo de la impresión 3D, ya que la mayoría de las impresoras incoporan uno como este. Este dislay es igual que el display LCD de lineas con la diferencia que aqui no existen las lineas, todo el display es una matriz de puntos y de igual forma que en el de linea podíamos activar cualquier punto de la matriz que formaba el caracter (que era de 5x8 pixeles), en el display de matriz de puntos tenemos una mayor resolución de pixeles. Un display muy común es el de 128x64 lo que nos permite dibujar menúes y elementos gráficos que hacen mucho mas agradable el interface grafico de cara al usuario.

guia arduino 2016

El uso de este display no esta muy extendido en aplicaciones con Arduino, ya que complica bastante el mostrar información en pantalla, en futuros tutoriales os enseñaré como utilizarlo y como crearos vuestros propios menús.

Display OLED

Este tipo de display es muy interesante para aplicaciones donde el tamaño importa, por lo general son displays muy pequeñitos con una gran resolución y consumos muy bajos. El nombre OLED proviene del ingles "organic light-emitting diode" y tiene este nombre por que los LEDs con el que se compone la pantalla tienen componentes orgánicos que al paso de una corriente eléctrica emiten luz por si mismos.

display lcd arduino

La principal ventaja de estos displays reside en la luz que emiten, ya que al emitir luz propia son mucho mas luminosos que los LCD dando un mayor contraste, a demás de eso tienen un consumo menor.

Estos displays se encuentran formando matrices de puntos en la totalidad de su superficie y es posible encontrarlos en varios colores, incluso con la posibilidad de iluminarse en diferentes colores.


Display LCD mediante bus I2C/TWI/SPI

Los displays LCD son muy útiles para mostrar todo tipo de información sin necesidad de tener conectado el ordenador a nuestro Arduino, de esa forma podemos hacer proyectos que sean totalmente independientes de un ordenador y que al mismo tiempo nos permitan visualizar todo tipo de información, desde mensajes pre-cargados hasta el valor de variables de nuestro sistema.

En este tutorial vamos a ver como conectar un display LCD mediante el protocolo I2C. El conectar el display de esta forma nos va a simplificar en gran medida el proyecto ya que tan solo vamos a hacer uso de 2 cables para la comunicación entre nuestro Arduino y el display LCD. Si conectásemos el display sin el módulo interface serie I2C/SPI necesitaríamos al menos 6 cables para el funcionamiento de la pantalla (además de los cables para la alimentación del display).


led arduino

Otra ventaja de usar un bus I2C para la conexión es que además del display también podemos conectar otros dispositivos a la misma línea i2C, por lo que con tan solo 2 cables podemos conectar innumerables dispositivos.

¿Que es el bus I2C?

El bus I2C es un bus de datos serie desarrollado por Philips en 1982, este bus se utiliza mayoritariamente para la comunicación entre un microcontrolador y diferentes periféricos. Por motivos de licencia, atmel introdujo el TWI (Two-Wired-Interface) en sus productos, pero aunque tengan diferente nombre, el TWI y el I2C son idénticos a nivel técnico.

El bus I2C esta diseñado como un bus de comunicación Maestro-Esclavo, esto quiere decir que hay un dispositivo maestro que regula la comunicación y uno o mas dispositivos esclavos que funcionan a petición del maestro. Existe la posibilidad de que un sistema posea mas de un Maestro (modo Multimaestro), pero tan solo puede haber un maestro activo al mismo tiempo, ya que estos dispositivos son los que gestionan la velocidad de comunicación y habilitan o no los diferentes periféricos, si hubiera 2 Maestros conectados al mismo tiempo ocasionarían graves problemas de comunicación.

El Bus I2C está formado por dos líneas, SLK (Serial Clock) y SDA (Serial Data) o lo que es lo mismo una línea por donde se transmite la información (SDA) y otra que marca la velocidad de comunicación (SLK) además de marcar los tiempos para la lectura/escritura en el bus.

Ambas líneas precisas una resistencia de PullUp conectada a Vcc, el valor de esta resistencia suele estar comprendido entre 1KΩ y 2KΩ


oled arduino

Algo que debéis tener en cuenta cada vez que trabajáis con el bus I2C es que cada elemento conectado al bus tiene una dirección, por lo que para comunicarnos con cada dispositivo debemos conocer su dirección, en los siguientes apartados os enseñaré como ver la dirección del dispositivo, ya que es un error muy común el poner una dirección errónea haciéndonos pensar en muchas ocasiones que el dispositivo I2C esta estropeado.

Los microcontroladores de Atmel incorporan todo el Hardware necesario para realizar comunicaciones mediante el bus I2C, lo único que hay que tener en cuenta cuanto trabajemos con este bus en Arduino es añadir la librería Wire.h, esta librería nos va a simplificar mucho el trabajo, ya que usando un juego de instrucciones simples podremos controlar todas las funciones del bus I2C sin problemas.


Módulo adaptador a I2C/TWI

Introducción a Arduino [Guía completa] Parte 2

Para adaptar la señal entre la pantalla y nuestro Arduino usamos un módulo que hace la vez de interface entre estos dispositivos, este módulo irá soldado al display o fijado mediante un conector dejando en uno de sus extremos 4 pines para la conexión con Arduino y para la alimentación del display.

Este módulo funciona con una alimentación de 5 voltios (que deberá ser conectada al terminal Vcc) y cuenta con un potenciómetro para el ajuste del contraste de la pantalla.

El "Jumper Backlight" debe de estar colocado si queremos que la luz de fondo de la pantalla pueda usarse, si retiramos este jumper evitamos así que se encienda.

De fabrica este módulo viene con una dirección preestablecida, si queremos cambiarla debemos de puentear los pines del selector de dirección para conseguir otra dirección


El módulo puede comprarse ya integrado en la pantalla o separado y soldarlo directamente o ponerle un conector para poder quitarlo y ponerlo.

Conexionado

El conexionado de este módulo es muy sencillo, tan solo hay que conectar la alimentación del módulo y las líneas SDA y SCL a los pines correspondientes de nuestra placa Arduino. Hay que tener en cuenta que según el Arduino que usemos debemos de conectarlo en un pin u otro, ya que los pines SCL y SDA están asociados a diferentes pines dependiendo del modelo de Arduino.

arduino

En mi caso para hacer el montaje he usado un Arduno UNO, por lo que he conectado el PIN (A4) a SDA y el PIN (A5) a SCL, pero según el modelo de Arduino deberéis de conectarlo a uno u otro pin, aquí os dejo una lista con los pines usados para el Bus I2C de los Arduinos más comunes:

Placas I2C / TWI pins
Uno, EthernetA4 (SDA), A5 (SCL)
Mega2560 20 (SDA), 21 (SCL)
Leonardo 2 (SDA), 3 (SCL)
Due 20 (SDA), 21 (SCL)

¿Como obtener la dirección del dispositivo I2C?

Como os comenté anteriormente es muy importante cuando trabajamos con dispositivos conectados a un bus I2C conocer la dirección del dispositivo, en internet hay muchos tutoriales de como conectar este tipo de displays y muchas veces no funcionan por que la dirección que traen no es la adecuada, haciéndonos creer que nuestro display esta estropeado.

Para esto antes de meternos con el programa principal vamos a instalar un pequeño programa en nuestro arduino que nos va a dar la dirección del dispositivo conectado al bus I2C.


I2C Scanner

El I2C Scanner es un programa que se carga en nuestro Arduino y detectará la dirección de los dispositivos que estén conectados al bus I2C.

Para ejecutar el I2C Scanner tan solo hay que cargar el programa en Arduino, conectar el dispositivo en el Bus I2C y abrir el monitor serie, donde se mostrará la siguiente pantalla con los datos leídos.

guia arduino 2016

Como podéis observar en mi caso el display me ha dado la dirección 0x27, esta dirección debéis guardarla, ya que la vamos a usar posteriormente en nuestro programa.

Programa Básico

Ahora que ya tenemos conectado nuestro diplay y que conocemos su dirección vamos a escribir un pequeño programa para ver lo sencillo que es mostrar datos en el display.

#include <Wire.h> // Incluimos la librería Wire.h
#include <LCD.h> // Incluimos la librería para el uso del display
#include <LiquidCrystal_I2C.h> // Librería para la comunicación del display mediante I2C

#define I2C_ADDR 0x27 // Dirección del dispositivo I2C

LiquidCrystal_I2C lcd(I2C_ADDR,2, 1, 0, 4, 5, 6, 7);
void setup()
{
lcd.begin (16,2); // Inicializar el display con 16 caracteres 2 lineas
lcd.setBacklightPin(3,POSITIVE);
lcd.setBacklight(HIGH);
}
void loop()
{
lcd.home (); // go home
lcd.print(" ZONA MAKER"; // Muestra en pantalla
lcd.setCursor ( 0, 1 ); // Cursor a la primera posición de la segunda linea
lcd.print("Hola mundo!"; // Muestra en pantalla
}


Como podéis ver es un programa muy sencillo, se pueden identificar claramente la cabecera (que tiene las librerías, objetos, variables...) el bloque setup (donde configuramos e inicializamos los diferentes elementos que tengamos) y el bloque loop (que contendrá las instrucciones de nuestro programa principal).

La cabecera de programa

En este caso la cabecera contendrá las librerías que vamos a usar en nuestro programa, la dirección del dispositivo I2C y un objeto llamado "LiquidCrystal_I2C" que contendrá la dirección del dispositivo i2C además de los pines a los que va asociado el display (No son los pines de Arduino).

#include <Wire.h> // Incluimos la librería Wire.h
#include <LCD.h> // Incluimos la librería para el uso del display
#include <LiquidCrystal_I2C.h> // Librería para la comunicacion del display medianet I2C

#define I2C_ADDR 0x27 // Dirección del dispositivo I2C

LiquidCrystal_I2C lcd(I2C_ADDR,2, 1, 0, 4, 5, 6, 7);


La librería Wire.h es la que se encargará de establecer la comunicación usando el protocolo i2C, esta librería estaba integrada de serie en las primeras versiones del IDE de Arduino, si tu versión de Arduino no la incorpora puedes descargarla en el apartado ¿Que es el bus I2C?

La librería LCD.h viene de serie con todas las versiones del IDE de Arduino y no es necesario que lo instaléis.

La librería LiquidCrystal_I2C.h es una librería creada por F. Malpartida (http://blog.electrofunltd.com/) y que a dia de hoy es considerada una de las mejores para la utilización de displays LCD mediante el protocolo I2C.


Como podéis observar en la cabecera es donde debemos introducir la dirección que obtuvimos del "I2C Scanner", en mi caso me ha dado 0x27, si a vosotros os ha dado otra debéis sustituirlo en el programa, en la parte donde pone #define I2C_ADDR 0x27

El Bloque setup()

Como siempre en el bloque setup(), vamos a configurar nuestro dispositivo, en este caso el display.

void setup()
{
lcd.begin (16,2); // Inicializar el display con 16 caracteres 2 lineas
lcd.setBacklightPin(3,POSITIVE);
lcd.setBacklight(HIGH);
}

En mi caso he usado 3 instrucciones, aunque tan solo lcd.begin es totalmente necesaria.

lcd.begin(16,2) --> Esta instrucción inicializa nuestro display y además especifica que estamos usando un display de 16 caracteres y 2 líneas, si estamos usando un display de 20 caracteres y 4 líneas la instrucción quedaría lcd.begin(20,4).

lcd.setBacklightPin(3,POSITIVE) ---> Esta instrucción establece que el pin 3 del display es el que enciende y apaga la luz de fondo.

lcd.setBacklight (HIGH) --> Con esta instrucción encendemos la luz de fondo de nuestro display, en este caso la enciendo en el setup, porque quiero que esté siempre encendida, en muchos casos esta instrucción se pone en el programa principal asociada a la pulsación de un botón o a algún otro evento, de esa forma el display permanecerá apagado consumiendo menos mientras y lo encenderemos solo cuando lo necesitemos.

El Bloque loop()

Este bloque contiene el programa principal, que en este caso mostrará por pantalla un mensaje, esta no es la mejor forma de mostrar datos por pantalla, ya que estamos refrescando los datos de la pantalla continuamente para un texto que no cambia, pero para nuestro ejemplo nos sirve sin problemas.

void loop()
{
lcd.home (); // go home
lcd.print(" ZONA MAKER"; // Muestra en pantalla
lcd.setCursor ( 0, 1 ); // Cursor a la primera posición de la segunda linea
lcd.print("Hola mundo!"; // Muestra en pantalla
}

lcd.home () ---> Esta función coloca el cursor del display en la posición inicial (parte superior izquierda de la pantalla).

lcd.print (" MENSAJE" ) ---> La sintaxis de esta instrucción es muy parecida a la de escribir datos en el terminar, tan solo cambia "Serial" por "lcd", el funcionamiento es el mismo, escribe lo que le digamos en el display. Cuando escribamos debemos de tener en cuenta el espacio disponible, si la palabra tiene más letras que el espacio disponible no se mostrará completa.


lcd.setCursor (0,1) ---> Con esta instrucción podemos colocar el cursor en cualquier parte de la pantalla, una vez colocado, este será el punto desde el cual se empezará a escribir. Los dos valores que aparecen hacen referencia a la posición y la fila, en este ejemplo (0,1) indica que vamos a empezar a escribir en la posición 0 de la fila 1.

Tanto la posición como la fila empiezan a contar desde 0, por lo que la fila 1 en realidad es la segunda fila

Una vez cargado el programa y si habéis seguido los pasos este será el resultado


display lcd arduino

PARTE 1 CLICK EN LA IMAGEN

Datos archivados del Taringa! original
486puntos
827visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
7visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

M
Miyata1987🇦🇷
Usuario
Puntos0
Posts1,056
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.