lcd 12c me esta volviendo loco

23 Sep 2012
10
daganzo de arriba
Provincia
madrid
Buenas, tengo este lcd que compre en ebay al chino
[h=1]Serial IIC/I2C/TWI 2004 204 20X4 Character Display LCD para Arduino Módulo Azul[/h]llevo dos dias intentando buscar la libreria LiquidCrystal_I2C que funcione y no lo consigo e esta volviendo loco lo conecto en un arduino mega pines 20,21 e leido el foro casos parecidos, pero no me funciona. Me podriais echar los gurus una mano.
un saludo
 

jmcadsl

Miembro Honorífico
17 Ene 2010
972
España
Provincia
Madrid
Hola mariete.
Necesito 2 cosas,
1º- Pon el enlace donde compraste el LCD (suelen dar información muy util....
2º- Pon tu código

Estoy seguro que tienes un problema con la dirección de I2C que estás poniendo , o bien con la librería....los cables los tienes bien supongo.

Un saludo.
 
23 Sep 2012
10
daganzo de arriba
Provincia
madrid
Buenas jmcadsl el enlace es este
los cables creo que están bien lo e probado en mega y leonardo y el código uso los ejemplos y solo compilar me da problemas uso ide 1,0,1
tengo la cabeza loca
 

jmcadsl

Miembro Honorífico
17 Ene 2010
972
España
Provincia
Madrid
Si te da un error al compilar un ejemplo dd la librería es porqueesa llibrería no eestá creada para esa version del Ide.
Mañana te pongo un Enlace a mi web con una libreria compatible con el Ide 1.0.1
Un saludo
Jorge
 

jmcadsl

Miembro Honorífico
17 Ene 2010
972
España
Provincia
Madrid
Hola.
Desde este enlace te puedes descargar varias librrías que quizás te sean útiles.

Verás que hay varias para I2c , debes ir probando una a una a ver cual te sirve yo en los controladores que hago como no siempre es el mismo lcd tengo que poner una u otra para compilar (aunque luego el código es el mismo).

IMPORTANTE solo puede haber una carpeta de librerias I2c , es decir, cuando pruebes una y pongas otra quita la primera. Varás que tienen entre parentesis para que lcd sirve, eso debes borrarlo y dejar solo LiquidCrystal_I2C como nombre del directorio.

Link:

Un saludo
Jorge
 
23 Sep 2012
10
daganzo de arriba
Provincia
madrid
Buenas, muchas gracias jmcadsl las librerias me funcionan bien,pero cuando realizo este ejemplo me vuelve a dar errores de librerías onewire liquidcristal_12c
#include <LiquidCrystal_I2C.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define MARGEN_TEMPERATURA 0.3
// Creamos una clase llamada “oneWire” pasándole como parámetro el numero del pin de Arduino que se usara con el protocolo 1-Wire
OneWire oneWire(7);


// Creamos una clase llamada “sensores” pasándole como parámetro la clase “oneWire” que acabamos de crear
DallasTemperature sensores(&oneWire);


// Creamos una clase llamada “lcd” pasándole como parámetro los números de pines donde esta conectado físicamente el Display LCD a la tarjeta Arduino
LiquidCrystal_I2C lcd(0x3f,16,2);




void setup()
{
// Inicializamos el Display LCD pasándole como parámetro la cantidad de columnas y filas de esta
lcd.init();


// Inicializamos los sensores conectados al bus 1-Wire
sensores.begin();
}


void loop()
{
// Lee el valor de temperatura de todos los sensores conectados al bus
sensores.requestTemperatures();


// Crea una variable llamada ”T1” asignándole el valor de temperatura obtenido con sensores.getTemp(0),
//el valor 0 indica que es el primer sensor que encuentre en el bus
float T1(sensores.getTempCByIndex(0));


// imprime la información de temperatura en el Display LCD
lcd.setCursor(0,0);
lcd.print("Temperatura");
lcd.setCursor(0,1);
lcd.print(T1);
lcd.print(" Grados C");
}
un saludo
 
11 Dic 2005
431
(Madrid) España
Provincia
Madrid
Hola comovas con el lcd tengo uno parecido y me dio trabajo tambien , si no has resuelto, te envio el que tengo

Enviado desde mi MID7042 usando Tapatalk 2
 
3 Abr 2012
686
Beniaján
Provincia
Murcia
oye, pues ya que estamos yo tengo un problemilla con mi freeduino v 1.16 (dicen que es como si fuera un duemilanove) y una pantalla winstar wh2004a a la que le he pinchado esto:



y que me esta dando quebraderos de cabeza con el programa arduino 1.0.2, he probado la libreria que viene en la pagina e ebay y me da un quintal de errores de compilacion (si quereis los pego) y con las librerias de jmcadsl y tambien me da algun error...

hay algo (asi a bote pronto) en lo que veais que la he cagao o que no estoy usando algo que se me ha pasado???

antes de nada gracias!

un saludo.
 
23 Sep 2012
10
daganzo de arriba
Provincia
madrid
Buenas, Burgos si me pasas el codigo y las librerías que usas me simplificarías mucho el trabajo; porque aunque me empapo del código, siempre me fallan las librerías.
Un saludo,
 

jmcadsl

Miembro Honorífico
17 Ene 2010
972
España
Provincia
Madrid
mariete68, debes de probar con los ejemplos de las librerias que te mande (no cogas ejemplos de otros sitios porque no sabes que librerias están utilizando)

Para tu lcd, mirando las característcas que pone en la pagina donde lo comporaste tiene direcion I2c 0x27, y en el ejemplo pones la 0x3f "LiquidCrystal_I2C lcd(0x3f,16,2);" , y tu pantalla es de 20x4 , tienes puesto 16x2 ......asi no va a funcionar...

Pon la librería I2c(DFrobot) y este ejemplo:

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

LiquidCrystal_I2C lcd(0x27,20,4); //

void setup()
{
lcd.init();
lcd.backlight();
lcd.print("Hola mariete68");
}

void loop()
{
}

Debes ir paso a paso, despacio y leyendo mucho, cuando funcione una cosa y la entiendas 100% pasa a la siguiente, como copies codigo sin saber el porque vas a tener muchos quebraderos de cabeza !! jejeje.

Un saludo.
 

jmcadsl

Miembro Honorífico
17 Ene 2010
972
España
Provincia
Madrid
Hola nolomanoloso
Los errores de compilación son porque no corresponde el código que escribimos en el programa con lo que espera la librería.
Para ver si una librería es compatible con la versión de IDE que utilicemos debes cargar uno de los ejemplos que vienen en las librerías y compilarlo (verificarlo) para ver que no da errores.
A partir de ahí podemos tratar de compilarlo con nuestro propio código, debería funcionar, de no ser así debemos contrastar el código del ejemplo con el nuestro y ver en qué se diferencian.

Un saludo
Jorge

oye, pues ya que estamos yo tengo un problemilla con mi freeduino v 1.16 (dicen que es como si fuera un duemilanove) y una pantalla winstar wh2004a a la que le he pinchado esto:



y que me esta dando quebraderos de cabeza con el programa arduino 1.0.2, he probado la libreria que viene en la pagina e ebay y me da un quintal de errores de compilacion (si quereis los pego) y con las librerias de jmcadsl y tambien me da algun error...

hay algo (asi a bote pronto) en lo que veais que la he cagao o que no estoy usando algo que se me ha pasado???

antes de nada gracias!

un saludo.
 
11 Dic 2005
431
(Madrid) España
Provincia
Madrid
Hola este es el codigo con el que he podido hacer que funcione mi LCD, esto era un test que hice coje lo que te sirva

#include <Time.h>
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h> // F Malpartida's NewLiquidCrystal library

#define I2C_ADDR 0x27 // Define PCF8574A's I2C Address

#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

#define LED_OFF 0
#define LED_ON 1

char* Str[]={"Light OFF","Sun Rise","Mid Day","New Moon","Waxing Crescent","First Quarter"};
char* reef = "REEF Aquearium V5.0";

LiquidCrystal_I2C lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);

