Subscribe to Arduino Academy and start learning today for FREE!

Arduino Keyboard Shield – Part 2

Continuing from Arduino Keyboard Shield – Part 1, we now have keyboard input from a PS/2 keyboard displaying in the serial monitor. The next step will be building the Smart Shield, which contains a ATMEL 328P running the following code, and the keyboard interface, and sends the received data to the main Arduino.

You will need to download the library and run the included example “Simple_Test”. We changed the Interrupt and Data numbers in the example to 3 & 4 respectively.

/*  PS2Keyboard library example

PS2Keyboard now requries both pins specified for begin()

Become the Maker you were born to be. Try Arduino Academy for FREE!

keyboard.begin(data_pin, irq_pin);

Valid irq pins:
Arduino:      2, 3
Arduino Mega: 2, 3, 18, 19, 20, 21
Teensy 1.0:   0, 1, 2, 3, 4, 6, 7, 16
Teensy 2.0:   5, 6, 7, 8
Teensy++ 1.0: 0, 1, 2, 3, 18, 19, 36, 37
Teensy++ 2.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 June 2010*/

#include “PS2Keyboard.h”

const int DataPin = 4;
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);
}
}
}

Become the Maker you were born to be. Try Arduino Academy for FREE!

 

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments

Archives

0
Would love your thoughts, please comment.x
()
x