LusoRobótica - Robótica em Português

Sistemas específicos => Arduino / AVR => Tópico iniciado por: redace em 19 de Janeiro de 2010, 23:19

Título: Arduino + LCD + Keypad
Enviado por: redace em 19 de Janeiro de 2010, 23:19
boas

queria construir um sistema com um arduino com LCD 16x2 e um Keypad de 12 caracteres, alguém me pode dar umas dicas como posso fazer isso (basicamente a duvida é se posso usar os mesmos pins do ardoino para ligar o LDC e o Keuypad)

 ;)

ps: com completamente amador nestas coisas :P
Título: Re: Arduino + LCD + Keypad
Enviado por: ricardo-reis em 20 de Janeiro de 2010, 02:29
se a tua dúvida é só em relação a 'se podes ou não usar os mesmos pinos do arduino pra controlar o lcd e o key pad, o mais provável é que não.. a menos que estejas a usar algum protocolo de comunicação tipo i2c (ou outros) que te permita endereçar tanto o lcd como o key pad.. de outra forma, não..

mas dá-nos mais informação acerca do lcd (suponho k seja compactível com um que aqui temos mais que documentado) e do key pad, pode ser que se 'arranje' forma de pôr isso tudo a comunicar..

outra questão: esse 'projecto' só precisa de ter o lcd e o keypad, ou tás a pensar em usar mais algum componente?
Título: Re: Arduino + LCD + Keypad
Enviado por: redace em 20 de Janeiro de 2010, 08:24
ora bem...
ainda não tenho nenhum componente, nem mesmo o arduino, estou a "investigar" como posso fazer algo que realize algumas funções como temporizador (contagem regressiva do tempo) logo pretendia adicionar um buzzer e um rele para accionar um alarme.
como opcional pretendia que ao abrir uma porta (ligada a um contacto) tivesse o mesmo procedimento descrito anteriormente

 ;)
Título: Re: Arduino + LCD + Keypad
Enviado por: kast em 20 de Janeiro de 2010, 12:20
Epá ... eu acho que é possível mesmo sem I2C. O lcd ocupa uns 7/8 pinos, mas o keypad só deve precisar de pin analógicos. Com os 5 analógicos para 12 teclas creio não haver problemas.

Kast

PS- Atenção que eu só percebo de baldes de massa ....

edit:
Lembrei-me agora que tenho um keypad com 5 teclas e que só ocupa 1 pin analógico.
Título: Re: Arduino + LCD + Keypad
Enviado por: ricardo-reis em 20 de Janeiro de 2010, 12:43
kast, mas a usar os mesmos pinos n conheço a n ser k seja por i2c ou kk outro protocolo de comunicação..

sem usar os mesmos pinos podes ligar o lcd e um key pad podes fazer com vários botões e resistencias.. e sim, um pino analógico chega pa controlar n botões.. dps posso postar aqui como fazer isso..

pró temporizador podes usar um ds1307, procura pelo tutorial do tr3s..

lcd barato e bom tb podes procurar o tutorial do tr3s com arduino e lcd do nokia 3310..

kt a buzzers, acho que só precisas dum pino do arduino, relé n sei como funciona, mas há-de haver aí quem saiba.. :P
Título: Re: Arduino + LCD + Keypad
Enviado por: redace em 21 de Janeiro de 2010, 10:42
Boas

Gostei da ideia do I2C mas fica para outro projecto, neste vou tentar usas ligações "directas"

(como não percebo nada do arduino) Pelos posts anteriores e pela pesquisa que fiz fiquei um bocado confuso.

Figura 1
Figura 2
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg59.imageshack.us%2Fimg59%2F1436%2Farduinoschematic.th.png&hash=580cf49f0b43f2465ddf1d8ac503fc3c1b5d9c17) (http://img59.imageshack.us/i/arduinoschematic.png/)(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg64.imageshack.us%2Fimg64%2F9784%2Fimageaxdx.th.jpg&hash=e403c68161f2a6d7349d86b85ee89a88603f68f4) (http://img64.imageshack.us/i/imageaxdx.jpg/)


Assim temos, na Figura 1 as digital In em J1 com 8 pins disponíveis; as digital Out em J3 com 6 pins disponíveis; e as analógicas In em J2 com 6 pins disponíveis (não 5 como o kast referio), o que prefaz 20 pins para ligações possíveis.
Na Figura 2 temos algumas restrições, nas "portas" ditais na posição 0, 1 e 13, o que deixa 17 pins livres.

Assim para planear o próximo passo preciso desfazer algumas duvidas.

1 - Quantas ligações são possiveis em cada bloco de pins?
2 - O que são PWM's?
3 - Para fazer contagem decrescente tambem precisa do DS1307?

Obrigado
Título: Re: Arduino + LCD + Keypad
Enviado por: ghostbuster em 21 de Janeiro de 2010, 14:56
podes tambem fazer um array de resistores entre as saidas dos pinos do keypad e o arduino ler a resistencia
Título: Re: Arduino + LCD + Keypad
Enviado por: redace em 21 de Janeiro de 2010, 15:03
podes tambem fazer um array de resistores entre as saidas dos pinos do keypad e o arduino ler a resistencia

esse é a segunda opção o que vai dificultar o código, mas para já preciso saber quantos pins tenho disponíveis e as restantes questões  ???
Título: Re: Arduino + LCD + Keypad
Enviado por: ricardo-reis em 21 de Janeiro de 2010, 15:14
redace:

tens disponíveis os pinos digitais do 0 ao 13 e os analógicos do 0 ao 5.. o ground e o vcc de 3v3 e de 5v - ao pé dos analógicos.

o 'array de resistores' como o ghostbuster diz, é capaz de ser a melhor forma de usares o mínimo de pinos analógicos possível, de forma a teres um 'keypad' funcional. é bastante simples de fazer tanto em hardware como dps de controlar por software..

para fazeres a contagem decescente: pelo que percebi querias esta contagem 'sincronizada' com o comum dos relógios.. se assim n for, n precisas do ds1307.. como sabes o arduino tem um clock interno e podes usá-lo pra fazer essa tal contagem decrescente.. de qualquer forma, se quiseres fazer uma contagem decrescente sincronizada com o relogio e n queiras usar um ds1307, podes fazer as continhas pra usar o clock do arduino.. mas é capaz de te dar mais trabalho.. o 1307 está bastante bem documentado cá no fórum, portanto, tens trabalho poupado a esse nível..

em relação aos pins pwm, podes olhar pra eles como uns pinos analógico-digitais.. pk? pk podes definir o valor que lhes mandas, n sendo obrigatóriamente o 0 ou o 1.. admitem valores entre 0 e 255 (é comum que sejam usados para controlar servos, pontes h e coisas do género)..
Título: Re: Arduino + LCD + Keypad
Enviado por: redace em 21 de Janeiro de 2010, 18:40
como sabes o arduino tem um clock interno

não sei :P não sei mesmo nada sobre ele ando a pescar informação e parece que estou a conseguir boas informações.

agora, parece que já posso planear uns esquemas e comprar algum material material

já agora, http://loja.lusorobotica.com/arduino/31-breaduino-essential-kit.html (http://loja.lusorobotica.com/arduino/31-breaduino-essential-kit.html)
dá para programar o Atmega328 no arduino e polo acorrer com esse kit?

Título: Re: Arduino + LCD + Keypad
Enviado por: tcustodio em 21 de Janeiro de 2010, 18:55
já agora, http://loja.lusorobotica.com/arduino/31-breaduino-essential-kit.html (http://loja.lusorobotica.com/arduino/31-breaduino-essential-kit.html)
dá para programar o Atmega328 no arduino e polo acorrer com esse kit?
Sim, podes programar o atmega328 no arduino e de seguida montá-lo na breadboard com o resto dos componentes. ;)
Título: Re: Arduino + LCD + Keypad
Enviado por: redace em 04 de Fevereiro de 2010, 18:36
Encontrei este esquema, que parece muito interessante, que apenas usa um pin, R_row1 e R_col1 vão ser 0 ohms. A R_d é uma resistência divisora de tensão que vai funcionar como resistência de pull down quando a tecla é premida.

