查看: 127|回复: 1

[应用教程] 在 Arduino 上使用 PS/2 键盘进行输入

[复制链接]
d76ed81c6c1315585bf2d78e6304dd1b_20190120192853155.jpg
大家好,这是一个有趣的制作,可以让你的 Arduino 拥有 106 个输入按键,是不是难以置信?下面给大家介绍如何在 Arduino 上使用 PS/2 键盘。
你需要以下材料:
Arduino (UNO)
PS/2 键盘
PS/2 键盘接口
49dfd1357550fbe70445791621fcdee7_20190120192853135.jpg
2562d3daa0879ae0a04b0f66aa9cf073_20190120192853706.jpg
a5cffb6837d48bfc3fa6e149409e92d8_20190120192853898.jpg
根据图上的引脚把 PS/2 接口与 Arduino 连接起来,对应关系如下表。
5V :- Arduino 5V out
Ground :- Arduino GND
Clock :- Arduino Pin 3
Data :- Arduino Pin 8
下面开始编写代码。首先需要借助一个类库,下载地址:
http://www.pjrc.com/teensy/arduino_libraries/PS2Keyboard.zip
然后编写 Arduino 的代码如下:
[AppleScript] 纯文本查看 复制代码
#include < PS2Keyboard.h>[/size][/backcolor]
 
const int DataPin = 8;
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);
    }
  }
}
上传代码之后运行,在键盘上输入的内容就会显示在调试窗口哦~

gada888  版主

发表于 6 天前

支持
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
wifi气象站

硬件清单

btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2019 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail