Arduino:Примеры/PS2Keyboard Simple Test

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Отображение символов, введенных на клавиатуре[1]

Этот пример показывает, как при помощи библиотеки PS2Keyboard показывать символы, введенные на клавиатуре. Он считывает нажатия на клавиши, а затем отображает символы, привязанные к этим клавишам, в мониторе порта IDE Arduino. Поддерживаются как обычные, так и некоторые специальные символы, включая  ↵ Enter ,  Tab ⇆ ,  Delete и т.д.

Код

/*  Отображение символов, введенных на клавиатуре
  Библиотеке PS2Keyboard теперь нужно, чтобы в begin() были указаны 
  оба контакта – и для тактового сигнала, и для передачи данных.

  keyboard.begin(data_pin, irq_pin);
  
  Контакты, которые можно использовать для тактового сигнала:
     Arduino Uno:  2, 3
     Arduino Due:  все контакты, кроме 13 (к нему подключен светодиод)
     Arduino Mega: 2, 3, 18, 19, 20, 21
     Teensy 2.0:   все контакты, кроме 13 (к нему подключен светодиод)
     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
  
  Более подробно о библиотеке PS2Keyboard читайте на arduino.cc
  http://www.arduino.cc/playground/Main/PS2Keyboard
  или на сайте автора библиотеки
  http://www.pjrc.com/teensy/td_libs_PS2Keyboard.html
  
  Как и сама библиотека, этот скетч публикуется под лицензией LGPL.
  
  Модифицирован cuninganreset@gmail.com 22 марта 2010 года,
  еще раз модифицирован Полом Стоффрегеном (Paul Stoffregen; 
  paul@pjrc.com) в июне 2010 года.
*/
   
  // подключаем библиотеку PS2Keyboard:
#include <PS2Keyboard.h>

  // задаем контакты для тактового сигнала и передачи данных:
const int DataPin = 8;
const int IRQpin =  5;

  // создаем экземпляр класса PS2Keyboard:
PS2Keyboard keyboard;

  // делаем задержку в 1000 миллисекунд, инициируем библиотеку,
  // и запускаем последовательную коммуникацию на скорости 9600:
void setup() {
  delay(1000);
  keyboard.begin(DataPin, IRQpin);
  Serial.begin(9600);
  Serial.println("Keyboard Test:");  //  "Тест клавиатуры"
}

void loop() {
   // проверяем, была ли нажата какая-нибудь клавиша:
if (keyboard.available()) {
    
    // считываем следующее нажатие на клавишу:
    char c = keyboard.read();
    
    // проверяем, нажимал ли пользователь на специальные клавиши,
    // и если нажимал, сообщаем об этом через монитор порта:
    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 {
      
      // если не нажимал, просто выводим на монитор порта 
      // обычные символы, введенные пользователем:
      Serial.print(c);
    }
  }
}

См.также

Внешние ссылки