Autor Tema: [SOLUCIONADO] Configuracion LCD  (Leído 6001 veces)

juanpintom

  • Nuevo
  • *
  • Mensajes: 156
  • Karma: +1/-0
    • Ver Perfil
[SOLUCIONADO] Configuracion LCD
« en: Abril 22, 2014, 01:25:53 am »
Hola, he encontrado algun problema para conectar mi modulo LCD con el adaptador I2C y lo he conseguido resolver, no se bien si esto es una incidencia o un tutorial, pero en todo caso queria compartirlo por si alguien mas tiene problemas para conectar su LCD

He tenido que modificar la linea 65 de CNC.ino:

Código: [Seleccionar]
LiquidCrystal_I2C lcd(0x27);      // Set the LCD I2C address
El caso es que el orden de los pines en el caso de mi LCD es diferente, asi que no me funcionaba correctamente, para ello la libreria permite definirlos en el orden correcto, he cogido el ejemplo directamente del maestro fm =) quedaria asi en mi caso:

Código: [Seleccionar]
  #define I2C_ADDR    0x27  // Define I2C Address where the 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);

Tambien he tenido que modificar la activacion del Backlight, ya que de esta forma no es necesario un pin fisico para encender el LCD.
Las lineas 105 y 106 de CNC.ino eran asi:
Código: [Seleccionar]
pinMode ( LCD_BL_PIN, OUTPUT );
   digitalWrite ( LCD_BL_PIN, HIGH );

quedarian asi:

Código: [Seleccionar]
lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
lcd.setBacklight(HIGH);

Por otro lado, si alguien tiene problemas para saber el I2C Address aqui un sketch para identificarlo:

Código: [Seleccionar]
// --------------------------------------
// 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
}

Salu2

ngc1300

  • Administrador
  • Usuario de CNCs
  • *****
  • Mensajes: 2898
  • Karma: +46/-2
    • Ver Perfil
    • cncControl
  • Ubicación: Terrassa
Re:[SOLUCIONADO] Configuracion LCD
« Respuesta #1 en: Abril 22, 2014, 06:56:24 am »
ok, gracias, yo no tengo LCD con lo que no puedo probarlo cuando saco las nuevas versiones.

Un saludo

soko

  • Usuario de CNCs
  • ***
  • Mensajes: 1504
  • Karma: +13/-0
    • Ver Perfil
  • Ubicación: Valladolid
Re:[SOLUCIONADO] Configuracion LCD
« Respuesta #2 en: Abril 22, 2014, 09:39:08 am »
Hola Juan,

Me interesa el tema pues tengo varios LCD 2X16 por casa, podrías poner alguna foto de que tipo de LCD usas, como funciona y que datos muestra??

Gracias!!!   :D

juanpintom

  • Nuevo
  • *
  • Mensajes: 156
  • Karma: +1/-0
    • Ver Perfil
Re:[SOLUCIONADO] Configuracion LCD
« Respuesta #3 en: Abril 22, 2014, 12:03:16 pm »
ngc no dudes en pedir testers :)

Lo que he montado es un LCD de 16x2 de los baratos y un modulo para conectarlo unicamente utilizando 2 cables, el Pinout de mis pantallas es el siguiente:

http://www.engineersgarage.com/sites/default/files/Lcd_0.jpg?1281348608

Aqui los enlaces de ebay (precio total 2.69€)
http://www.ebay.es/itm/1PCS-1602-16x2-HD44780-Character-LCD-Display-Module-LCM-blue-blacklight-NEW-D1-/221346875024?pt=LH_DefaultDomain_0&hash=item33894d4690&_uhb=1
http://www.ebay.es/itm/261324523419?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1439.l2649

Por ahora, a falta de mas pruebas, muestra en el LCD la version de firmware instalada y luego queda mostrando los valores X Y Z y FR. Imagino que conectando sensores de temperatura se mostrarian. Se me ocurre tambien poder mostrar el tiempo que lleva y el tiempo que queda.

Y lo que ya seria un bombazo es añadir un lector SD, unos botones y hacer la maquina independiente del pc.

Un saludo
« Última modificación: Abril 22, 2014, 11:55:16 pm por juanpintom »

soko

  • Usuario de CNCs
  • ***
  • Mensajes: 1504
  • Karma: +13/-0
    • Ver Perfil
  • Ubicación: Valladolid
Re:[SOLUCIONADO] Configuracion LCD
« Respuesta #4 en: Abril 22, 2014, 12:56:23 pm »
Tengo exactamente los mismos componentes que tu, asi que también caera el modulo LCD  ;D :D

