Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

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

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

Перевод: Максим Кузьмин (Cubewriter)
Перевел 2686 статей для сайта.

Контакты:

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


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

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

Код

  1. /*  Отображение символов, введенных на клавиатуре
  2.   Библиотеке PS2Keyboard теперь нужно, чтобы в begin() были указаны
  3.   оба контакта – и для тактового сигнала, и для передачи данных.
  4.  
  5.   keyboard.begin(data_pin, irq_pin);
  6.  
  7.   Контакты, которые можно использовать для тактового сигнала:
  8.      Arduino Uno:  2, 3
  9.      Arduino Due:  все контакты, кроме 13 (к нему подключен светодиод)
  10.      Arduino Mega: 2, 3, 18, 19, 20, 21
  11.      Teensy 2.0:   все контакты, кроме 13 (к нему подключен светодиод)
  12.      Teensy 2.0:   5, 6, 7, 8
  13.      Teensy 1.0:   0, 1, 2, 3, 4, 6, 7, 16
  14.      Teensy++ 2.0: 0, 1, 2, 3, 18, 19, 36, 37
  15.      Teensy++ 1.0: 0, 1, 2, 3, 18, 19, 36, 37
  16.      Sanguino:     2, 10, 11
  17.  
  18.   Более подробно о библиотеке PS2Keyboard читайте на arduino.cc
  19.   http://www.arduino.cc/playground/Main/PS2Keyboard
  20.   или на сайте автора библиотеки
  21.   http://www.pjrc.com/teensy/td_libs_PS2Keyboard.html
  22.  
  23.   Как и сама библиотека, этот скетч публикуется под лицензией LGPL.
  24.  
  25.   Модифицирован cuninganreset@gmail.com 22 марта 2010 года,
  26.   еще раз модифицирован Полом Стоффрегеном (Paul Stoffregen;
  27.   paul@pjrc.com) в июне 2010 года.
  28. */
  29.    
  30.   // подключаем библиотеку PS2Keyboard:
  31. #include <PS2Keyboard.h>
  32.  
  33.   // задаем контакты для тактового сигнала и передачи данных:
  34. const int DataPin = 8;
  35. const int IRQpin =  5;
  36.  
  37.   // создаем экземпляр класса PS2Keyboard:
  38. PS2Keyboard keyboard;
  39.  
  40.   // делаем задержку в 1000 миллисекунд, инициируем библиотеку,
  41.   // и запускаем последовательную коммуникацию на скорости 9600:
  42. void setup() {
  43.   delay(1000);
  44.   keyboard.begin(DataPin, IRQpin);
  45.   Serial.begin(9600);
  46.   Serial.println("Keyboard Test:");  //  "Тест клавиатуры"
  47. }
  48.  
  49. void loop() {
  50.    // проверяем, была ли нажата какая-нибудь клавиша:
  51. if (keyboard.available()) {
  52.    
  53.     // считываем следующее нажатие на клавишу:
  54.     char c = keyboard.read();
  55.    
  56.     // проверяем, нажимал ли пользователь на специальные клавиши,
  57.     // и если нажимал, сообщаем об этом через монитор порта:
  58.     if (c == PS2_ENTER) {
  59.       Serial.println();
  60.     } else if (c == PS2_TAB) {
  61.       Serial.print("[Tab]");
  62.     } else if (c == PS2_ESC) {
  63.       Serial.print("[ESC]");
  64.     } else if (c == PS2_PAGEDOWN) {
  65.       Serial.print("[PgDn]");
  66.     } else if (c == PS2_PAGEUP) {
  67.       Serial.print("[PgUp]");
  68.     } else if (c == PS2_LEFTARROW) {
  69.       Serial.print("[Left]");
  70.     } else if (c == PS2_RIGHTARROW) {
  71.       Serial.print("[Right]");
  72.     } else if (c == PS2_UPARROW) {
  73.       Serial.print("[Up]");
  74.     } else if (c == PS2_DOWNARROW) {
  75.       Serial.print("[Down]");
  76.     } else if (c == PS2_DELETE) {
  77.       Serial.print("[Del]");
  78.     } else {
  79.      
  80.       // если не нажимал, просто выводим на монитор порта
  81.       // обычные символы, введенные пользователем:
  82.       Serial.print(c);
  83.     }
  84.   }
  85. }

См.также

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

  1. github.com - Simple_Test.pde