void setup()
{
lcd.begin (20,4); // initialize the lcd
// Switch on the backlight
lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
lcd.setBacklight(LED_ON);

lcd.setCursor(0, 0);

lcd.print("REEF Aquearium V5.0");
delay(1000);
lcd.clear();
}

void loop()
{
fecha(0,0);

}
void fecha(int ROW,int file){
//Cada 30 segundos cambiamos entre mostrar la fecha y el nombre MABELEVA-REEF
// getDateDs1307(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year);

lcd.setCursor(ROW,file);
if (second() >=0 && second() <= 5){ //Pintamos la fech
lcd.print(" ");
if (day() < 10) Serial.print("0");
lcd.print(day());
lcd.print("/");
if (month() < 10) Serial.print("0");
lcd.print(month());
lcd.print("/");
if (year() < 10) Serial.print("0");
lcd.print(year());
}else if(second() >= 5 && second() <=10){ //Pintamos el nombre del reef
lcd.print(reef);

}else{
//Pintamos la hora

LCDprintDigits(hour());
lcd.print(":");
LCDprintDigits(minute());
lcd.print(":");
LCDprintDigits(second());
lcd.print(" ");
}
}



void digitalClockDisplay(){
// digital clock display of the time
lcd.setCursor(0, 0);
LCDprintDigits(hour());
lcd.print(":");
LCDprintDigits(minute());
lcd.setCursor(8, 0);
lcd.setCursor(5,0);
lcd.print(":");
LCDprintDigits(second());
}
void LCDprintDigits(int digits){
// utility function for digital clock display: prints preceding colon and leading 0
// lcd.print(":");
if(digits < 10)
lcd.print('0');
lcd.print(digits);
}
 
