Pages: [1] 2   Go Down
Author Topic: Ayuda con lcd Serial-IIC-I2C y mi mega  (Read 2435 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Buenas a tod@s y desde ya agradezco toda vuestra ayuda.

Os pondré en antecedentes:

He empezado hace muy poco con el gusanillo del arduino y como es normal estoy pagando la torpeza del novato.

El caso es que tengo una mega 2560 y una lcd ( http://www.ebay.com/itm/Serial-IIC-I2C-TWI-2004-204-20X4-Character-LCD-Module-Display-For-Arduino-Blue-/300736978496 )

Estoy programando (copiando y modificando) con arduino 1.0.1 y he conectado los cables de la pantalla a la mega
 
Gnd => GND
Vcc => 5v
SDA =>pin 20 (SDA)
SCL=> ping 21 (SCL)

El caso es que he probado multitud de código y ninguno ha funcionado la pantalla lo único que hace encenderse y muestra series de cuadraditos blancos.

Podrían guiarme en esto.

Un saludo y gracias.

Este es mi codigo


#include <Wire.h> 
    #include <LiquidCrystal_I2C.h>
    LiquidCrystal_I2C lcd (0x27,20,4); 
    // fijó la dirección del LCD a 0x27 para 20 caracteres y 4 la línea
void setup()
    {
delay (500);
      lcd.init ();                      // inicializa el lcd 
 
      lcd.backlight ();
      lcd.setCursor (0, 0);
      delay (100);
      lcd.setCursor (1, 0);
      lcd.print("más barato y");
      lcd.setCursor (0, 1);
      lcd.print ("alta calidad en aquí");
      lcd.setCursor (1, 2);
      lcd.print ("www.b2cqshop.com");
      lcd.setCursor (0, 3);
      lcd.print ("recepción a B2CQSHOP");
    }
void loop()
    {
    }

El caso es que lo hace todo bien pero no muestra nada.


« Last Edit: November 29, 2012, 03:17:28 pm by Juanky » Logged

0
Offline Offline
Edison Member
*
Karma: 17
Posts: 1413
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

luego te podre dar mas información pero estas seguro que la direccion I2C es correcta? segun esto pone que 0x27 es para la versión 16x2

LiquidCrystal_I2C lcd(0x27,16,2); //set the LCD address to 0x27 for a 16 chars and 2 line display


creo que mis lcds son de la misma marca, tuve un problema similar y creo que resulto ser la libreria. luego te paso mi libreria.
Logged

* Si preguntas, pon el código de tu programa, hace mucho mas fácil ayudarte. Y me ahorro un mensaje pidiendo que lo hagas.
* Si consigues solucionar tu problema, dedica unos minutos a explicar en tu post como lo conseguiste para beneficio de todos.
* Cambia el 'Subject' de tu hilo y añade 'SOLUCIONADO' cuando hayas llegado a una solución al problema que planteaste.
* Utiliza un 'Subject' para tu hilo que explique de que va el hilo.
Si estas empezando:
* Comienza a usar Arduino
* Guías de iniciación a Arduino
* Ejemplos
* Referencia del Lenguaje
* Conceptos básicos
Guia de usuario de arduino
Tutoriales en Ingles
Si necesitas que alguien te escriba el código: http://www.freelancer.com/  o esta  http://www.guru.com/

Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Buenas pues si, es 16,2 ya lo he probado con el mismo resultado. Esa es la ultima configuración que probé pero como bien dices tu, también probé con 16,2. He probado varias librerías y demás, pero agradecería que me pasaras las tuyas y el cod que uses y si me puedes indicar k versión usas yo estoy con la 1.0.1.

Gracias a ver si entre todos podemos hacer funcionar esto k empieza a ser un poco ... 
Logged

0
Offline Offline
Edison Member
*
Karma: 17
Posts: 1413
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

esta es la librería y dentro hay ejemplos

* LiquidCrystal_I2C_funciona101.rar (6.41 KB - downloaded 74 times.)
Logged

* Si preguntas, pon el código de tu programa, hace mucho mas fácil ayudarte. Y me ahorro un mensaje pidiendo que lo hagas.
* Si consigues solucionar tu problema, dedica unos minutos a explicar en tu post como lo conseguiste para beneficio de todos.
* Cambia el 'Subject' de tu hilo y añade 'SOLUCIONADO' cuando hayas llegado a una solución al problema que planteaste.
* Utiliza un 'Subject' para tu hilo que explique de que va el hilo.
Si estas empezando:
* Comienza a usar Arduino
* Guías de iniciación a Arduino
* Ejemplos
* Referencia del Lenguaje
* Conceptos básicos
Guia de usuario de arduino
Tutoriales en Ingles
Si necesitas que alguien te escriba el código: http://www.freelancer.com/  o esta  http://www.guru.com/

Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Gracias por la libreria, he tenido problemas con el login, la probare en estos dias y te cuento, pero desde ya agradezco tu ayuda. Un saludo.
Logged

Málaga, Spain
Offline Offline
Edison Member
*
Karma: 41
Posts: 2182
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola, puedes probar con mi librería: https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home, en la sección de download puedes bajar la última versión.

Prueba con este código:
Code:
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>

#define I2C_ADDR    0x3F  // Define I2C Address where the SainSmart LCD is
#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

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);
 
  // Switch on the backlight
  lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
  lcd.setBacklight(HIGH);

  // Position cursor and write some text
  lcd.home ();                   // go to the first line, first character
  lcd.print("SainSmart I2C tester"); 
  lcd.setCursor ( 0, 1 );        // go to the 2nd line
  lcd.print("It's Working!");
  lcd.setCursor ( 0, 2 );        // go to the third line
  lcd.print("Sainsmarts docs suck");
  lcd.setCursor ( 0, 3 );        // go to the fourth line
  lcd.print("Nice LCD Though. ");
}