A mi con que muestre el porcentaje de velocidad actual (que en la nueva versión se va a poder variar desde un potenciometro o desde soft segun quiera NGC) y la potencia PWM del laser.......pero estamos hablando de mostrar mucho para un simple lcd de 2X16.

Lo de que sea autónoma, ya se esta tratando en varios hilos:

http://cnccontrolapp.com/smf/index.php?topic=158.msg1290#msg1290

Pero al final no se puede hacer todo....asi que iremos poco a poco, sobre todo por NGC!!!! :)



juanpintom

  • Nuevo
  • *
  • Mensajes: 156
  • Karma: +1/-0
    • Ver Perfil
Re:[SOLUCIONADO] Configuracion LCD
« Respuesta #5 en: Abril 22, 2014, 04:12:31 pm »
Realmente muestra los datos bastante bien, ya que va cambiando entre diferentes "pantallas" y muestra todos los datos, en mi caso muestra en la segunda linea del LCD :
X: 0.00 Y 0.00
Luego se quita y aparece:
Z: 0.00 Y FR:2500

Asi que seria perfectamente viable mostrar despues los otros datos, o cambiar a una pantalla de 20x4, e incluso a la TFT que haces referencia en el otro post.

Genial la idea de hacerla "autonoma" obviamente hay que ir poco a poco y aportando en funcion de nuestras posibilidades mejoras y si puede ser aportar con ideas ya desarrolladas.

Un saludo, seguire el otro post :)
« Última modificación: Abril 22, 2014, 04:18:03 pm por juanpintom »

rego

  • Aprendiz
  • **
  • Mensajes: 820
  • Karma: +5/-0
    • Ver Perfil
  • Ubicación: Villanueva de Castellon (Valencia)
Re:[SOLUCIONADO] Configuracion LCD
« Respuesta #6 en: Abril 22, 2014, 04:41:02 pm »
pero si se le pone una pantalla de 20X4 seria mejor no?? y si se le pone la pantalla que hay de botoncitos se podria hacer que seleccionaras tu la pantalla que necesites??

ngc1300

  • Administrador
  • Usuario de CNCs
  • *****
  • Mensajes: 2898
  • Karma: +46/-2
    • Ver Perfil
    • cncControl
  • Ubicación: Terrassa
Re:[SOLUCIONADO] Configuracion LCD
« Respuesta #7 en: Abril 22, 2014, 05:11:49 pm »
Como dice soko el tema de que sea autónoma se esta tratando en otros hilos, si queréis podéis crear un hilo especifico para este tema, así no se habla en varios hilos, pero hay que tener en cuenta las limitaciones del arduino que ha veces ya le cuesta mover los motores.

juanpintom

  • Nuevo
  • *
  • Mensajes: 156
  • Karma: +1/-0
    • Ver Perfil
Re:[SOLUCIONADO] Configuracion LCD
« Respuesta #8 en: Abril 22, 2014, 05:27:31 pm »
En principio no creo que haya problema para configurar una pantalla de 20x4, puedo encargarme de revisar como se muestran los datos desde el firmware, de hecho el mismo ejemplo que he puesto, pero inicializando la lcd como 20,4 ya muestra los datos, solo que no utilizara la 3a y 4a linea, cosa facilmente puedo en el firmware. Lo malo es que no tengo una LCD 20X4 para probarlo, pero vaya, si alguien la tiene podemos desarrollarlo.

ngc ya he posteado en el otro post, zanjamos el tema "autonomo" en este post y llegado el momento en que me pueda liar con ello abrire uno especifico.  =B

Salu2

soko

  • Usuario de CNCs
  • ***
  • Mensajes: 1504
  • Karma: +13/-0
    • Ver Perfil
  • Ubicación: Valladolid
Re:[SOLUCIONADO] Configuracion LCD
« Respuesta #9 en: Abril 22, 2014, 05:52:07 pm »
Hola Juan,

Ya he buscado el LCD y el adaptador serial, y por suerte son clavados, he modificado del CNC.ino:

Código: [Seleccionar]
LiquidCrystal_I2C lcd(0x27);      // Set the LCD I2C address   

Y cambiado:

Código: [Seleccionar]
pinMode ( LCD_BL_PIN, OUTPUT );
   digitalWrite ( LCD_BL_PIN, HIGH );

Por:

Código: [Seleccionar]
lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
lcd.setBacklight(HIGH);

Pero donde pones de modificar esto.....no lo encuentro por ningun lado....

Código: [Seleccionar]
  #define I2C_ADDR    0x27  // Define I2C Address where the 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);

Me podrias aclarar donde se cambia???

Despues en la parte del configme.h, no has modificado estas lineas???

Código: [Seleccionar]
(ENABLE ME) by removing the comment of the define.
 */
//#define _MMI_ENABLED_
#define LCD_BL_PIN 13 // LCD backlight control pin

Y ya por ultimo, donde indicas en que patilla se conecta SDA y SCL???

Muchas gracias y perdón por el interrogatorio  :-\

juanpintom

  • Nuevo
  • *
  • Mensajes: 156
  • Karma: +1/-0
    • Ver Perfil
Re:[SOLUCIONADO] Configuracion LCD
« Respuesta #10 en: Abril 22, 2014, 06:25:53 pm »
Hola, las lineas que comentas que no sabes donde van sustituyen a la linea:

Código: [Seleccionar]
LiquidCrystal_I2C lcd(0x27);      // Set the LCD I2C address
Realmente no hace mas que añadir la I2C address y el resto de PINES y su orden correcto para mi LCD.

Esta en el Setup() de cnc.ino.

El configme en principio no es necesario editarlo, ni necesitarias el PIN13 para encender el display, yo lo he dejado en:
Código: [Seleccionar]
#define LCD_BL_PIN 13 // LCD backlight control pin

Aunque realmente se puede comentar esa linea y funcionaria perfectamente.

Para los pines de conexion son los de cualquier I2C, serian los A4 y A5 nombrados como SDA Y SCL en el pinout de Arduino o ATMEGA328P en mi caso.

http://cnccontrolapp.com/smf/index.php?topic=105.0

Salu2 y buen Karma



soko

  • Usuario de CNCs
  • ***
  • Mensajes: 1504
  • Karma: +13/-0
    • Ver Perfil
  • Ubicación: Valladolid
Re:[SOLUCIONADO] Configuracion LCD
« Respuesta #11 en: Abril 22, 2014, 11:34:35 pm »
Hola Juan,

No quiero ser pesado pero no lo hago funcionar, he conectado como en la imagen (perdon por la pesima calidad), SCL y SDA coinciden con las patillas de tu arduino:

http://subefotos.com/ver/?e6c14e9ffa1fb62c66b0fa4f3853e571o.jpg

Y dejo aqui la version 14 modificada:

https://drive.google.com/file/d/0B00S4npVrP2pNXZILVZWYnhzMjA/edit?usp=sharing

He probado a variar el contraste, en la versión anterior de firmware y nada no hay forma de que funcione  :'(
« Última modificación: Abril 22, 2014, 11:37:43 pm por soko »

juanpintom

  • Nuevo
  • *
  • Mensajes: 156
  • Karma: +1/-0
    • Ver Perfil
Re:[SOLUCIONADO] Configuracion LCD
« Respuesta #12 en: Abril 22, 2014, 11:52:25 pm »
Lo mas importante, si no me equivoco (y la foto no me engaña) los pines SDA y SCL en el NANO son D4 Y D5 respectivamente:



Una cosilla, yo en el firmware, en la configuracion del ConfigMe.h
Código: [Seleccionar]
#define LCD_BL_PIN      13Yo tengo puesto:
Código: [Seleccionar]
#define LCD_BL_PIN      3
Aunque creo que es irrelevante.

Por lo demas, a no ser que el I2C ADDRESS no sea 0x27 (compruebalo con el sketch de scanner que puse arriba) No veo nada diferente en mi Firmware.

Salu2 y buen Karma

soko

  • Usuario de CNCs
  • ***
  • Mensajes: 1504
  • Karma: +13/-0
    • Ver Perfil
  • Ubicación: Valladolid
Re:[SOLUCIONADO] Configuracion LCD
« Respuesta #13 en: Abril 23, 2014, 10:45:24 am »
Gracias Juan,

Pero esto si que es curioso.....mismo arduino...y distintas patillas.... :cabreado:



A ver cual es el correcto...voy a hacer pruebas a lo largo de la mañana.....

soko

  • Usuario de CNCs
  • ***
  • Mensajes: 1504
  • Karma: +13/-0
    • Ver Perfil
  • Ubicación: Valladolid
Re:[SOLUCIONADO] Configuracion LCD
« Respuesta #14 en: Abril 23, 2014, 12:27:32 pm »
Bueno, puedo confirmar que la imagen buena es la que he puesto yo (al menos en mi arduino), pues me sale esto:

Código: [Seleccionar]
I2C Scanner
Scanning...
I2C device found at address 0x27 !
done

Scanning...
I2C device found at address 0x27 !
done


Pero aún poniendo esta linea:

Código: [Seleccionar]
#define LCD_BL_PIN      3
No me va  :'( :'( :'( En fin a ver a la noche si puedo hacer alguna prueba más......