3 Abr 2012
686
Beniaján
Provincia
Murcia
mirad, esto es lo que me dice el ide con el codigo del link que os puse arriba de ebay y la libreria (instalada en la carpeta libraries) que viene en el link de ebay....

arduino1.jpg


a ver que es esto porque estoy perdidisimo!

un saludo.
 
27 Jun 2009
127
España
Provincia
Alicante
la libreria (instalada en la carpeta libraries) que viene en el link de ebay....

Si no recuerdo mal para instalar librerías las tienes que instalar en esa carpeta pero dentro de una carpeta con el mismo nombre de la librería, le he echado un vistazo y veo que la carpeta en la que te se encuentra el .h se llama i2c_1602lcd. Le tienes que cambiar el nombre y ponerle LCDI2C4Bit . No se si lo habías hecho ya.

A mi este código me ha compilado con la versión 0022 del IDE y con la librería que te dan en ebay:

Código:
#include <Wire.h>
#include <LCDI2C4Bit.h>

int ADDR = 0xA7;

/*
;Connect the following pins from MCP23008 to LCD
;
;P0 - D4
;P1 - D5
;P2 - D6
;P3 - D7
;P4 - RS
;P5 - RW (not used, set to 0 to ground for write)
;P6 - Bl (backlight switch)
;P7 - E
*/

byte x = 0;
byte data = 1;
byte c;

LCDI2C4Bit lcd = LCDI2C4Bit(ADDR,4,20);

void setup()
{
  Serial.begin(9600);
  Wire.begin(); // join i2c bus (address optional for master)
  lcd.init();
  lcd.printIn("test");
  lcd.clear();
  lcd.cursorTo(0,0);
  lcd.printIn("0");
  lcd.cursorTo(1,0);
  lcd.printIn("1");
  lcd.cursorTo(2,0);
  lcd.printIn("2");
  lcd.cursorTo(3,0);
  lcd.printIn("3");
}



void loop()
{
  lcd.backLight(true);
  delay(1000);
  lcd.backLight(false);
  delay(1000);
}

Es el código que dan de ejemplo en https://www.arduino.cc/playground/Code/I2CPortExpanderAndLCDs un poco modificado.
 
Última edición:
27 Jun 2009
127
España
Provincia
Alicante
He modificado la librería LCDI2C4Bit para que funcione en el IDE 1.0 de arduino: Lo he probado con el código que he puesto antes. Faltaría probarla, por que yo no tengo esa interfaz. Si quieres la pruebas y me dices algo.

Librería LCDI2C4Bit: Ver el archivos adjunto LCDI2C4Bit.zip

Un saludo.
 
Última edición:
23 Sep 2012
10
daganzo de arriba
Provincia
madrid
Bueno, pues parece que el chino me lió la dirección que me facilito 0_27 no estaba bien su dirección es 0_3f estoy con el reloj y al compilar el ejemplo del controlador jmcadsl las librerías me dan errores. otra pelea nueva, eso si con la pantalla me manejo muy bien.
gracias.
 
Arriba