(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg28.imageshack.us%2Fimg28%2F9310%2F52740529.th.png&hash=81243d276d492e0b28645e956b08c610aae1a2d5) (http://img28.imageshack.us/i/52740529.png/)

No ficheiro em anexo (http://www.siterunner.fi/liitteet/outijapekka/materiaalipankki/5.ods) estão os cálculos das resistências e dos sinais que o Arduíno lê.
As minha duvidas são:

1- A resistência R_d é mesmo necessária?
2- Como é que se calcula a voltagens depois de uma resistência no Arduíno?
3- Como é que se passa de voltes para sinal do Analog in?
Título: Re: Arduino + LCD + Keypad
Enviado por: rafaelgimenes em 07 de Abril de 2010, 19:02
fiz algo parecido só que com apenas 3 botões mas usando uma entrada analogica.
http://rafaelgimenes.net/2010/04/07/exemplo-arduino-lcd-botoes-analogica-led-serial/ (http://rafaelgimenes.net/2010/04/07/exemplo-arduino-lcd-botoes-analogica-led-serial/)
Título: Re: Arduino + LCD + Keypad
Enviado por: amando96 em 07 de Abril de 2010, 20:37
Eu cheguei a fazer a isto, não tenho esquemas, mas usei um shift register para o LCD, e queria usar outro shift register para o keypad, mas acabei por adiar, pois não altura não me fazia falta, fiz para passar o tempo...
se der para daisy chain dois shift registers, um para output, outro para input, só gastas 3 pinos(SPI) mas se for preciso uma ligação de SPI para output, e outra para input, assim gastas 6 pinos...
Título: Re: Arduino + LCD + Keypad
Enviado por: OxyGen em 06 de Maio de 2010, 15:32
E que tal usares um pino de enable? segundo sei, os pinos do arduino sao bidireccionais, portanto basta usares um pino que sirva de enable para um e para outro....
Título: Re: Arduino + LCD + Keypad
Enviado por: senso em 06 de Maio de 2010, 20:18
Explica melhor essa do enable bidireccional
Título: Re: Arduino + LCD + Keypad
Enviado por: OxyGen em 08 de Maio de 2010, 21:28
Não é o enable que é bidireccional, mas sim as linhas analog e digital. Tanto servem para ler como para escrever... Referia-me a tu usares as mesmas linhas para controlares os dispositivos e depois ter as linhas de enable separadas... Poderás usar também apenas uma linha de enable para os dois dispositivos caso eles tenham enables diferentes: um Active Low e outro active High.

LCD:
Código: [Seleccione]
The pinout is as follows:

Arduino         LCD
2               Enable # tenta saber se ele é activo a 0 ou a 1. Penso que esta função fará isso e não precisas de saber esse pormenor: noDisplay()
3               Data Bit 0 (DB0)
4               (DB1)
5               (DB2)
6               (DB3)
7               (DB4)
8               (DB5)
9               (DB6)
10              (DB7)
11              Read/Write (RW)
12              Register Select (RS)



Quanto ao keypad nao encontro nada em concreto... se tiveres alguma informação tipo datasheets posta aqui para eu também saber... Fiquei curioso...

PS: Nunca usei um arduino  mas tenho aulas de arquitectura de computadores e costumo usar os bits de enable para colocar a funcionar o que quero...

Já agora quero deixar também os meus agradecimentos ao Tiago por tão prontamente ter disponibilizado a minha encomenda.
Título: Re: Arduino + LCD + Keypad
Enviado por: OxyGen em 08 de Maio de 2010, 21:43
Encontrei o datasheet dos keypads:

http://lgrws01.grayhill.com/web/images/ProductImages/Series%2096%20Standard%20Keypads.pdf (http://lgrws01.grayhill.com/web/images/ProductImages/Series%2096%20Standard%20Keypads.pdf)

Pelo que vejo não existem linhas de enable/disable para o keypad, pelo que nao sei até que ponto quando estiveres a usar o LCD e se pressionares uma tecla no keypad penso que irá alterar o que aparece no display ou criar de certa forma uma alta impedância ou até mesmo queimar alguma coisa... 2 dispositivos 1 a forçar nível lógico 0 e outro a forçar o nivel logico 1. Usa fusiveis!

Se estiveres a usar o LCD penso que o keypad tem hardware suficiente para ignorar os dados que lhe chegam, uma vez que ele é só de escrita e não de leitura...

PS: Alguem que confirme isto... nunca usei isso não posso ter a certeza do que estou a dizer... mas nada melhor do que a tentativa e erro para aprender...

Cumps