TECLADO COM 49 TECLAS

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

TECLADO COM 49 TECLAS

Mensagempor tcpipchip » 22 Fev 2008 12:16

Bom dia

Para fazer um teclado 7x7 com o PIC16F877, que portas voces sugerem para representar as linhas e colunas ?

TCPIPCHIP
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Re: TECLADO COM 49 TECLAS

Mensagempor FLUGEL » 22 Fev 2008 12:34

Boa tarde.
Melhor você fazer com Ad e resistores. Faça uma malha de resistores formando um divisor de tensão com um valor de tensão diferente para cada tecla pressionada.
Só tenho feito teclado assim.
Um abraço até mais.
FLUGEL
Bit
 
Mensagens: 9
Registrado em: 22 Nov 2006 11:39

Mensagempor ze » 22 Fev 2008 13:25

faz 1 com a técnica mtouch. tô querendo fazer 1 mas não quero ser o 1º a colocar no mundo. (fiz 1 protótipo). se o seu der certo, vou atrás. rs. alguém conhece algum caso de sucesso dele aqui no Brasil?
Com relação à sua indagação só posso sugerir o que você não deve usar: as portas que são compartilhadas com o seu uso no circuito. explico: não use pinos: I2C, TXRX, AD, etc se você os for utilizar. (que gênio, descobri sozinho!)
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Mensagempor fabim » 22 Fev 2008 16:18

pode ser 7X8, usando diodos 1N4148 e dip sweet de 1 contato ?

Mais que isso só eu indo aí fazer para você.

Fabim
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor phophollety » 22 Fev 2008 19:08

Qualquer port ueh, preferencialmente os que tem menos recursos..., não faça com resitor não, se apertar duas teclas ao mesmo tempo vai ler outra....
"3 minutes of boring code review means 3 hours less fixing LSD (Little Stupid Detail)" Dr. Mike Smith
"Dê-me um ponto de apoio e uma alavanca e moverei o mundo" Arquimedes
"Quando vejo um Alfa Romeo passar eu tiro o meu chapéu" Henry FORD.
Avatar do usuário
phophollety
Dword
 
Mensagens: 1511
Registrado em: 15 Out 2006 13:00
Localização: Santo André São Paulo, Brasil

Mensagempor tcpipchip » 22 Fev 2008 20:18

Ola, eu decidi fazer com o processador de teclado PC AT da HOLTEK...
Obrigado pelas dicas!!!!
TCPIPCHIP
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Mensagempor phophollety » 23 Fev 2008 10:48

Qual o código deste carinha!?
"3 minutes of boring code review means 3 hours less fixing LSD (Little Stupid Detail)" Dr. Mike Smith
"Dê-me um ponto de apoio e uma alavanca e moverei o mundo" Arquimedes
"Quando vejo um Alfa Romeo passar eu tiro o meu chapéu" Henry FORD.
Avatar do usuário
phophollety
Dword
 
Mensagens: 1511
Registrado em: 15 Out 2006 13:00
Localização: Santo André São Paulo, Brasil

Mensagempor tcpipchip » 23 Fev 2008 14:52

http://www.holtek.com.tw/pdf/computer/82k28av130.pdf

Eu ja tinho feito funcionar no BASCOM, agora fiz funcionar no CCS.

T+

TCPIPCHIP
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Mensagempor Wagner de Queiroz » 23 Fev 2008 20:05

se eu tivesse um teclado tao grande assim eu usaria um teclado PS2 mesmo. Teclado se joga fora por causa da membrana mas a placa e o cabo sempre estao bons. É só mapear as linhas e colunas para suas teclas e capture o codigo de varredura resultante para sua aplicacao. Alem do mais que tendo um teclado de pc na mao, vc pode substituir o teclado por um real se souber que teclas capturou. Pelo menos é uma ideia
Seja Livre, Use Linux
Avatar do usuário
Wagner de Queiroz
Word
 
Mensagens: 872
Registrado em: 11 Out 2006 13:38
Localização: Barueri-SP

Ola a todos

Mensagempor Vonnilmam » 23 Fev 2008 21:59

Se eu bem entendi o que voce deseja:

È muito facil, veja, utilize um decoder HC138 (3x8) para gerar as linhas de varredura (nesse caso irá utilizar 3 pinos de i/o pode ser E0,E1,E2)
Em seguida utilize o HC151 (3x8x1) que é um leitor indexado com 8 entradas e uma saida que pode ser escolhida entre entregar o sinal em nivel alto ou baixo (veja datasheet) (nessa caso utilizaria mais 4 pinos do pic por exemplo c0,c1,c2 e c3 como entrada para ler o pino de saida do hc151)

Então com só apenas 7 pinos voce conseguiu montar uma matrix de 8x8 ou seja capaz de ler até 64 teclas, em relação a rotina eu sugiro que utilize a técnica de escrita direta na ram (FSR), essa rotina é encarregada de enviar o dado para o hc138 em sequencia de 0 a 7 e repetilo, a cada incremento você faz a leitura do hc151 detectando se o pino de entrada c3 mudou de estado (conforme setup do hc151), caso afirmativo voce escreve a informação numa posição de ram predeterminada na inicialização.

