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
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:
- 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
- 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.