Go Down

Topic: Nueva librería LiquidCrystal - New LiquidCrystal (Read 19819 times) previous topic - next topic

fm

He publicado una nueva librería que pretende reemplazar la librería "LiquidCrystal" que viene como estándar en el SDK Arduino.

Esta librería se caracteriza por ser una librería genérica y extensible de tal forma que se puedan escribir drivers nuevos para controlar LCDs basados en el Hitachi HD44780 (la mayor parte de los LCDs alfanuméricos) usando cualquier mecanismo de comunicación (bus paralelo, SPI, I2C, Serie).

Esta primera versión soporta la misma funcionalidad e interfaz que la librería "LiquidCrystal" estándar (controlar un LCD con 4 u 8 hilos) y también permite controlarla usando el bus I2C junto con una tarjeta de expansión (como la I2CLCDextraIO).

La librería es realmente una jerarquía de clases, donde la clase "LiquidCrystal" es la clase abstracta base de la que todas las implementaciones se derivan. Por lo tanto, cualquier proyecto que hagáis puede cambiar el tipo de control del LCD tan solo cambiando 2 líneas de código. La ventaja, usar 4 u 8 lineas de control o poder encadenar hasta 8 LCDs encadenados en el I2C usando tan solo 2 pines de la cualquier placa basada en Arduino.

Todos los que ya uséis la librería "LiquidCrystal" solo tendréis que añadir 2 líneas de código (un include y la creación del objeto - variable). Muy, muy fácil de usar.

Además, la librería lleva de seria algunas mejoras que hacen que sea más rápida que la original.

Está escrita con vistas a la futura entrega del SDK de Arduino 1.0 (de hecho está probada con el SDK 1.0-RC2.

Para los que quieran simplemente tener más pines de entrada salida, también he escrito otra librería para controlar la tarjeta de expansión.

Toda la documentación la podéis encontrar en:
https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home

Esta librería está probada con varios LCDs y con la placa I2CLCDextraIO, de la imagen.

Espero que la disfrutéis.
   

riscking

#1
Oct 29, 2011, 02:48 am Last Edit: Oct 29, 2011, 02:51 am by riscking Reason: 1
Hola fm, he ido al enlace que pones y me pone

You do not have access to the wiki.

por aqui si deja quitando wiki/Home
https://bitbucket.org/fmalpartida/new-liquidcrystal/

Un saludo

fm

Hola a todos,

disculpad, por algún motivo la wiki tenía acceso restringido. Ya es completamente pública.

Gracias por el comentario riscking.

Saludos
   

ionhs

Gran trabajo fm, por ahora no lo necesito pero quien sabe. Te recomiendo que lo metas en el playground (he mirado rápido y no lo he visto) http://arduino.cc/playground/Es/Projects así será más fácil de localizarlo. Salu2

fm

Iohns, gracias por el comentario. Buena idea, de hecho nunca había llegado a la página del playground que has indicado.

Tengo intención de ponerlo en la zona de LCDs y subiré a la otra página el extensor de bus y la librería.
   

fm

He portado también una librería para controlar LCDs usando registros de desplazamiento. Realmente ha sido muy sencillo con la nueva jerarquía de clases. Con lo que la librería ya soporta: 4 bit y 8 bit control en paralelo, I2C y registro de desplazamiento (ShiftRegister).

También la he hecho completamente compatible con la LiquidCrystal, con lo que se puede sustituir la librería tal cual y sin cambiar ni una linea de código de los proyectos actuales, funcionaría.
   


fm

#7
Oct 30, 2011, 11:42 am Last Edit: Oct 30, 2011, 11:53 am by fm Reason: 1
Version 1.1.0 de la librería "LCD" - NewLiquidCrystal ya está disponible para descargar.


Nuevas funcionalidad:
- Soporte para controlar LCDs usando registros de desplazamiento - aunque no está probado
- Compatibilidad con Arduino 22 y Arduino 1.0. No lo he probado con Arduino 22, agradecería que alguien la probase.

Espero que la disfrutéis.
   

fm


@fm buen trabajo.

Muchas gracias flico. Con vosotros es un placer hacer cosas, de verdad que hacía tiempo que no veía un grupo de gente tan agradecido y motivado por su hobby.

Un saludo
   

fm

Después de hacer las pruebas con la librería y la versión 0022 del IDE he arreglado algunas cosas menores de la librería y corregido algunas de las peculiaridades de la versión 0022.

Por lo tanto, ya tenéis disponible la versión 1.1.1 de la librería LCD donde siempre. Notas de versión:
- Shift register - no está probado - si alguno de vosotros tiene un LCD con su correspondiente placa con un registro de desplazamiento os agradecería que lo probaseis.
- Probado y funcionando con la versión 0022 del IDE de Arduino y con la 1.0 RC2.
- El modo 4 bits is más rápido que la librería original pero consume 100 bytes más.
- El modo I2C es 800 bytes más compacto que la versión 4bit en la versión 0022 y 1300 más compacto en la 1.0 RC2!



Comentarios y sugerencias siempre son muy bienvenidas.
   

velon

Ya he vuelto del viaje y de nuevo por aquí.
Gracias a maestros como tu se mejoran las cosas y esta es una librería que se utiliza en gran medida.
Voy a probar tu librería en cuanto tenga un momento.

Saludos.

fm

#11
Nov 03, 2011, 08:37 pm Last Edit: Nov 04, 2011, 12:26 am by fm Reason: 1
Hola velon,

muchas gracias por tus amables comentarios. Me voy a sonrojar...

@todos
Una cosa que me gustaría comentar, la librería es un proyecto opensource, con lo que si alguien tiene comentarios, le gustaría colaborar en la librería, ... no tenéis más que decírmelo.

También agradecería comentarios que podáis hacer con respecto a la librería, su forma de usar y qué tal os está funcionando.

Actualmente, estoy haciendo unas mejoras de velocidad en la parte del bus paralelo que deberían aumentar sustancialmente su rendimiento.
   

fm

ANUNCIO DE VERSIÓN

Rel. V 1.1.2 de la librería LCD con mejoras de rendimiento.

mejoras

  • La version V 1.1.2 es 3.25 veces más rápida que la librería original Arduino LiquidCrystal

  • Comentarios menores añadidos en el código

  • La documentación está solo disponible en .html



Download
Project wiki - https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home
Project donwload - https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads
   

ulpiano

Buenos días fm,
He instalado la última versión te las librerias que has reescrito, pero no me da un error cuando intento imprimir algunos de los caracteres definidos por mi.

en la linea:
lcd.write(1);

Tengo creados precviamente el caracteres 0 a 7

me da el error siguiente:
327: error: call of overloaded 'write(int)' is ambiguous

En otras partes del código esta la misma sentencia pero no da error. Con las librerias originales no me da ningún problema.

Enseguida que pueda me compro el registro de desplazamiento para probar las srlcd ya que me parecen muy interesante el ahoorro de pines que supondría.

Saludos

fm

En la versión 1.0 han cambiado unas cuantas cosas y aquí para evitar ambigüedades implementa las cosas como serán en breve.

Solución:
lcd.print (char(1));

Un saludo

Fm
   

Go Up