Go Down

Topic: Problema al conectar lcd 20x4 a traves del bus l2c (Read 578 times) previous topic - next topic

jamona

Buenas! A ver si podeis echarme una mano:
Estoy tratando de hacer funcionar un lcd de 20x4 con un bus l2c con este codigo, sacado de la pagina de Luis LLamas
http://www.luisllamas.es/2016/05/arduino-lcd-i2c/
He conectado bien los pines SDA, SCL, GND Y 5V(lo he comprobado varias veces) y he calcado el codigo para asegurarme que no es problema que yo lo haya programado mal, susodicho codigo:

Code: [Select]
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 20, 4);  // Inicia el LCD en la dirección 0x27, con 16 caracteres y 2 líneas

void setup()
{
 lcd.init();                     
 lcd.backlight();
 lcd.setCursor(0, 0);
 lcd.print("Linea 1");
 lcd.setCursor(0, 1);
 lcd.print("Linea 2");
 delay(2500);
 lcd.clear();
}

void loop()
{
}



La pantalla enciende y la intensidad esta bien ajustada (me salen los cuadraditos blancos) pero no da mas senial,
a ver si se os ocurre algo a vosotros que a mi no.
Gracias de antemano y perdon por los acentos y las enies pero tengo el teclado ingles  :).

indio99

Hola.

Por favor cumple las normas del foro, el enlace web no lo copies tal cual, utiliza las etiquetas para enlaces que encuentras al escribir el post.

Al igual que con el código, utiliza la etiqueta code para enmarcar el código

Puedes editar tu post y corregirlo por favor.

En cuanto a tu problema, puede ser desde la dirección I2c que 0x27 no sea la de tu pantalla y por tanto tendrías que buscar la que le corresponda, o como indicas que se ven los cuadros blancos, que sea por saturación de contraste, tienes que ajustar hasta que justo, dejan de verse los cuadros blancos.

Saludos
CodeTronic

jamona

Corregido, la intensidad está bien ajustada, ya que en vez de cuatro filas de cuadraditos me salen dos, en cuanto a la dirección l2c está correcta, es 0x27, he usado un l2c scanner para averiguarla.

surbyte

Prueba asi
Code: [Select]
#include <Wire.h>  
      #include <LiquidCrystal_I2C.h>
      LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);


Pero yo te recomendaría una librería si no te funciona. Prueba y luego te paso la librería.

jamona

Nada, me sale que POSITIVE no ha sido declarado, de todas maneras, que significa lo que me has pasado?

Acuario

Hay dos (o incluso mas) librarías diferentes. Me parece que estas usando la libraría de Frank de Brabander y esa no tiene el constructor que contiene POSITIVE.

La de Francisco Malpartida es diferente y si, tiene un constructor diferente que contiene POSITIVE.

No has dicho que versión de Arduino que estas probando, uno, nano, mega?

Prueba este
Code: [Select]

void setup()
{
Wire.begin();
lcd.begin();               
lcd.backlight();
lcd.home();                   
lcd.print("Línea 1");
lcd.setCursor(0, 1);       
lcd.print("Línea 2");
}


Me ha dado cuenta que no has hecho una llamada a Wire.begin(), posiblemente por eso no funciona..

lightcalamar

Si realizas esto y no te funciona, pantalla LCD mal.
Sigue esto;

Decarga la libraría Francisco Malpartida , ingresa este código;

Code: [Select]

#include <LiquidCrystal_I2C.h>     
#include <Wire.h>   

#define I2C_ADDR  0x27
#define BACKLIGHT_PIN  3
#define ENABLE  2
#define RW  1
#define RS  0
#define DATA4  4
#define DATA5  5
#define DATA6  6
#define DATA7  7

LiquidCrystal_I2C lcd(I2C_ADDR, ENABLE, RW, RS, DATA4, DATA5, DATA6, DATA7);



  void inicio_LCD()                         
  {                                             
      lcd.clear();                     
      lcd.setCursor(0, 0);             
      lcd.print("     Modulo LCD");         
      lcd.setCursor(0, 1);             
      lcd.print("  Display I2C... ");   
      delay(1500);                     
      lcd.clear();                     
      lcd.setCursor(0, 1);             
      lcd.print("    Iniciando...");       
      delay(1500);                     
      lcd.clear();                     
  }

void setup(){
     lcd.begin(20, 4);
     lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
     lcd.setBacklight(HIGH);
   
     inicio_LCD();      // LLamo a la función que inicia el LCD

}

void loop(){
}


Este es el código que uso para LCD 20x4 alfanuméricos. Saludos.
Mi proyecto Radio FM con RDS -  MDC v1.0;
https://forum.arduino.cc/index.php?topic=400484.0
https://forum.arduino.cc/index.php?topic=448606.0
https://github.com/lightcalamar

surbyte

Presta atención a como usar la librería porque debes retirar la anteriores. 
Debes reemplazar LiquidCrystal (borrando todo lo interior a la carpeta) por la librería fmalpartida y borrar LiquidCrystal_I2C anterior.

DiegoGiacomoni

Hola, el Cod. está bien, tienes la librería correcta ? cual descargaste ?

Saludos,


Go Up