# Pantalla LCD I2C

Una pantalla LCD (Liquid Crystal Display) es una forma muy sencilla y económica de leer información desde nuestro Arduino. Un formato muy habitual es el 16x2 (LCD1602), es decir, pantallas que muestran 2 filas de 16 caracteres cada una.

Las pantallas LCD que disponen de módulo I2C facilitan enormemente el cableado, ya que permiten utilizar el protocolo de comunicación I2C, que solo precisa de dos pines de Arduino.

![Pantalla LCD de 16 caracteres y 2 filas (Imagen: oomlout, en Wikimedia Commons)](https://2488143710-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LBRvRz7obEecxoxM24f%2F-LBlKayyq9oYJU4Ct6Uk%2F-LBlLfrwLL_jDzFbbjUj%2F16x2_Character_LCD_Display.jpg?alt=media\&token=bb6ab4dc-9432-4cad-8b0f-824e72d83f4d)

## Conexión

Los pines I2C (SDA y SCL) dependen del modelo Arduino que utilicemos. Para las placas Arduino Uno, Nano y Mini el pin SCL es el pin analógico 5 y SDA es el pin analógico 4.

| **Módulo I2C** | **Arduino** |                                    |
| -------------- | ----------- | ---------------------------------- |
| SCL            | A5          | Proporciona una señal de reloj     |
| SDA            | A4          | Pin para la transferencia de datos |
| VCC            | 5V          | Alimentación a 5V                  |
| GND            | GND         | Ground                             |

![](https://blobscdn.gitbook.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-LBRvRz7obEecxoxM24f%2F-LBlOLgLVAP1J632yoqc%2F-LBlOOlgLOKgqn4Hi_vH%2Flcd_i2c_bb.png?alt=media\&token=7d862783-2802-4979-9801-588b140460ab)

## Programación

**PASO 1**. Para utilizar la pantalla LCD con módulo I2C hay que incluir la biblioteca `LiquidCrystal_I2C`.

{% hint style="info" %}
`LiquidCrystal_I2C`: <https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library>. &#x20;
{% endhint %}

**PASO 2**. Creamos una instancia de un objeto tipo `LiquidCrystal_I2C`. Para ello incluimos la instrucción `LiquidCrystal_I2C lcd(direccion, columnas, filas)` al principio del programa, antes de `setup()`:

* `lcd` es el nombre que vamos a usar para referirnos a nuestro LCD (podemos cambiarlo por otro cualquiera).
* `direccion` es la dirección I2C del dispositivo conectado a Arduino. La dirección por defecto del módulo suele ser `0x27` (también puede ser `0x3F`).
* `columnas` y `filas` es el número de columnas y filas de la pantalla, respectivamente. Para una pantalla 16x2 (16 columnas y 2 filas) escribiremos: `LiquidCrystal_I2C lcd(0x27, 16, 2)`.

**PASO 3**. Inicializamos la pantalla. Para ello, en la función `setup()`, incluimos la instrucción `lcd.begin()` (o, en lugar de lcd, pondremos el nombre que hayamos escogido para nuestro LCD).

**PASO 4**. Para utilizar las funciones de la biblioteca `LiquidCrystal_I2C`  escribimos la palabra `lcd` (o el nombre  que corresponda) e inmediatamente a continuación, separado por un punto, el nombre de la función, incluyendo siempre los paréntesis. Algunas de las funciones disponibles son las siguientes:

* `clear()`: borra la pantalla y sitúa el cursor en la esquina superior izquierda.
* `setCursor(columna, fila)`: sitúa el cursor del LCD en la posición indicada por columna y fila.
* `print(texto)`: escribe el texto o valor indicado en los paréntesis.
* `backlight()`: enciende la luz del fondo del LCD (es el estado por defecto).
* `noBacklight()`: apaga la luz del fondo del LCD.
* Otras funciones:
  * `home()`
  * `write()`
  * `cursor()`
  * `noCursor()`
  * `blink()`
  * `noBlink()`
  * `display()`
  * `noDisplay()`
  * `scrollDisplayLeft()`
  * `scrollDisplayRight()`
  * `autoscroll()`
  * `noAutoscroll()`
  * `leftToRight()`
  * `rightToLeft()`
  * `createChar()`

{% hint style="info" %}
Tutorial “LiquidCrystal Library Functions Tour Part 1”: <https://programmingelectronics.com/liquidcrystal-library-functions-tour-part-1/>
{% endhint %}
