Librería LCDi2cR para el display LCD03 ya no está disponible

Hola

Intento descargarme la librería LCDi2cR del playground Arduino Playground - LCDi2c pero al parecer el archivo LCDi2cR.zip ya no está disponible. Lo he buscado y no hay manera. ¿Alguien lo tienen?

Gracias

Eduardo

Utiliza mejor la libreria "New LiquidCrystal". En principio es mas rapida y deberia soportar los mismos mecanismos que la que indica la del playground.

Es posible que no te funcione, ese LCD utiliza un PIC para hacer de interfaz con el exterior y probablemente no haga de pasarela y pase los comando estandar del chip de Hitachi.

Efectivamente, el LCD03 tiene un juego de comandos distinto, por eso lo suyo es usar la librería LCDi2cR que ya está modificada o repetir el trabajo de nuevo modificando una actual. ¿Nadie tiene esta librería descargada?

Eduardo

Hola!

Si no recuerdo mal el display del que hablas esta controlado por un PIC16F819, el cual hace de "interprete" entre el bus I2C y el propio controlador del LCD que creo recordar que es el clasico HD44...

Yo jugue con esa placa asi que puedo copiar informacion y "defines" que en su dia me parecio muy util y asi te puedes crear tu mismo lo que necesites...

/*

LCD03 - I2C/Serial LCD

Este modulo trabaja tanto en modo I2C como Serial, configurable mediante puente,
que es chequeado en el proceso de arranque

Requiere solo alimentacion de 5 Voltios y puede ser manejado solo por 2 pines

Compuesto de 4 filas de 20 Caracteres, y puede ser conectado a un teclado matricial de 3 Columnas y 4 Filas

CONEXIONES

Vcc--------
SDA/TX----- XX On Serial
SCL/Rx----- OO Off I2C
Gnd--------
| | | | | | |
| | | | | | ----- Receives ROW 2 Status (8)
| | | | | ------- Receives ROW 3 Status (7)
| | | | --------- OUTPUTS Scan PULSE to COL 3
| | | ----------- Receives ROW 4 Status (8)
| | ------------- OUTPUTS SCAN Pulse to column 1
| --------------- Receives ROW 1 Status (8)
----------------- OUTPUTS SCAN Pulse to column 2

MODO I2C

La velocidad de las comunicaciones son mas rapidas que la de proceso por el display por lo que existe un Buffer FIFO de 64 bytes que puede ser consultado para evitar el desborde y perdida de datos.

Las lineas SCL y SDA deben referenciarse a VCC (pull-up) mediante 2 resistencias, con valores estandar de entre 1k8 y 10k considerandose el valor de 1k8 el mas adecuado para evitar ruidos.

El Bus I2C tiene un buffer de 32 Bytes por lo que no se pueden volcar mas caracteres al LCD en un solo envio.

Formato del protocolo de comunicion

Wire.beginTransmission(Address);
Wire.send(Registro);
Wire.send(Dato);
Wire.endTransmission();

El modulo LCD03 tiene 4 Registros, 3 de los cuales son de solo lectura y el cuarto escritura y lectura

MODO SERIAL

La configuracion del modo Serial es 9600 bps, sin paridad y 2 stop bits.

Con esta velocidad se puede obviar la consulta al Buffer FIFO

Las señales son de 5v, por lo que no puede ser conectado directamente a un puerto RS232, se debe usar un MAX232 o equivalente para adaptar los niveles.

KEY PAD

Se puede conectar a un teclado matricial de 3x4 tipico, cuyas teclas son leidas a intervalos regulares.

El resultado se puede obtener leyendo los registros 1 y 2 del dispositivo para el modo I2C
o por medio del comando de lectura para el modo Serial, obteniendose los dos Bytes Bajo y Alto

Cada tecla pulsada aparece como nivel alto en cada bit asociado

1 2 3
4 5 6
7 8 9

  • 0 #

High byte Low byte
0 0 0 0 4/3 4/2 4/1 3/3 3/2 3/1 2/3 2/2 2/1 1/3 1/2 1/1
0 0 0 0 # 0 * 9 8 7 6 5 4 3 2 1

GENERADOR DE CARACTERES

Mediante el comando apropiado se puede generar hasta 8 caracteres localizados en las posiciones 128-135 mientras el modulo este alimentado.

Como cada caracter del LCD esta compuesto por 5x8bits la informacion a enviar es 1xxDDDD

Bit Sent 27 (char generate command)
7 6 5 4 3 2 1 0 Byte 128 (location to be filled)
Byte 0 1 x x 0 0 0 0 0 128 128 (byte 0)
Byte 1 1 x x 0 0 1 0 0 132 132 (byte 1)
Byte 2 1 x x 0 1 1 1 0 142 142 (byte 2)
Byte 3 1 x x 1 0 1 0 1 149 149 (byte 3)
Byte 4 1 x x 0 0 1 0 0 132 132 (byte 4)
Byte 5 1 x x 0 0 1 0 0 132 132 (byte 5)
Byte 6 1 x x 0 0 1 0 0 132 132 (byte 6)
Byte 7 1 x x 0 0 0 0 0 128 128 (byte 7)

CAMBIO DE DIRECCION DEL MODULO

La version V4+ o superior puede redireccionarse dentro del bus I2C, en el rango 0xC6 1100 0110, 0xC8 1100 1000 0xCA 1100 1010, 0xCC 1100 1100, 0xCE 1100 1110

Esto se realiza mediante el envio de la siguiente secuencia

0x19 ( 1st byte of change address command )
0xA0 ( 2nd byte of change address command )
0xAA ( 3rd byte of change address command )
0xA5 ( 4th byte of change address command )
0xC6, 0xC8,0xCA,0xCC or 0xCE ( new address to map LCD03 at )

La version 4+ muestra su direccion en el display cada vez que es alimentado.

*/
/////////////////////////////////////////////////////////////////////////////////

