PS2 键盘座测试-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5309|回复: 9

PS2 键盘座测试

[复制链接]
发表于 2017-2-5 14:22 | 显示全部楼层 |阅读模式
之前我使用 PS2 键盘鼠标都是直接剪开线的,这样看起来很不专业,前一段购物正好看到有PS2座就顺手买了一个(2元)。

image001.png

                              
有了它,键盘可以直接插在上面和 Arduino连接。
image002.jpg

对应的库可以在这里【参考1】下载到。
特别注意: Uno 要使用 2 3 Pin,定义如下
#include"PS2Keyboard.h"
const intDataPin = 2;
const int IRQpin=  3;
就是说 Data接2, CLK接3 (这个和终端请求有关系,不可以随便更换),测代码:

[mw_shl_code=applescript,true]/*  PS2Keyboard library example

  PS2Keyboard now requries both pins specified for begin()

  keyboard.begin(data_pin, irq_pin);

  Valid irq pins:
     Arduino:      2, 3
     Arduino Mega: 2, 3, 18, 19, 20, 21
     Teensy 1.0:   0, 1, 2, 3, 4, 6, 7, 16
     Teensy 2.0:   5, 6, 7, 8
     Teensy++ 1.0: 0, 1, 2, 3, 18, 19, 36, 37
     Teensy++ 2.0: 0, 1, 2, 3, 18, 19, 36, 37
     Sanguino:     2, 10, 11

  for more information you can read the original wiki in arduino.cc
  at http://www.arduino.cc/playground/Main/PS2Keyboard
  or http://www.pjrc.com/teensy/td_libs_PS2Keyboard.html

  Like the Original library and example this is under LGPL license.

  Modified by Cuninganreset@gmail.com on 2010-03-22
  Modified by Paul Stoffregen <paul@pjrc.com> June 2010
*/
  
#include "PS2Keyboard.h"

const int DataPin = 2;
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);
    }
  }
}[/mw_shl_code]
运行结果
image003.png
参考:
PS2Keyboard_2.3-Ctrl-Ente.zip (11.55 KB, 下载次数: 18)

发表于 2017-2-5 15:43 | 显示全部楼层
厉害厉害                     
发表于 2017-2-6 10:04 | 显示全部楼层
666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
发表于 2017-2-6 12:42 | 显示全部楼层
厉害 666666
发表于 2017-2-28 22:56 | 显示全部楼层
你好,我也在淘宝上买了个ps2的键盘座,用PS2Keyboard库自带的例子测了一下
好像是键盘座CLK引脚必须要接数字引脚2或者3,键盘座dat引脚接其它的数字引脚都可以
 楼主| 发表于 2017-3-1 08:32 | 显示全部楼层
仮面龙骑 发表于 2017-2-28 22:56
你好,我也在淘宝上买了个ps2的键盘座,用PS2Keyboard库自带的例子测了一下
好像是键盘座CLK引脚必须要接数 ...

嗯 是的,有这个要求
发表于 2017-3-1 21:41 | 显示全部楼层
Zoologist 发表于 2017-3-1 08:32
嗯 是的,有这个要求

我还有个疑问,键盘插到电脑上之后,按了大写键或者小键盘的NumLock键后,键盘灯会亮,但是我在
PS2Keyboard库提供的函数中没有看到能够设置键盘灯的函数,是不是这个库还不完整啊?
 楼主| 发表于 2017-3-1 22:18 | 显示全部楼层
仮面龙骑 发表于 2017-3-1 21:41
我还有个疑问,键盘插到电脑上之后,按了大写键或者小键盘的NumLock键后,键盘灯会亮,但是我在
PS2Keyb ...

有可能的,你可以搜搜看一下。

系统中的做法是如果发现有 numlock按下会发出广播的

usb就是这样的,我想 ps2应该也一样
发表于 2017-3-1 22:57 | 显示全部楼层
http://codeandlife.com/2013/07/15/arduino-ps2-keyboard-tester/
在这里找到个例子,是向键盘发送命令的,里面也有示例代码
 楼主| 发表于 2017-3-2 08:06 | 显示全部楼层
仮面龙骑 发表于 2017-3-1 22:57
http://codeandlife.com/2013/07/15/arduino-ps2-keyboard-tester/
在这里找到个例子,是向键盘发送命令的 ...

嗯嗯 看到了  不错~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 06:30 , Processed in 0.106325 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表