Go Down

Topic: [SOLUCIONADO]-4 o mas lcd en un arduino (Read 464 times) previous topic - next topic

erikblade

May 29, 2016, 03:30 pm Last Edit: May 29, 2016, 05:43 pm by erikblade
muy buenas:

el otro dia mirando como conectar varios lcd en paralelo al arduino me encontre con esto

https://www.hackmeister.dk/wp-content/uploads/2013/06/4_lcd_1_arduino_diagram.pdf

al parecer utiliza un unico bus paralelo para todos los lcd y mediante el enable determina sobre cual escribe.

me parecio bastante interesante, pero me surgio una duda de novatillo.¿ cuatro lcd bien pero que pasa si pongo 10?¿no sobrepasare la intensidad que pueden darme las salidas?

en teoria aunque solo haya un lcd activo el resto segira teniendo el bus activo no?
cual seria el limite de lcd´s conectados de esa forma??

si ya se lo que direis muchos "metelo por i2c y te olvidas". pero no me apetece crear un i2c en modo multimaestro. (el arduino al que pretendo colocar esos 10 es esclavo de otro por i2c)

surbyte

#1
May 29, 2016, 04:21 pm Last Edit: May 29, 2016, 04:53 pm by surbyte
Un LCD paralelo usa 4 pines para los datos (modo 4bits) mas 2 de control Enable y RS. Son 6 pines. Dejemos Enable porque solo estará uno, lo que nos genera el problema que necesitaremos 10 para tu proyecto, o sea descartemos  un UNO/NANO para tu operación y hablemos de MEGA/DUE.
Necesitas 5 + 10 pines = 15 pines

Posibles soluciones:
1 Podrias usar 74595 shift registers y con la librería Fmalpartida LCD no tendrás problemas en comandarlos sin inconvenientes. 1 por LCD y asunto arreglado usando solo 3 pines.   

2. Usar un decodificar 4 a 16 y con esa salida habilitar el LCD. Requiere modificar la librería
3. Usar dos Shift register para habilitar los ENABLE. Requiere modificar la librería

erikblade

gracias surbyte por la respuesta.

lo de los pines a usar ya lo tenia mas menos claro y como usarlos. el tema es que de capa fisica de buses de comunicacion estoy un poco pez (vamos que ni idea) y en los datasheet de los displays habia leido algo asi como current sink D0-D7 que me figuro que sera la corriente que entra al display por el bus de datos. (creo ya te digo que de esto ando perdidisimo).

por eso tenia la duda a ver si colocando tantos lcd en un mismo bus iba a sobrepasar el amperaje de las salidas.

PD. haria las pruebas pero los lcd aun estan en camino

surbyte

Los LCD si no están activos estan en modo Z o alta impedancia. Además son entradas no salidas. Claro que x 10 no hay que despreciarlos.
Igualmente agrega la hoja de datos usando tags para enlacs.

Aprovecho para reclamarte porque en tu primer post pones un enlace y no usas tags. Lee las normas del foro o simplemente edita y usa el tag (eslabón)

Aca tienes la configuración de fmalpartida para un Shift Register. Mira la que dice Latch Shift Register





Con un código como este

Code: [Select]
#include <LCD.h>
#include <LiquidCrystal_SR.h>

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

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

   // your code here...
}

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


Como ves expandirlo a 10 solo requiere cambiar Enable y definir 9 objetos lcd mas.

erikblade

muchas gracias
disculpa por lo del tag ni me habia fijado :smiley-confuse:  :smiley-confuse:

me ha resultado bastante util
un saludo

Go Up