LCD + 74HC595, problemas (¡YA FUNCIONA!!)

Buenas fm,

Si que he estado haciendo pruebas con el LCD en modo 4bits, e incluso le configure una entrada analogica con el lm35 y que me mostrara la señal por pantalla y además le puse un par de alarmas que en función de la temperatura me sacara los textos "Frio" y "calor", hasta ahí todo bien.

pero al querer controlar el LCD con menos cables fue cuando empezaron los problemas y todo lo que os he ido detallando.

Lo que voy a hacer es empezar de cer, desmontar el montaje y volverlo a montar, ya que tengo un lio de cables importante. Cuando consiga hacerlo funcionar, haré unos esquemas y un pequeño manual detallando los pasos para novatos como yo, y que sea más facil para ellos.

Pero lo que no encuentro en WIKI, son los esquemas de conexión y si los programas. ¿me puedes indicar donde se encuentran?

Gracias por todo y sigo perseverando.

En la wiki no están como tal, están como enlaces externos a los que hicieron parte de la librería original. Aquí tienes los enlaces para que los veas.
http://code.google.com/p/arduinoshiftreglcd/
Un saludo,

fm

Buenas,

Os pongo el montaje que tengo en mi placa.

Bueno señor@s,

Pues por el momento me doy por vencido, no he sido capaz de hacer funcionar el display con el 74HC595, encima al estar tan obcecado en lo que hacia, he conectado al al revés la alimentación del LCD, y me he fundido el USB del arduino, no reconociendolo el PC, así que por el momento me toca dejarlo aparcado hasta que me llegue otro. =(

Encima he estado probando con el IDE 0.22, con IDE 1.0 y sus librerias y me he vuelto loco con WProgram.h y Arduino.h, que no tenia forma de cargarlas, error tras error.

Ahora toca esperar hasta que llegue uno nuevo. :zipper_mouth_face:

Toni.
:sleeping:

buenas, yo probe hace 2 dias el montaje sobre un lcd 16x2 con la libreria de FM y un shifter 74HC595, y tras un par de errores de con los cables, me ha funcionado, he seguido el esquema de la pagina de que han comentado antes:

Buenas,

Este es el esquema que yo seguí, hasta que sufrí el percance, pero no conseguía nada en el display, únicamente encendía el primer espacio y se quedaba ahí esperando.

Pero espero poder continuar probando, he perdido una batalla, pero no la guerra, a ver si llega el nuevo arduino y sigo con las pruebas.

Este es el archivo que descargue y he intentado hacerlo funcionar con el esquema que tú expones.

LiquidCrystal_v1.1.7.zip https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads

Si me haces el favor, ¿me puedes poner un ejemplo del programa que utilizaste?.

Continuare con las pruebas.

Toni

Saludos, dentro de la libreria hay un example llamado HelloWorld_SR, hay que configurar la opcion de inicializacion como:

//data, clock, enable
LiquidCrystal_SR lcd(2,3,4);

aparte, podrias decirme el modelo del display?

Buenas a todos,

MrGastoso:
Saludos, dentro de la libreria hay un example llamado HelloWorld_SR, hay que configurar la opcion de inicializacion como:

//data, clock, enable
LiquidCrystal_SR lcd(2,3,4);

aparte, podrias decirme el modelo del display?

El modelo de display es un HD44780, y ya lo hice funcionar con 4 bits.

Un saludo

Buenas a todos,

Sigo con lo mio, para ver si consigo que funcione.

He introducido este programa:

#include <LiquidCrystal_SR.h>

#define DATAPIN 2
#define CLOCKPIN 4
#define STROBEPIN 3
#define MAXCOLUMNS 16
#define MAXLINES 2

LiquidCrystal_SR lcd(DATAPIN, CLOCKPIN, STROBEPIN);

void setup() {
// set up the LCD's number of rows and columns:
lcd.begin(MAXCOLUMNS, MAXLINES);
// Print a message to the LCD.
lcd.print("Hello, World!");
}

void loop() {
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
lcd.setCursor(0, 1); //lcd.setCursor(column, row);
// print the number of seconds since reset:
lcd.print(millis()/1000);
}

Y me dice esto al compilar:

Error compiling

In file included from C:\arduino-1.0\libraries\LiquidCrystal/LiquidCrystal_SR.h:81,
from sketch_feb15a.cpp:1:
C:\arduino-1.0\libraries\LiquidCrystal/LCD.h: In function 'void waitUsec(uint16_t)':
C:\arduino-1.0\libraries\LiquidCrystal/LCD.h:64: error: 'delayMicroseconds' was not declared in this scope

No se como interpretarlo, y veo que cuando pongo : #include <LiquidCrystal_SR.h>, la libreria no se me pone en rojo como las otras.

Siento que soy un poco pesado y me disculpo pero no se como continuar.

Gracias a todos.
Toni.

Que versión de la librería tienes instalada?
Que versión del IDE de arduino?
Intenta poner: #include <Arduino.h> al principio del sketch.

Has instalado bien la librería?

Buenas fm,

fm:
Que versión de la librería tienes instalada?

he descargado la libreria de aqui:

http://hg.bijland.net/fmalpartida/new-liquidcrystal/downloads

Y he descargado:

LiquidCrystal_v1.1.7.zip

fm:
Que versión del IDE de arduino?

He probado en ambos IDE, en 0.22 y en 1.0, y me sale lo mismo.

fm:
Intenta poner: #include <Arduino.h> al principio del sketch.

Probare esto que me comentas, y te digo si me funciona.

fm:
Has instalado bien la librería?

Las librerias en ambos casos, tanto en 0.22, como en 1.0, las he instalado en:

C:\arduino-1.0\libraries , aqui pego la carpeta "LiquidCrystal"

C:\arduino-0022\libraries , aqui pego la carpeta "LiquidCrystal"

La otra carpeta que está para descomprimir es de Mac, si no me equivoco.

Esto es lo que tengo hecho, ahora pruebo lo que me comentas.
Toni

Buenas,

Esto es lo que sale cuando añado #include <Arduino.h>

Error compiling

sketch_feb15a.cpp:2:21: error: Arduino.h: No such file or directory
In file included from C:\arduino-0022\libraries\LiquidCrystal/LiquidCrystal_SR.h:81,
from sketch_feb15a.cpp:3:
C:\arduino-0022\libraries\LiquidCrystal/LCD.h: In function 'void waitUsec(uint16_t)':
C:\arduino-0022\libraries\LiquidCrystal/LCD.h:64: error: 'delayMicroseconds' was not declared in this scope

Toni

Es curioso, nadie ha reportado ningún tipo de problema.

Básicamente lo que te está diciendo el error es que no encuentra delayMicroseconds que es una función estándar arduino.

Por lo tanto es posible que algo no esté bien instalado en tu entorno Arduino.
Haz una simple prueba:
Modifica tu programa para que en el setup haga: delayMicroseconds (10);

Por otro lado, utiliza los ejemplos que vienen con la librería, estos están probados por mucha gente y sin problemas.

Buenas,

Cuando pongo los ejemplos, veo que la libreria no se me activa en rojo, como si no la encontrara. Y cuando ejecuto:
delayMicroseconds (10); no tengo ningún problema, lo reconoce sin problemas.

Seguiré probando. Lo que voy a hacer es desinstalar todo y partir de cero, y así veo si sucede lo mismo. Esta tarde cuando llegue a casa lo pruebo.

Toni.

Hola, he visto un pequeño error que entro en la version 1.0.7 de la libreria que explica el problema que has visto. He subido un parche este fin de semana, versión 1.0.7.1 que esta en la zona de descarga. A ver si soluciona el problema.
Para arreglarlo sin parche se puede poner #include <Arduino.h> en el sketch, pero lo he arreglado a nivel de librería.

Gracias por probar la librería y disculpa las molestias.

Por cierto, el fin de semana que viene publicaré la version 1.2.0, mas rápida y con una implementacion mas elegante y algunos métodos extendidos adicionales.

Un saludo

Buenas,

Gracias a ti por la ayuda prestada, y probaré la nueva versión para ver que tal, pero aunque soy nuevo en esto, creo que se trata de compartir experiencias y ayudarnos.

En lo que pueda, lo voy a intentar.

Estoy un poco liado por el trabajo, pero a ver si puedo seguir probando cosas. Ya os cuento.

Un saludo.
Toni.

Hola fm,

Ya he visto que tienes la actualización de la librería, esta tarde en cuanto llegue a casa la pruebo, y veo si consigo hacerla funcionar de una vez. :cold_sweat:

Expondré mis problemas y la solución para más gente.

Un saludo.

Toni

Buenas a todos,

Al final y tras hacer un número infinito de pruebas con todo tipo de librerias, he conseguido hacer funcionar el Display con tres hilos que era lo que me había propuesto.

fm, con tus librerias no he sido capaz, pero seguramente haré algo mal, pero no te preocupes que no lo dejo ahí, y continuaré hasta que consiga que funcione, si es que a tí te vale para tu experiencia. Lo que a mi no se me carga es:
#include <I2CIO.h>
#include <LCD.h>
#include <LiquidCrystal.h>
#include <LiquidCrystal_I2C.h>
#include <LiquidCrystal_SR.h>
#include <LiquidCrystal_SR_LCD3.h>

Ninguna de ellas se me pone en rojo, como que está bien cargada, las utilizo con IDE 1.0 y no he sido capaz. Y con el IDE 0.22:
#include <FastIO.h>
#include <I2CIO.h>
#include <LCD.h>
#include <LiquidCrystal.h>
#include <LiquidCrystal_I2C.h>
#include <LiquidCrystal_SR.h>
#include <LiquidCrystal_SR_LCD3.h>

Las que están en rojo son las que cargo correctamente.

Así que tras hacer diferentes pruebas y no ser capaz, descargue la libreria:
#include <ShiftRegLCD.h>

Y con esta librería si que he sido capaz de poder hacer funcionar el display en las dos líneas y con las mismas funciones que cuando utilizaba el display sin 74HC595.

He utilizado los esquemas de la página que pusimos el link en anteriores post y funcionó.

Si alguien necesita algo, que lo pregunte. fm gracias por todo y ya te iré informando de las pruebas que haga con tus librerias.

Un saludo.
Toni.

Pues es muy raro, muy raro porque la librería la está usando mucha gente sin hacer ningún tipo de modificaciones en el código. Vamos que la mayor parte de la gente, reemplaza el directorio de "libraries/LiquidCrystal" de su distribución Arduino y lo reemplazan por esta y no les ha dado ningún problema.

Aquí te dejo una entrada en uno de los foros de audio donde usan la librería porque es mucho más rápida: New liquidCrystal Arduino Library | H i F i D U I N O

Y lo que más me gusta de la librería es que también funciona con CHIPKit sin cambiar nada. En fin, ...