Conectar um teclado USB ao Arduino usando a Biblioteca PS2Keyboard (http://www.pjrc.com/teensy/td_libs_PS2Keyboard.html)

 

  

Video Youtube: https://www.youtube.com/watch?v=xOinlGYvylU

 

Ligar o D- ao pino 2 do Arduino (DataPin)

Ligar o D+ ao pino 3 do Arduino (IRQPin)

 

Download Biblioteca: http://www.pjrc.com/teensy/td_libs_PS2Keyboard.html

Codigo de teste abaixo:


/* PS2Keyboard library example

PS2Keyboard now requries both pins specified for begin()

keyboard.begin(data_pin, irq_pin);

Valid irq pins:
Arduino Uno: 2, 3
Arduino Due: All pins, except 13 (LED)
Arduino Mega: 2, 3, 18, 19, 20, 21
Teensy 2.0: All pins, except 13 (LED)
Teensy 2.0: 5, 6, 7, 8
Teensy 1.0: 0, 1, 2, 3, 4, 6, 7, 16
Teensy++ 2.0: 0, 1, 2, 3, 18, 19, 36, 37
Teensy++ 1.0: 0, 1, 2, 3, 18, 19, 36, 37
Sanguino: 2, 10, 11

for more information you can read the original wiki in arduino.cc
at http://www.arduino.cc/playground/Main/PS2Keyboard
or http://www.pjrc.com/teensy/td_libs_PS2Keyboard.html

Like the Original library and example this is under LGPL license.

Modified by Cuninganreset@gmail.com on 2010-03-22
Modified by Paul Stoffregen <paul@pjrc.com> June 2010
*/

#include span style="color: #cc6600;">PS2Keyboard.h>

const int DataPin = 2;
const int IRQpin = 3;

PS2Keyboard keyboard;

void setup() {
  delay(1000);
  keyboard.begin(DataPin, IRQpin);
  Serial.begin(9600);
  Serial.println("Keyboard Test:");
}

void loop() {
  if (keyboard.available()) {

// read the next key
    char c = keyboard.read();

// check for some of the special keys
    if (c == PS2_ENTER) {
      Serial.println();
    }
    else if (c == PS2_TAB) {
      Serial.print("[Tab]");
    }
    else if (c == PS2_ESC) {
      Serial.print("[ESC]");
    }
    else if (c == PS2_PAGEDOWN) {
      Serial.print("[PgDn]");
    }
    else if (c == PS2_PAGEUP) {
      Serial.print("[PgUp]");
    }
    else if (c == PS2_LEFTARROW) {
      Serial.print("[Left]");
    }
    else if (c == PS2_RIGHTARROW) {
      Serial.print("[Right]");
    }
    else if (c == PS2_UPARROW) {
      Serial.print("[Up]");
    }
    else if (c == PS2_DOWNARROW) {
      Serial.print("[Down]");
    }
    else if (c == PS2_DELETE) {
      Serial.print("[Del]");
    }
    else {

// otherwise, just print all normal characters
      Serial.print(c);
    }
  }
}

Exibições: 16129

Responder esta

Respostas a este tópico

Ótimo tuto... Amigo, gostaria de saber se existe a possibilidade de usar o mouse. 

vlew!

Nunca imaginei que um teclado USB poderia aceitar isso. Ja que são coisas bem diferentes a nível de hardware(meio físico da comunicação) e software. Vivendo e aprendendo.

Muito legal ! Gostei. 

Será que funciona bem?

Legal, estou tentando colocar meu uno r3 para entrar em dfu mode e gravar um bootloader especial , ele não ele em bootloader, vc já te este problema ?

pode me ajudar, estou fazendo igual, mas com um mini teclado usb completo, mas não esta funcionando, no pc ele demora um pouco para conectar por causa do drive, será que pode ser isso?

Pessoal, 

Existe como alterar estes pinos de D0 e D1 ? Digo isto pq utilizo leitores de RFID nesta pinagem e os mesmos entram em conflito... 

Tentei de tudo, inclusive algumas matérias citam a possibilidade de incluir D0=5 e D1=7, mas não funciona. 

Alguém tem uma luz? 

abraços. 

Oi AB, bom dia.

Não entendi sua dúvida.

Os pinos D0 e D1, são os pinos da serial (comunicação) do arduino.

Se usa-los para outra função, deve desligar o que estiver neles na hora de carregar o code no arduino.

No mega tem mais seriais do que o no UNO.

Você pode usar também a biblioteca softserial para usar outros pinos do UNO como serial.

Rui

Rui,

Na verdade eu queria usar o teclado USB igual ao keypad, ou seja, em outros pinos que não o 3,2 . No mega ja utilizo todas as portas disponíveis. O que também não consigo utilizar, mesmo que eu queira anular um rx/tx que já utilizo, a biblioteca, que configura estes rfid, bloqueia o teclado. 

Antonio os dois pinos do Arduino usados para acessar o teclado através da USB são :

const int DataPin = 2;  // pino D2 
const int IRQpin = 3;   // pino D3 

O D3 esta sendo usado na comunicação através da interrupção no Arduino. 

No Arduino Uno ou similar, somente os pinos D2 e D3 podem ser usados para interrupção.

Já nos outros tipos de Arduinos, existem mais opções :

https://www.arduino.cc/en/Reference/AttachInterrupt

http://playground.arduino.cc/Code/Interrupts

JG, 

Na verdade eu queria usar o teclado USB igual ao keypad, ou seja, em outros pinos que não o 3,2 . No mega ja utilizo todas as portas disponíveis. O que também não consigo utilizar, mesmo que eu queira anular um rx/tx que já utilizo, a biblioteca, que configura estes rfid, bloqueia o teclado. 

Boa tarde :)

Gostei muito dessa postagem, mas gostaria de saber se tem como fazer um pouco diferente. 

Conectar um USB ao arduino. Na verdade queria mesmo usar o próprio usb do arduino, criar uma interface serial e enviar e receber Strings via USB, tem como?

Boa noite

Quem será o Host USB ? 

O Arduino Uno não pode ser Host USB. Somente o Arduino DUE tem esse recurso.

https://www.arduino.cc/en/Main/arduinoBoardDue

Ou então poderá usar um Host Shield com o Arduino Uno.

https://www.arduino.cc/en/Main/ArduinoUSBHostShield

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço