LusoRobótica - Robótica em Português

Sistemas específicos => Arduino / AVR => Tópico iniciado por: filipe89 em 24 de Novembro de 2012, 03:27

Título: I2C LCD
Enviado por: filipe89 em 24 de Novembro de 2012, 03:27
Boa noite,
Este tópico é de âmbito geral de micro processadores entre outras coisa.

Quero comprar um I2C para um LCD no ebay, e vem a dizer que é para o 16x2. Sendo que é só um "driver" não é possivel colocar num 20x2?
Título: Re: I2C LCD
Enviado por: tarquinio em 24 de Novembro de 2012, 04:04
Estás a falar de uma coisa que permita ligar um LCD com interface ST7066/HD44780 (daqueles com 16 pinos) a uma interface I2C? Desde que a interface seja a mesma, não interessa qual o tamanho do display (imagino que queiras um 20X4, e não 20x2) , pelo que percebi o que tu queres é so uma coisa que converta I2c para paralelo, não vejo problemas nisso...
Título: Re: I2C LCD
Enviado por: senso em 24 de Novembro de 2012, 14:00
Não é compativel porque isso não são port-expanders i2c, mas sim micro-controladores a correr código, a fazer de slaves i2c, e uma das coisas que está hard-coded é a inicialização, assim como buffers e assim, dai não dar para trocar o lcd por um com mais ou menos linhas ou caracteres.
Podes sempre fazer tu um com um pic pequeno ou um attiny2313.
Título: Re: I2C LCD
Enviado por: filipe89 em 24 de Novembro de 2012, 14:37
Estás a falar de uma coisa que permita ligar um LCD com interface ST7066/HD44780 (daqueles com 16 pinos) a uma interface I2C? Desde que a interface seja a mesma, não interessa qual o tamanho do display (imagino que queiras um 20X4, e não 20x2) , pelo que percebi o que tu queres é so uma coisa que converta I2c para paralelo, não vejo problemas nisso...

Quero mesmo o 20x2 são super baratos no ebay, mas estou sem espaço nas saídas do meu arduino, então queria o I2C, para os 16x2 são relativamente baratos, os 20x2 são o dobro do preço, e sim nas imagens parece um micro, ou seja deve ser a razão de encarecer.
Título: Re: I2C LCD
Enviado por: senso em 24 de Novembro de 2012, 14:45
Usa um shift-register, tens de usar 3 pinos em vez de só 2 do i2c, mas usas o lcd que bem quiseres.
E podes usar shift-registers para ficares com mais saidas digitais.
Título: Re: I2C LCD
Enviado por: tarquinio em 24 de Novembro de 2012, 14:47
Podes por o link exactamente da cena que querias comprar?
Título: Re: I2C LCD
Enviado por: filipe89 em 24 de Novembro de 2012, 15:46
http://www.ebay.com/itm/IIC-I2C-TWI-SPI-Serial-Interface-Board-Module-Port-For-Arduino-1602-LCD-Display-/160928052178?pt=LH_DefaultDomain_0&hash=item25780f33d2 (http://www.ebay.com/itm/IIC-I2C-TWI-SPI-Serial-Interface-Board-Module-Port-For-Arduino-1602-LCD-Display-/160928052178?pt=LH_DefaultDomain_0&hash=item25780f33d2)
este é o I2C

http://www.ebay.com/itm/20X2-LCD-Module-Black-Character-without-Backlight-2002-/160925781336?pt=LH_DefaultDomain_0&hash=item2577ec8d58 (http://www.ebay.com/itm/20X2-LCD-Module-Black-Character-without-Backlight-2002-/160925781336?pt=LH_DefaultDomain_0&hash=item2577ec8d58)
este é o LCD 20x2 mais barato que está a aparecer

Usa um shift-register, tens de usar 3 pinos em vez de só 2 do i2c, mas usas o lcd que bem quiseres.
E podes usar shift-registers para ficares com mais saidas digitais.
O shit-register não é feito pelo comando enviado pelo porto? que neste caso será a comunicação I2C?
Título: Re: I2C LCD
Enviado por: tarquinio em 24 de Novembro de 2012, 15:58
A idéia do shift register é que com tres pinos consegues controlar o LCD (ou outras coisas).
Espreita isto por exemplo:
https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection
Só precisarias do LCD + 1 shift register que até consegues comprar barato cá em PT... ;)
Título: Re: I2C LCD
Enviado por: filipe89 em 24 de Novembro de 2012, 16:17
A idéia do shift register é que com tres pinos consegues controlar o LCD (ou outras coisas).
Espreita isto por exemplo:
https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection
Só precisarias do LCD + 1 shift register que até consegues comprar barato cá em PT... ;)
há aqui qualquer coisa que me está a falhar.

No esquema que me deste só têm 2 coneções tirando a alimentação contrataste etc.

A ideia que tenho dum LCD 16x2 é que depois de fazer as inicializações, via porto paralelo, faço o "clock" (Enable) configuro o RS e o R/W etc.

Como é que IC só usa 4 pinos de dados?

como já tinha dito, já encontra I2C a dizer que eram micros, neste caso não dizem, porque é que eles fazem a inicialização automática e não deixam ao programador escolher?
Título: Re: I2C LCD
Enviado por: tarquinio em 24 de Novembro de 2012, 20:50
Tens duas versoes diferentes da coisa...
Primeiro aparece Non Latching Shift Register, que usa só 2 pinos de dados, e mais abaixo tens Latch Shift Register, que usa mais 1 pino de dados.
A idéia é em vez de teres X outputs do arduino, teres apenas 2 ou 3 ligados ao shift register. Um dos pinos é o clock, o outro pino indica qual é o valor do pino do output seguinte. A diferenca entre ter o terceiro pino ou não é que esse pino serve para alterar os outputs todos de uma vez quando já tem todos o valor certo, em vez dos valores irem mudando de cada vez que há um clock.
Experimenta ler isto se quiseres perceber melhor:
http://www.instructables.com/id/The-74HC164-Shift-Register-and-your-Arduino/ (http://www.instructables.com/id/The-74HC164-Shift-Register-and-your-Arduino/)
Título: Re: I2C LCD
Enviado por: filipe89 em 25 de Novembro de 2012, 00:53
Tens duas versoes diferentes da coisa...
Primeiro aparece Non Latching Shift Register, que usa só 2 pinos de dados, e mais abaixo tens Latch Shift Register, que usa mais 1 pino de dados.
A idéia é em vez de teres X outputs do arduino, teres apenas 2 ou 3 ligados ao shift register. Um dos pinos é o clock, o outro pino indica qual é o valor do pino do output seguinte. A diferenca entre ter o terceiro pino ou não é que esse pino serve para alterar os outputs todos de uma vez quando já tem todos o valor certo, em vez dos valores irem mudando de cada vez que há um clock.
Experimenta ler isto se quiseres perceber melhor:
http://www.instructables.com/id/The-74HC164-Shift-Register-and-your-Arduino/ (http://www.instructables.com/id/The-74HC164-Shift-Register-and-your-Arduino/)

Acho que já percebi, pensei que te referias em mexer nos shift register do LCD.

Mas acho que não posso usar dessa forma, já tenho um teclado PS2 ligado, que usa o clock e data, só tenho 1 saída digital e 3 entradas analógicas sobrantes :/
Título: Re: I2C LCD
Enviado por: senso em 25 de Novembro de 2012, 02:36
Os pinos analógicos tambem são pinos digitais.
3 pinos servem perfeitamente para ligar um shift-register um 74hc595.
Título: Re: I2C LCD
Enviado por: filipe89 em 25 de Novembro de 2012, 13:58
Ok vou tentar se tiver espaço de código :p

Então qual é a justificação do uso de 4 pinos de dados no LCD?
Título: Re: I2C LCD
Enviado por: senso em 25 de Novembro de 2012, 14:03
É assim que o chip que controla o lcd funciona.
Título: Re: I2C LCD
Enviado por: tarquinio em 25 de Novembro de 2012, 15:50
Então qual é a justificação do uso de 4 pinos de dados no LCD?
É uma interface paralela, manda vários bits ao mesmo tempo... É uma questão de escolha, podes até ligar os 8 bits em vez de quatro. Se tiveres uma interface paralela podes mandar logo 1 byte por cada clock, porque cada fio leva um bit diferente. Se for série, como só há 1 fio para os dados só vai 1 bit de cada vez.