void loop()
{

}

Por otro lado, como te comentan, necesitas conocer la dirección I2C del dispositivo, si no funciona cambia 0x3F por el valor que te de el siguiente programa:
Code:
// --------------------------------------
// i2c_scanner
//
// This program (or code that looks like it)
// can be found in many places.
// For example on the Arduino.cc forum.
// The original author is not know.
//
// This sketch tests the standard 7-bit addresses
// from 0 to 127. Devices with higher bit address
// might not be seen properly.
//
// Adapted to be as simple as possible by Arduino.cc user Krodal
//
// June 2012
// Using Arduino 1.0.1
//

#include <Wire.h>


void setup()
{
  Wire.begin();

  Serial.begin(9600);
  Serial.println("\nI2C Scanner");
}


void loop()
{
  byte error, address;
  int nDevices;

  Serial.println("Scanning...");

  nDevices = 0;
  for(address = 0; address <= 127; address++ )
  {
    // The i2c_scanner uses the return value of
    // the Write.endTransmisstion to see if
    // a device did acknowledge to the address.
    Wire.beginTransmission(address);
    error = Wire.endTransmission();

    if (error == 0)
    {
      Serial.print("I2C device found at address 0x");
      if (address<16)
        Serial.print("0");
      Serial.print(address,HEX);
      Serial.println(" !");

      nDevices++;
    }
    else if (error==4)
    {
      Serial.print("Unknow error at address 0x");
      if (address<16)
        Serial.print("0");
      Serial.println(address,HEX);
    }   
  }
  if (nDevices == 0)
    Serial.println("No I2C devices found\n");
  else
    Serial.println("done\n");

  delay(8000);           // wait 8 seconds for next scan
}

Buena suerte.
Logged

   

Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Buenas Fm antes de nada darte las gracias por tomarte las molestias.

Prueba con la libreria del compañero Sergegsx el mismo resultado, ya he llegado a pensar que hay algo roto, pues no hace ni muestra nada mas que los cuadros (lo mismo que cuando se le da alimentacion y sin nada mas).

Despues lo del compañero fm: He bajado las librerias y leido como instalarlas (he tenido que quitar todo lo que tenia de pasados intentos, librerias y demas cosas) He paso el test y no me mostraba nada el monitor serial, pero cuando lo he mirado con el Hyperterminal me salia esto:
Scanning...
I2C device found at address 0x3F !
done


Raro verdad, segun el fabricante era 0x27 (pues NO y NO) despues he puesto el codigo primero de ejemplo y .... FUNCIONA .....

FM eres un mostro. Muchas gracias .

He comentado todo los pasos por si algun compañero pasa por el mismo tortuoso camino. Gracias  a todos.
« Last Edit: December 06, 2012, 04:54:44 pm by Juanky » Logged

Málaga, Spain
Offline Offline
Edison Member
*
Karma: 41
Posts: 2182
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Un placer poder ayudar. Me alegra que te haya funcionado.

Lo que me fastidia de todo esto es que los fabricantes ni mantienen sus propios productos. Que pandilla, estos chinos!
Logged

   

Valencia - Spain
Offline Offline
Full Member
***
Karma: 11
Posts: 169
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

+1 al karma por la ayuda fm! Llevaba tropecientas pruebas y me lo has resuelto en 1 post y 2 sketches...  smiley-mr-green

Un +1000 por la libreria smiley Gracias por compartir.

Salu2 y buen Karma
Logged

Souliss - Distributed Home Automation and Internet of Things

www.mysouliss.eu

http://forum.arduino.cc/index.php?topic=223723.0

Málaga, Spain
Offline Offline
Edison Member
*
Karma: 41
Posts: 2182
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

+1 para ti tambien juanpintom. Un placer poder ayudar.
Logged

   

Offline Offline
Newbie
*
Karma: 0
Posts: 20
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Muy buenas , estoy empazando con este tema y tengo el mismo problema que se describe en el post , pero no consigo solucionarlo.
Este es el error que me da al compilar vuestra solucion :

Quote
  This report would have more information with
  "Show verbose output during compilation"
  enabled in File > Preferences.