#define lcdAddress 0X63 // Direccion 0XC6 con bit rotado a la derecha
//
#define lcdRegCommand 0 //Write
#define lcdRegFifoBuffer 0 //Read
#define lcdRegKeypadStateLow 1 //Read
#define lcdRegKeypadStateHigh 2 //Read
#define lcdRegVersion 3 //Read
//
// Comandos I2C + Serial
//
#define lcdNull 0 // Ignorado/sin funcion
#define lcdCursorHome 1 // Posiciona el cursor al primer caracter (Arriba izquierda)
#define lcdSetCursorAbs 2 // Coloca cursor a la posicion entre 1-80/32, especificada por el siguiente byte
#define lcdSetCursorRel 3 // Coloca cursor a linea y columna (siguientes 2 bytes)
#define lcdHideCursor 4 // Oculta cursor
#define lcdUnderlineCursor 5 // Subraya cursor
#define lcdBlinkingCursor 6 // Activa parpadeo cursor
#define lcdBackspace 8 // Borra caracter anterior al cursor
#define lcdHorizontalTab 9 // Salto de tabulador, por defecto 4 posiciones
#define lcdLineFeed 10 // Baja una linea (sin cambiar columna)
#define lcdLineUp 11 // Sube una linea (sin cambiar columna)
#define lcdClearScreen 12 // Limpia pantalla y salta a Home
#define lcdCR 13 // Salto a la siguiente linea
#define lcdClearColumn 17 // Limpia columna y mueve cursor a la derecha
#define lcdTabSet 18 // Establece tamaño tabulador (1-10)
#define lcdBacklightOn 19 // Iluminacion panel posterior ON
#define lcdBacklightOff 20 // Iluminacion panel posterior OFF
#define lcdChangeAddress 25 // Comando para cambio de direccion del modulo
#define lcdCustomCharGenerator 27 // Comando para generacion de caracteres
#define lcdDoubleKeypadScanRate 28 // Dobla la frecuencia de escaneo para el keypad (20hz)
#define lcdNormalKeypadScanRate 29 // Frecuencia escaneo estandar (10hz)
//
// SOLO para Modo Serial
//
#define lcdFIFOStatus 14 // Devuelve estado FIFO, numero de bytes libres (0-64)
#define lcdSoftwareVersion 15 // Devuelve version del soft (1 byte)
#define lcdKeypadStatus 16 // Devuelve informacion de Keypad (byte bajo primero)
//

Es esta libreria?

LCDi2cR.zip (14.5 KB)