Подключение клавиатуры

Проекты и идеи
Подключение клавиатуры

К Arduino легко можно подключить клавиатуру. И не самодельную, сделанную в виде матрицы кнопок, а полноценную, от ПК.
Для этого необходимо сделать следующее:
1) Рассмотреть разъемы;
2) Сделать переходник или шлейф;
3) Разобраться с библиотекой для работы с клавиатурой;

Схема подключения клавиатуры выглядит следующим образом:



Разъем АТ:


Разъем PS/2:


Расположение контактов на разъеме кабеля клавиатуры:

Сигнал AT PS/2

KB Clock 1 5

KB — Data 2 1

KB — Reset 3 — GND 4 3

+ 5V 5 4

«Железная» часть у нас готова. Ттеперь нужно научить МК понимать сигналы клавиатуры для этого подключаем библиотеку клавиатуры:

#include //Библиотека клавиатуры
#define KBD_CLK_PIN 3 //указываем порты подключения клавиатуры.
#define KBD_DATA_PIN 4//
PS2Keyboard keyboard; // включения использования функций клавиатуры

void setup() {
keyboard.begin(KBD_DATA_PIN); // указываем библиотеке какие порты используем для подключения клавиатуры.
Serial.begin(9600); //включения уарта
delay(1000); // ждем 1 секунду
}


Теперь непосредственно тестовая программа:
#include //Библиотека клавиатуры
#define KBD_CLK_PIN 3 // указываем порты подключения клавиатуры.
#define KBD_DATA_PIN 4// указываем порты подключения клавиатуры.
PS2Keyboard keyboard; // включения использования функций клавиатуры
void setup() {
keyboard.begin(KBD_DATA_PIN); // указываем библиотеке какие порты используем для подключения клавиатуры.
Serial.begin(9600); //включения уарта
delay(1000); // ждем 1 секунду
}
#define is_printable© (!(c&0x80)) // не выводим стоповые биты на терминал
void loop() { //главный цикл
if(keyboard.available()) {
byte extra = keyboard.read_extra();//
чтение данных клавиатуры.
byte c = keyboard.read(); //
boolean ctrl = extra & 1; // проверка наличие нажатого <ctrl> занимающего нулевой бит
boolean alt = extra & 2; // проверка наличие нажатого <alt> занимающего первый бит
if (ctrl) Serial.print('^'); // выводим символ
if (alt) Serial.print('_');// выводим символ // проверка нажатых специализированных клавиш и вывод соответствующих сообшений на терминал
if (c==PS2_KC_UP) Serial.print("up\n");
else if (c==PS2_KC_DOWN) Serial.print("down\n");
else if (c==PS2_KC_BKSP) Serial.print("backspace\n");
else if (c==PS2_KC_ESC) { Serial.print("escape and reset\n"); keyboard.reset(); }
else if ( is_printable© ) Serial.print©; // вывод непосредственой буквы или цифры
}
}
technik 29.05.2010 в 23.41 (обновлен 29.05.2010 в 23.47) комментарии 0 0

комментарии(0)

Комментировать

Для добавления комментария авторизируйтесь.
Последние комментарии:
© 2010 pobot.ru