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

Buenas a tod@s,

Y lo primero es presentarme y deciros hola a todo el mundo. Llevo tiempo leyendo sobre arduino y al final me decidí a hacer algunas cosas y de momento estoy aprendiendo, espero poder compartir experiencias con vosotros.

A lo que vamos, despues de utilizar el LCD, ahora intento ahorrarme algunos pìnes de Arduino y estoy intentado utilizar un Shift Register (74HC595), he intentado seguir el tutorial y hay algo que no hago bien, ya que me salen unos simbolos raros e inconprensibles. El manual que he seguido es:

http://arduino.cc/es/Tutorial/ShiftOut

Y lo que no se es:

.-como conectar el LCD al IC, ya que solo quiero utilizar 4 bytes.
.-como controlo el texto que quiero sacar por pantalla, al igual que hacia con "HOLA MUNDO"

He visto como lo utiliza con leds, y me gustaría saber utilizarlo con LCD y poder tener el mismo control que cuando utilizamos todos los pines de nuestro arduino, conectados directamente a la pantalla LCD.

Las conexiones que he realizado son:

Alimentación.
GND (pin 8) a masa
Vcc (pin 16) a 5V
OE (pin 13) a masa
MR (pin 10) a 5V

Conexiones Arduino.
DS (pin 14) al pin digital 11
SH_CP (pin 11) al pin digital 12
ST_CP (pin 12) al pin digital 8

Conexiones LCD.
4 (RS) a patilla 2 de IC (Q2)
11 (DB4) a patilla 3 de IC (Q3)
12 (DB5) a patilla 4 de IC (Q4)
13 (DB6) a patilla 5 de IC (Q5)
14 (DB7) a patilla 6 de IC (Q6)

Esto lo he sacado de un esquema, aunque creo que no esta muy bien, tengo mis dudas.

Esto es lo que dispongo hasta ahora, y me he estancado un poco, así que si me podeis ayudar os lo agradezco. Si puedo intentaré poner un esquema (decirme con que programa haceis esos esqeumas tan chulos con la placa arduino) y así lo hago.

Gracias a todos

Toni.

Buenas otra vez,

A parte de la parte de conexiones que os comente anteriormente, os pongo el programa:

int latchPin = 8; //Pin connected to ST_CP of 74HC595
int clockPin = 12; //Pin connected to SH_CP of 74HC595
int dataPin = 11; //Pin connected to DS of 74HC595

void setup()
{
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}

void loop()
{
for (int j = 0; j < 256; j++)
{
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, j);
digitalWrite(latchPin, HIGH);
delay(1000);
}
}

Esto es lo que he configurado, y el contador no aparece por ningún sitio, sólo símbolos ilegibles, además como os comenté, tampoco se como decirle donde quiero que escriba en el LCD, como se lo podía decir anteriormente.

Un saludo
Toni

buenas, ya existe una libreria para controlar lcds con arduino y el shifter 595, echale un vistazo a https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home

Gracias,
Ahora intento descargarlo, ya que me da error la página.
Aquí también dispongo de esquemas de conexión para verificar el mio?

Toni

buenas, ya existe una libreria para controlar lcds con arduino y el shifter 595, echale un vistazo a https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home

La libreria de @fm es para conectar el LCD por I2C y no mediante un 74595

@flico - no, no la librería a día de hoy controla varias formas de controlar un LCD entre ellas: 4bits, 8bits (en paralelo), I2C, SR con 74HC595 tanto control con 2 señales, como con 3 señales y en breve con 1 solo IO. Por cierto, un su modalidad SR con el 595 en modo FAST_MODE es casi 3,5 veces más rapida que la LiquidCrystal original (esta optimización esta disponible en la version 1.1.7) y todas las llamadas son compatibles con la LiquidCrystal original, salvo la creación de la "variable".

Aun no he publicado todos los esquemáticos en la wiki de la librería, pero pronto lo haré. Aun así hay enlaces para ver como se conecta el LCD.

Buenas a todos nuevamente,

He estado leyendo los links que me habéis puesto y he descargado la librería e instalado. Pero aun así no he podido hacer funcionar el LCD, he realizado los tutoriales con diodos y se ejecutan correctamente pero el LCD imposible, en este momento ando un poco desesperado y me lo voy a tomar con filosofía ya que a cada paso que doy con el LCD, empeora en vez de mejorar.

A ver si en otro momento lo veo de otro color porque ahora solo lo veo oscuro.

Os agradecería que si tenéis un esquema y programa ejemplo, me digáis donde consultar, ya que no veo la luz.

Por la web, he encontrado este esquema, pero no es de un 74HC595, es de un 74LS164N (y este IC no lo tengo).

http://www.3guys1laser.com/blog-cheap-arduino-2-wire-lcd-display-0

Un saludo y gracias.
Toni

Hola Tony

Un par de sugerencias:

Antes de empezar con el shiftregister, usa el LCD en modo 4bits. Puedes ejecutar los ejemplos que hay en la libreria.
Una vez que tengas esa configuracion funcionando, el LCD operativo hayas configurado el potenciometro para que se vea bien. Ensambla el circuito del SR que hay en la wiki, esta probado y funciona muy bien.
Para hacerlo funcionar la libreria tiene su correspondiente ejemplo de programa.

A ver si conseguimos que te funcione bien.

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