74HC595 con pantalla LCD

Hola amigos,

estoy intentando utilizar un chip 74HC595 para augmentar las salidas analogicas de mi arduino uno, pero no se como programar para que me aparezca el texto en la pantalla. He buscado en internet pero no se adapta ning煤n tutorial a mi situaci贸n. Mi LCD es la que venia en el Arduino Starter Kid, es de 16x2.

Les agradeceria si alguien me pudiese decir exactamanete que codigo debo escribir.

Las conexiones son estas.

Muchas gracias por su ayuda. :slight_smile:

  • perdon, son las salidas digitales, no las analogicas.

Usa esta librer铆a NewLiquidCrystal Pero presta atencion a como instalarla. No puedes mantener la libreria LiquidCrystal que viene por defecto en tu IDE. Debes borrarla e instalar esta con ese nombre LiquidCrystal. Tiene soporte para 4 y 8 bits, para i2C, para 74hc595 Lee esta parte de la explicaci贸n Shift Registers & LCD

|500x229

De acuerdo, muchas gracias!

ardualberto88, lo pudiste hacer funcionar?

eso funciona, te lo garantizo.

De eso estoy seguro, lo que quisiera saber es porque opci贸n eligi贸 avanzar, porque hay varias. En mi caso particular, por un tema de velocidad, voy por la opciones de 3 cables. Hoy ya lo tengo armado con 3 cables pero mediante SPI (seg煤n http://playground.arduino.cc/Main/LiquidCrystal), el caso que plantean en este posrt, entiendo que este no usa SPI (es correcto?): Para la imagen que adjuntaste en tu post del 2 de Nov, tendrian algun sketch de ejemplo de "Hello World" para entender bien como funciona?

Todo esta basado en la librer铆a que yo le suger铆 que es NewLiquidCrystal
En este link se explica mejor como interactuar con el 595 y un LCD, siempre con esta librer铆a.

Tu opci贸n es la que da el IDE por defecto y claro que esta bien. Puedes usarla y luce muy simple. Siempre usa lo que te resulte mas c贸modo.

EDITO: olvid茅 responder el tema del ejemplo. Cuando usas NewLiquidCrystal, debes cambiar la inicializaci贸n del objeto para cada tipo de LCD. Cualquier ejemplo sirve con esa simple modificaci贸n.
Si tienes un ejemplo de Hello World para lcd 4bits, cambias el objeto al definirlo y listo.
en este caso ser铆a
imagina tu ejemplo con

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

o

#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x38); // Set the LCD I2C address

Pues este ser铆a el caso. Dejo Link 74HC595 con LCD

#include <LCD.h>
#include <LiquidCrystal_SR.h>

// constructor prototype parameter:
// 聽LiquidCrystal_SR lcd(DataPin, ClockPin);
LiquidCrystal_SR lcd(2, 3);

void setup ( )
{
 聽 lcd.begin ( 16, 2 );

 聽 lcd.print("Hola Mundo");
}

void loop ()
{
 聽 // your code here ...
}

Surbyte, nuevamente muchas gracias. Puede ser que haya habido un error de interpretaci贸n?

En los ejemplos que vienen con la librer铆a, vi que funcionan con i2c, pero yo lo quiero usar con 3 cables (no me importa ya si es o no mediante SPI). Lo que me confunde es cuando inicializas el LCD, haces referencia solo a 2 pines "LiquidCrystal_SR lcd(2, 3);". Me estoy perdiendo de uno? y por otro lado, cuando haces referencia a "Link 74HC595" el ejemplo lo muestra utilizando un 74LS164N, y no el 74HC595.

Mira donde dice Latch Shift Register y veras un 595 pero tienes raz贸n respecto del 164. En realidad es para Shift Registers y ambos lo son.

Ya estoy probando. Entiendo que es mediante I2C al ser con 2 cables, no? para hacerlo con 3? simplemente lo inicializo??

No es con 3. Es latch y clock Shift register. Tu vienes con 3 del SPI, yo no habl茅 nunca de SPI.

A ver, lo hice funcionar con 2 pines. El problema es que al cabo de un tiempo, empieza a mostrar caracteres extra帽os鈥uanto mas r谩pido quiero refrescar el contenido del LCD, peor anda.
ver Falla.

Ahora鈥on 3 cables. El cable que lo identifica como ENABLE, donde lo conecto en el arduino? Insisto, en el codigo solo declara pines 2 y 3.

Se les ocurre porque puede ser esa falla con 2 cables?

en el post #7 te puse un link. En dicho link dice

** **Arduino library for 2-wire or 3-wire connection to HD44780-compatible LCD's via shiftregisters** **

USO

#include <ShiftRegLCD.h>
ShiftRegLCD objectName(Datapin, Clockpin, Enablepin or TWO_WIRE [, Lines [, Font]])
donde Lines y Font son opcionales.

  • Enablepin: puede ser reemplazado por la constante TWO_WIRE, si se usan 2 cables.
  • Lines: 1 o 2 l铆neas (un LCD de 4 lineas debe setearse como 2).
  • Font : 0 o 1, peque帽a o fuente grande (fuente de 8 o 10 de alto,si esta dispnible).