Arduino: 1.0.5-r2 (Windows 7), Board: "Arduino Mega 2560 or Mega ADK"
LiquidCrystal_I2C\LiquidCrystal_I2C.cpp.o: In function `LiquidCrystal_I2C::pulseEnable(unsigned char)':
C:\Users\Dragun\Documents\Arduino\libraries\LiquidCrystal_I2C/LiquidCrystal_I2C.cpp:247: multiple definition of `LiquidCrystal_I2C::pulseEnable(unsigned char)'
LiquidCrystal\LiquidCrystal_I2C.cpp.o:C:\Users\Dragun\Documents\Arduino\libraries\LiquidCrystal/LiquidCrystal_I2C.cpp:287: first defined here
c:/arduino-1.0.5/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../../avr/bin/ld.exe: Disabling relaxation: it will not work with multiple definitions
LiquidCrystal_I2C\LiquidCrystal_I2C.cpp.o: In function `LiquidCrystal_I2C::send(unsigned char, unsigned char)':
C:\Users\Dragun\Documents\Arduino\libraries\LiquidCrystal_I2C/LiquidCrystal_I2C.cpp:229: multiple definition of `LiquidCrystal_I2C::send(unsigned char, unsigned char)'
LiquidCrystal\LiquidCrystal_I2C.cpp.o:C:\Users\Dragun\Documents\Arduino\libraries\LiquidCrystal/LiquidCrystal_I2C.cpp:240: first defined here
LiquidCrystal_I2C\LiquidCrystal_I2C.cpp.o: In function `LiquidCrystal_I2C::setBacklight(unsigned char)':
C:\Users\Dragun\Documents\Arduino\libraries\LiquidCrystal_I2C/LiquidCrystal_I2C.cpp:278: multiple definition of `LiquidCrystal_I2C::setBacklight(unsigned char)'
LiquidCrystal\LiquidCrystal_I2C.cpp.o:C:\Users\Dragun\Documents\Arduino\libraries\LiquidCrystal/LiquidCrystal_I2C.cpp:167: first defined here
LiquidCrystal_I2C\LiquidCrystal_I2C.cpp.o: In function `LiquidCrystal_I2C::begin(unsigned char, unsigned char, unsigned char)':
C:\Users\Dragun\Documents\Arduino\libraries\LiquidCrystal_I2C/LiquidCrystal_I2C.cpp:47: multiple definition of `LiquidCrystal_I2C::begin(unsigned char, unsigned char, unsigned char)'
LiquidCrystal\LiquidCrystal_I2C.cpp.o:C:\Users\Dragun\Documents\Arduino\libraries\LiquidCrystal/LiquidCrystal_I2C.cpp:144: first defined here
LiquidCrystal_I2C\LiquidCrystal_I2C.cpp.o: In function `LiquidCrystal_I2C::init()':
C:\Users\Dragun\Documents\Arduino\libraries\LiquidCrystal_I2C/LiquidCrystal_I2C.cpp:36: multiple definition of `LiquidCrystal_I2C::init()'
LiquidCrystal\LiquidCrystal_I2C.cpp.o:C:\Users\Dragun\Documents\Arduino\libraries\LiquidCrystal/LiquidCrystal_I2C.cpp:194: first defined here
Muchas gracias de antemano
Logged

Málaga, Spain
Offline Offline
Edison Member
*
Karma: 41
Posts: 2182
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Simplemente borra la librería LiquidCrystal que viene en el entorno Arduino y pon es su lugar la New LiquidCrystal. Si tienes cualquier otra librería para controlar un LCD también deberías borrarla.

La New LiquidCrystal es un súper conjunto de estas librerías y mucho mas rápida.

Por ultimo, lee el manual de la wiki de la librería.

Un saludo,

fm
Logged

   

Málaga, Spain
Offline Offline
Edison Member
*
Karma: 41
Posts: 2182
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Por ejemplo, borra también la LiquidCrystal_I2C como librería que veo que tienes instalada.
Logged

   

Offline Offline
Newbie
*
Karma: 0
Posts: 20
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Lo primero gracias por la rapidez en contestar .

He borrado las bibliotecas de LiquidCrystal y las que se parecian , la de _I2c y la de _Fast y puesto en su lugar la que me decias "New LiquidCrystal" .

E cargado el codigo que hay mas arriba

Code:
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>

#define I2C_ADDR    0x3F  // Define I2C Address where the SainSmart LCD is
#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

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);
 
  // Switch on the backlight
  lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
  lcd.setBacklight(HIGH);

  // Position cursor and write some text
  lcd.home ();                   // go to the first line, first character
  lcd.print("SainSmart I2C tester"); 
  lcd.setCursor ( 0, 1 );        // go to the 2nd line
  lcd.print("It's Working!");
  lcd.setCursor ( 0, 2 );        // go to the third line
  lcd.print("Sainsmarts docs suck");
  lcd.setCursor ( 0, 3 );        // go to the fourth line
  lcd.print("Nice LCD Though. ");
}

void loop()
{

}
[/size]

Ya no tengo errores pero no me hace nada el LCD mas que estar encendido
Logged

Málaga, Spain
Offline Offline
Edison Member
*
Karma: 41
Posts: 2182
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ahora tendrás que configurar los pones a los que esta conectado la mochila al LCD y la mochila al arduino. Si es con i2c pues a scl y sda.
Logged

   

Pages: [1] 2   Go Up
Jump to: