jueves, 22 de enero de 2015

Configuración y funcionamiento de las pantallas LCD 2x16

A veces es complicado poner en funcionamiento las pantallas LCD. El problema más habitual es que la librería que usamos no está correctamente configurada para nuestro modelo de LCD. 
A continuación explico como conseguimos nosotros hacerla funcionar.


Configuración de la librería

La librería para usar los LCD 16x2 es la de fmalpartida (https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads).
Para usarla hay que descomprimirla en la carpeta libraries del IDE, borrando previamente la carpeta “Liquidcrystal” existente.

Para determinar la dirección de la tarjeta IC2 usamos el sketch de la web:
Marca
YwRobot o DFRobot
Dirección I2C
0x27
Asignación pines
  • RS               P0
  • RW              P1
  • E                 P2
  • D4               P4
  • D5               P5
  • D6               P6
  • D7 -             P7
  • Backlight -    P3
  • Bl Polarity    POSITIVE
Para configurar nuestra tarjeta y que funcione hay que cambiar la asignación de los pines en los sketches. Tenemos dos formas:
  1. Sustituir o comentar las línea de configuración del LCD que empiezan por LiquidCrystal_I2C lcd(xxx)  por:
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // Set the LCD I2C address
  1. Sustituir o comentar las línea de configuración del LCD que empiezan por LiquidCrystal_I2C lcd(xxx)  por el siguiente código:
 /*-----( Declaración de constantes )-----*/
  // Dirección I2C del LCD
#define I2C_ADDR    0x27
  // Asignación de pines para el YwRobot LCM1602 IIC V1 (PCF8574T)
#define BACKLIGHT_PIN  3
#define En_pin  2
#define Rw_pin  1
#define Rs_pin  0
#define D4_pin  4
#define D5_pin  5
#define D6_pin  6
#define D7_pin  7
  // Iluminación ON/OFF
#define  LIGHT_OFF  LOW
#define  LIGHT_ON  HIGH
/*----- Configurar LCD -----*/  
LiquidCrystal_I2C  lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);

Variantes del código

Podemos usar la primera forma vista en el apartado anterior en los ejemplos en los que estén definidas las variables como la segunda forma. El código quedaría así (comentando las líneas innecesarias).
///*-----( Declaración de constantes )-----*/
//  // Dirección I2C del LCD
//#define I2C_ADDR    0x27
//
//  // Asignación de pines para el YwRobot LCM1602 IIC V1 (PCF8574T)
#define BACKLIGHT_PIN  3
//#define En_pin  2
//#define Rw_pin  1
//#define Rs_pin  0
//#define D4_pin  4
//#define D5_pin  5
//#define D6_pin  6
//#define D7_pin  7
//
  // Iluminación ON/OFF
//#define  LIGHT_OFF  HIGH
#define  LIGHT_ON  HIGH
//
///*----- Configurar LCD -----*/  
//LiquidCrystal_I2C  lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // Set the LCD I2C address
Como se ve es necesario declarar el pin BLACKLIGHT_PIN y la retroiluminación poniendo el LIGHT_ON en HIGH (en LOW estaría apagado el fondo de pantalla).
También se pueden comentar estas dos líneas y dejar sólo la declaración de la configuración de la LCD a cambio de comentar también las líneas del setup() en las que se activa la iluminación:
///*-----( Declaración de constantes )-----*/
//  // Dirección I2C del LCD
//#define I2C_ADDR    0x27
//
//  // Asignación de pines para el YwRobot LCM1602 IIC V1 (PCF8574T)
//#define BACKLIGHT_PIN  3
//#define En_pin  2
//#define Rw_pin  1
//#define Rs_pin  0
//#define D4_pin  4
//#define D5_pin  5
//#define D6_pin  6
//#define D7_pin  7
//
  // Iluminación ON/OFF
//#define  LIGHT_OFF  HIGH
//#define  LIGHT_ON  HIGH
//
///*----- Configurar LCD -----*/  
//LiquidCrystal_I2C  lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // Set the LCD I2C address
void setup()   /*----( SETUP: RUNS ONCE )----*/
{
 lcd.begin (16,2);  // Inicializar LCD
// Definir configuración iluminación LCD
// lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
// Iluminar LCD
// lcd.setBacklight(LIGHT_ON);
}// END Setup

Ajuste del contraste del LCD

El potenciómetro de la tarjeta I2C , permite el ajuste del contraste. Para ajustarlo, arranque un sketch , gire la pantalla y ajuste hasta que vea los caracteres brillantes y no los bloques de fondo que los contienen.

Soldar LCD y tarjeta I2C

Se unen las dos tarjetas por la parte posterior, haciendo coincidir las patillas 1, que están marcadas en la LCD con un 1 y en la I2C con un cuadrado.



No hay comentarios:

Publicar un comentario