Arduino通过PS2模块使用PS2键盘

在Arduino论坛看到了参考文献1介绍的内容之后,就特别想动手试一下,于是在淘宝上买了PS2模块,实物图如下:
Arduino通过PS2模块使用PS2键盘 - gc_2299 - gc_2299的博客
该模块有四个引脚,意义分别如下:
+5V:接电源正极;
GND:接电源负极;
DAT:数据引脚,可以与任意的Arduino数字引脚相连;
CLK:时钟引脚,需要与Arduino中支持中断的引脚相连,在UNO上是数字引脚2和3.
1、从键盘接收命令
键盘数据的原理可以看参考文献2,那篇文章讲解的比较详细。我在进行测试的时候,使用的库是从下面的网址中找到的:
https://www.pjrc.com/teensy/td_libs_PS2Keyboard.html
该库中附带了两个示例代码,Simple_Test和International,这两个示例中International仅仅是将读取的键盘字符原封不动的打印到串口,而Simple_Test则解析了一些特殊符号,例如如果读取的键盘符号是回车符,则调用串口类的println函数打印空字符。
测试的实物连接图如下:
Arduino通过PS2模块使用PS2键盘 - gc_2299 - gc_2299的博客
  由于使用的示例代码进行测试,代码和测试结果就不在这里显示了。只要引脚连接正确,应该就可以正常运行示例代码,唯一需要注意的就是CLK引脚要连接支持中断的引脚,否则就无法读取键盘发送过来的数据。

2、向键盘发送命令
第一节给出的ps2键盘库文件可以读取大部分的键盘信息,但是它只能从键盘读取信息,无法向键盘发送信息。比如如果想控制键盘上的大写灯、小键盘灯的开、关,第一节的库就无法做到。为此,在网上又找了另外一个高级的ps2keyboard库,网址如下:
https://github.com/techpaul/PS2KeyAdvanced
使用该库,当按下键盘上的大写灯、小键盘灯时,该库在解析键盘信息的同时,将键盘灯设置为正确的状态。该库带有三个示例,感兴趣的朋友可以自行看示例代码。我进行测试的时候使用的是advcodetest这个示例,测试时既可以获取到按键信息,同时可以看到键盘灯的状态发生变化,这里就不贴代码了,如果对与键盘的交互原理感兴趣,可以看看参考文献3和4。
使用高级键盘库的注意事项与第一节类似,CLK引脚要连接支持中断的引脚。

参考文献
[1]http://www.arduino.cn/forum.php?mod=viewthread&tid=42139&highlight=ps2
[2]http://www.freebuf.com/sectool/59045.html
[3]http://codeandlife.com/2013/07/15/arduino-ps2-keyboard-tester/
[4]http://www.computer-engineering.org/ps2protocol/
[5]https://github.com/techpaul/PS2KeyAdvanced

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值