Мікроконтролер – підключаємо PS

Доступною мовою нотатки за IT технологіями

Мікроконтролер – підключаємо PS/2 клавіатуру

Згодом виникає питання, яквводити дані в мікроконтролер ? Класичне рішення, яке приходить більшість нам —використовувати кнопки … протруїти на платідоріжки таконтактні майданчики длякнопок, далі їхприпаяти, вирішити яквідслідковувати натискання кнопки - попереривання або черезопитування стану кнопок по циклу. Якщо кнопокбагато, вонизайматимуть значну кількістьpin-ов мікроконтролера. Шлях тернистий.

Я пропоную використовувати, що у нас під рукою - простуPS/2 комп'ютерну клавіатуру. Із плюсів:

  • річне дорога;
  • продається вбудь-якому комп'ютерному магазині
  • нам доступно101 клавіша
  • займе клавіатура всього2-pin мікроконтролера для синхросигналу та даних.

Як мікроконтролер я використовуватимуATmega328P абоArduino UNO.

Трохи теорії

Якщо ви розкриєте обплетення кабелю для клавіатури, то ви виявите4-е дроти :

  • провідхарчування (5 В)
  • провідземлі
  • провідсинхросигналу (CLK)
  • провідданих (DATA )

Кожнаклавіша на клавіатурі маєсвій8-бітовий код, званийскан-кодом і записується в шістнадцятковому вигляді (HEX), дивись нижче.

мікроконтролер

Коли ви натискаєте наклавішу,SLK передаютьсяпрямокутні імпульси а поDATA11-бітний код:

підключаємо

Біти даних зчитуються комп'ютером під час переходуCLK звисокого рівня нанизький.

Перший біт завжди дорівнює0 - цестартовий біт, далі йде8-ем бітскан-кода, після чогобіт контролю парності і в кінцістоповий біт, який завжди дорівнює1.

Як підключити PS/2 клавіатуру до мікроконтролера?

Насправді портPS/2 комп'ютерної клавіатури церізновид роз'єму Mini-DIN, її6-і піновийваріант. У клавіатурі встановленоmin-din 6 pin штекер (тато), ми всі його бачили на кінці кабелю клавіатури.

Arduino

Гніздоmin-din 6 pin (мама) знаходиться на материнській платі, для підключення до мікроконтролера нам доведеться його випоювати зі старої клавіатури, що не зручно.

Я раджу придбати нормальне гніздоmin-din 6 pin для кабелю, наприклад наebay.ru він стоїть

1$. Виглядає він так:

мікроконтролер

(ліворуч у зібраному вигляді, праворуч у розібраному)

Як приклад я підключатимуклавіатуру доArduino UNO (контролерATmega328P ), від нас потрібно підключити проводки по наступній розпинці.

Arduino

Допомога паяльника не знадобиться, дроти обтискаються пасатижами в металеві затискачі, в результаті у мене вийшов наступний перехідник.

Arduino

У вашому випадку кінці проводків ви можетеприпаяти до платимікроконтролера, я використовуватимуpin-иArduino UNO.

  • GND підключаємо доGND Arduino UNO
  • Vcc підключимо до5V Arduino UNO
  • DATA підключимо2-pin Arduino UNO
  • CLK підключимо до3-pin Arduino UNO

мікроконтролер

Далі залишиться лишепідключити клавіатуру до гнізда.

Вихідний кодпрошивки

В інтернеті для роботи зPS/2 клавіатурою більше половини випадків використовують бібліотекуps2keyboard, де через цикл перевіряють стан «змінної — буфера» обміну з клавіатурою. Я не прихильник перевіряти щось через цикл, прошивка буде зайнята лише роботою з клавіатурою. А якщо нам потрібно робити розрахунки чи працювати з якимось повільним обладнанням? Тут щось страждатиме або наші розрахунки або швидкість реакції на клавіатуру.

Я пропоную використати переривання…

PIN контролера приймаючийCLK (синхроімпульси) від клавіатури потрібноналаштувати як зовнішнє переривання при переході звисокого стану в низький і в обробнику зчитувати біт даних зDATA . Алгоритм обробника переривання повиненпобитнонакопичувати ь посиланийскан-код з клавіатури.

Код для Arduino, підключаємоDATA до2-го піну,CLK підключимо до3-го піну.