Voce pode utilizar um bit ou varios bytes para armazenar a situação de uma tecla, para a leitura utiliza-se a mesma rotina somente alterando a forma de endereçar a ram através do fsr.

Eu desenvolvi uma rotina muito interessante em assembler que faz esse tipo de leitura e escrita na ram, ela não opcupa mais do que 50bytes na memoria de programa.

Até +
Von
VonNilmam "Assembler" e agora "C"
Avatar do usuário
Vonnilmam
Byte
 
Mensagens: 446
Registrado em: 19 Out 2006 14:25
Localização: espacial

Mensagempor fabio_ » 25 Fev 2008 16:23

aproveitando o tópico,

como voces fazem para evitar que os famosos "repiques" ocorridos nas chaves não sejam problemas para detectar se as chaves estão abertas ou fechadas neste tipo de teclado com várias chaves.

Para poucas chaves eu costumos fazer um delay de alguns milisegundos, porém para muitas chaves acho que não seria viável.
fabio_
Byte
 
Mensagens: 177
Registrado em: 13 Jun 2007 12:08

Mensagempor andre_luis » 25 Fev 2008 19:14

Uma alternativa de expandir a capacidade de um teclado seria implementar mecanicamente chaves que acionassem simultaneamente qualquer combinação de teclas em cada linha ou coluna do teclado, exclusivamente. Com isso para uma matriz de 4x4 por exemplo, teríamos as seguintes possibilidades :

4 ( de 1 a 1 ), 6 ( de 2 a 2 ), 4 ( de 3 a 3 ) e 1 ( as 4 acionadas )

Totalizando :

2 x ( 4 x ( 4 + 6 + 4 + 1 )) = 120 possibilidades.


utilizando apenas 8 pinos.

A propósito, já utilizei esse conceito para permitir combinações de teclas ( Tipo, CTRL+Z ) , afim de aumentar a segurança do paciente, pois um simples acionamento indevido não seria capaz de ser interpretado como um comando efetivo para o programa.

+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Mensagempor phophollety » 25 Fev 2008 19:46

Não é viável pq você usa delay, eu faço:

uso um timer para interrupção de 1ms, vamos supor que eu tenho um teclado 4*4...

Ligo a primeira linha, e faço leitura das teclas, 1,2,3 e A, se alguma delas estiver pressionada, eu começo a decrementar o contador de pressionamento, se estiver solta eu decremento o contador de soltura, feito isso, desligo essa linha, vou para a próxima linha e assim por diante, quando eu voltar novamente nesta linha vou decrementar novamente, se eu tiver começado a decrementar e o botão estivar solto, recarrego timer da tecla e começo a decrementar o (outro, soltura) se ele chegar em 0 eu seto um flag de botão pressionado, se ainda estiver pressionado e o flag já acionado, eu pulo e vou para o próximo...

De 1 em 1 mili também eu leio o estado lógico da tecla (já filtrado pelo debounce) e passo para outro flag, que é o que eu realmente vou usar..

Para cade tecla eu crio um pressTeclaX() e um libTeclaX, assim eu posso colocar funções no pressionamento e na soltura...

Uso o tempo de 60ms para cada teclado e lhe garanto, funciona que é muito bem!

O ruim é que gasta um pouco de memória, (coisa de 2 bytes por tecla..)

Dei exemplo dos métodos em C, mas em asm faço a mesma coisa e nada a reclamar!

Já implementei em PIC16, 18 e 24HJ..

abraços
"3 minutes of boring code review means 3 hours less fixing LSD (Little Stupid Detail)" Dr. Mike Smith
"Dê-me um ponto de apoio e uma alavanca e moverei o mundo" Arquimedes
"Quando vejo um Alfa Romeo passar eu tiro o meu chapéu" Henry FORD.
Avatar do usuário
phophollety
Dword
 
Mensagens: 1511
Registrado em: 15 Out 2006 13:00
Localização: Santo André São Paulo, Brasil

Mensagempor Vonnilmam » 25 Fev 2008 20:00

Bom, cada caso é um caso aparte,

Eu utilizo as 64 teclas simultaneamente, e devido ao tempo de leitura das 64 teclas incluindo as outras rotinas no loop principal, não necessito de colocar delays, pois o tempo de varredura é grande o suficiente para abolir repques...

A ultima ideia é interessante, parabens,

VOn
VonNilmam "Assembler" e agora "C"
Avatar do usuário
Vonnilmam
Byte
 
Mensagens: 446
Registrado em: 19 Out 2006 14:25
Localização: espacial

Mensagempor fabio_ » 26 Fev 2008 00:35

phophollety,

ligo a primeira linha ....

De quanto em quanto tempo voce faz isso? Este é o debounce?
Uso o tempo de 60ms para cada teclado

O que significa este tempo de 60ms? É o tempo que vc gasta para ler o teclado?

Fábio.
fabio_
Byte
 
Mensagens: 177
Registrado em: 13 Jun 2007 12:08

Próximo

Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x