Arduino

Ligando um teclado PS2 ao Arduino

Escrito por: ­ 9 de out de 2016 ­ 1.413 views

Muitos projetos feito com o Arduino (os mais legais), necessitam captar entrada de dados. Normalmente para cada entrada, um pino é utilizado e caso você não esteja utilizando o Arduino Mega, sua opções começam a ficar mais limitada.
A entrada de dados, pode ocorrer através de um botão (táctil – push button), um sensor de toque (touch sensor), sensor de presença (ultrassônico ou infravermelho),um LDR (Light-Dependent Resistor – sensor fotovoltaico – sensor de luz), etc…

Caso você tenha um teclado antigo, com conexão PS2 será possível expandir a capacidade do seu Arduino. Utilizando somente 2 pinos (Clock e Data) + Ground e 5v, é possível trabalhar com até 209 teclas (incluindo funções com Shift e Alt Gr).

Nós modificamos a biblioteca (library) da equipe do PJRC para o teclado mais utilizado no Brasil, o ABNT-2.

A biblioteca (library) do PS2Keyboard desenvolvida pelo pessoal do PJRC e poderá ser baixada aqui.

A biblioteca modificada está disponível em nossa área de download.


Agora vamos ao que interessa:

O que você vai precisar:

1 conector PS2 – o nosso extraímos de uma placa mãe antiga.
4 fios para conexão (somente para o teclado)
1 placa Arduino  ** A Conexão varia conforme a placa.
IDE do Arduino


Identificando as portas:

Primeiramente você deverá identificar as portas do seu conector:

teste_Continuidade

 

Cada entrada deverá ser identificada com sua saída equivalente.
Uma maneira simples de saber qual é a porta correta é através do teste de continuidade do multímetro.
Através dessa função, quando a ponta de prova estiver no local correto ele soará um apito indicado a continuidade.

Exemplo:
Coloque uma ponta de prova do multímetro em 2 e a outra em 1. Sendo a mesma, uma informação sonora será ouvida.

 

Uma vez identificada, usaremos somente as 4 portas indicadas abaixo:

Ps2 Conexao


Conectando ao Arduino/Genuino:

A conexão é muito simples, porém atenção ao tipo de Arduino que você utiliza (veja tabela abaixo).

A Placa UNO, por exemplo, consegue receber os dados do Clock somente através dos pinos 2 e 3, o Duemilanova, em todos os pinos, exceto o 13. Esses pinos são conhecidos como IRQ (Interrupt Request).

Veja Tabela abaixo:

ArduinoPinos IRQ – Interrupção
Uno, Nano, Mini e outras placas baseada no 3282, 3
Mega, Mega2560, MegaADK2, 3, 18, 19, 20, 21
Micro, Leonardo e outras placas baseada no 32u40, 1, 2, 3, 7
Zerotodos os pinos digitais, exceto 4
MKR1000 Rev.10, 1, 4, 5, 6, 7, 8, 9, A1, A2
Duemilanovetodos os pinos digitais, exceto 13
101todos os pinos digitais

Fonte: https://www.Arduino.cc/en/Reference/AttachInterrupt


Veja os caracteres que nós mapeamos para uso do teclado ABNT2.

Arduino Serial

IDE Arduino com os caracteres mapeados

Posição das teclas mapeadas no array da library:

teclado_para_array


Programando a IDE do Arduino:

Uma vez que o Arduino esteja conectado ao teclado, é necessário instalar o programa de comunicação:
A biblioteca precisa já estar instalada na pasta equivalente (antes de abrir a IDE).

No exemplo que fizemos, ocorrerá o seguinte:

Pressionando a tecla ‘A’ o LED irá acender conforme abaixo:

‘a’ – LED irá piscar, permanecendo aceso por 1 segundo.
‘A’ [Shift + a] – LED irá piscar por 10 vezes antes se de apagar
‘á’ [Alt Gr + a] – LED irá fazer um FADE até 255 (pino PWM) e depois se apagará.


Este é um bom exemplo do uso dessa biblioteca, onde uma única tecla se transforma em uma combinação com 3 funções.


Esquema de ligação do LED no Arduino:

 

conexao_arduino_teclado

 

Não deixe de compartilhar conosco o seu projeto!

Previous Post Next Post

Você também pode gostar / You Might Also Like

5 Comments

  • Reply gladson barroso 1 de jan de 2017 at 12:00

    como faço para usar as teclas F1 F2 e etc ?

    • Reply Edson Sobreira 3 de jan de 2017 at 08:32

      As teclas F1, F2, etc… são identificadas como PS2_F1, PS2_F2, etc…
      Exemplo:

      } else if (c == ‘PS2_F1’) {// LED irá piscar 10 vezes – LED will blink 10 times
      Serial.write(c);
      for (int l=1; l< =10; l=l+1) { digitalWrite(led, HIGH); delay(100); digitalWrite(led, LOW); delay(100); }

      Na library disponível para download também está disponível essa informação.

      Se inscreva em nosso site para receber novidades

  • Reply gladson barroso 3 de jan de 2017 at 17:27

    obrigado!!

  • Reply Helder Ferreira 24 de nov de 2017 at 06:36

    Este programa apaga a informação? eu experimentei um parecido num arduino uno e o clicava em apagar no (backspace) e aperecia (DEL) em vez de apagar.

    • Reply Edson Sidnei Sobreira 24 de nov de 2017 at 08:48

      Olá!
      A qual informação você se refere?
      A ideia desta biblioteca é transformar um teclado em múltiplos botões para serem utilizados em um projeto com Arduino.

    Leave a Reply

    Show Buttons
    Siga-nos no Facebook
    Siga-nos no Twitter
    Siga-nos no Google Plus
    Siga-nos no Pintrest
    Siga-nos no Youtube
    Siga-nos no Scratch
    Hide Buttons
    CLOSE
    CLOSE
    Top