在Arduino论坛看到了参考文献1介绍的内容之后,就特别想动手试一下,于是在淘宝上买了PS2模块,实物图如下:
该模块有四个引脚,意义分别如下:
+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函数打印空字符。
测试的实物连接图如下:

由于使用的示例代码进行测试,代码和测试结果就不在这里显示了。只要引脚连接正确,应该就可以正常运行示例代码,唯一需要注意的就是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

Arduino通过PS2模块使用PS2键盘相关推荐

  1. 使用Arduino和GSM模块进行呼叫和消息

    原文:https://circuitdigest.com/microcontroller-projects/call-and-message-using-arduino-sim900-gsm 使用Ar ...

  2. 使用arduino D1 wifi模块(WeMos D1)连接阿里云物联网平台并成功实现APP点亮板载LED(四)---阿里云物联网平台使用基础

    前面几个文章一直在分析arduino d1 wifi模块如何安装开发板库,如何编程,如何调用wifi操作库,如何运行第一个网络扫描程序. 现在突然跳转到介绍阿里云,为什么呢? 原因很简单,就是物联网设 ...

  3. 快速上手Arduino -- 打印超声波模块测距信息到OLED屏幕上

    文章目录 快速上手Arduino -- 打印超声波模块测距信息到OLED屏幕上 实现效果: 模块说明: 引脚接线方法: 程序源码 附录 快速上手Arduino – 打印超声波模块测距信息到OLED屏幕 ...

  4. Arduino使用RFID模块来储存卡信息实现智能门锁(MF RC522)

    使用RFID模块实现门禁的功能 Arduino的RFID模块的使用(MF RC522) 文章目录 使用RFID模块实现门禁的功能 Arduino的RFID模块的使用(MF RC522) 前言 一.RF ...

  5. Arduino Mega/Uno制作宏定义键盘(不需刷firmware!!)

    本人机械专业大一编程小白一枚,接触编程不到半年.近期开始自学Arduino.这应该是本人第一篇博客,有错误之处敬请斧正! - 心路&思路 家住武汉,这个年嘛,大家应该都懂,被迫宅化.年前从网上 ...

  6. Arduino人体红外模块控制

    Arduino人体红外模块控制 示例代码 /** Arduino UNO R3(或Arduino Nano)连接红外人体感应模块检测是否有人*/int irSensorPin = 3;//Arduin ...

  7. 使用arduino D1 wifi模块(WeMos D1)连接阿里云物联网平台并成功实现APP点亮板载LED(九)---制作APP

    前几篇文章讲解了如何在阿里云控制台上给设备登记"身份证",如何用MQTT.fx客户端模拟一个设备连接阿里云物联网平台,分析了arduino编程环境如何配置依赖库,在arduino ...

  8. 用keyboard模块模拟记录键盘操作

    用keyboard模块模拟记录键盘操作 介绍的是keyboard这个模块 该模块的特征: 所有键盘事件上的全局hook (无论焦点如何都捕获键). 监听并发送键盘事件 纯Python,不需要编译c模块 ...

  9. arduino和NB-IOT模块M5310-A使用教程,app实时控制

    arduino和NB-IOT模块M5310-A使用教程,app实时控制 第一 .先上效果图 第二.原理讲解 第三.下载程序到arduino 第四 app inventor 开发 第五.小程序开发 第一 ...

最新文章

  1. 小程序web开发框架-weweb介绍
  2. 比特币现金驱动的社交媒体平台备忘录继续蓬勃发展
  3. 算法提高 身份证排序
  4. linux+平均磁盘请求数量_SUSE LINUX下磁盘IO性能监测分析
  5. 利用Word将连着一起的字符按照自己指定的”字符串或者字换行“自动换行。
  6. SAP WebService基础知识
  7. 10种CSS3实现的Loading效果
  8. java web hello world(一)
  9. 用html实现网页版的拼图游戏,jQuery实现网页拼图游戏
  10. Android深度探索(卷1)HAL与驱动开发第六章总结
  11. leetcode90. 子集 II
  12. 针对Parse error: syntax error, unexpected T_PUBLIC in D:报错提醒
  13. Apache工具包方法——Hex.encodeHexString(byte[] data)源码浅析
  14. html中使用什么标签做的导航栏_自媒体人如何自己建立一个手机网站,超简单,任何人都能做...
  15. mac文件丢失,苹果电脑有没有好用的恢复软件?
  16. 蓝桥杯 ALGO-79 算法训练 删除数组零元素
  17. 禁止双击、拖动listctrl列头
  18. c语言经典程序技能高考,计算机类技能高考介绍
  19. 使用老毛子在腾讯云DNSpod上实现DDNS
  20. 秦岭三面佛已经拆除,觉得惋惜

热门文章

  1. 用鼠标按下事件和鼠标松开事件实现长按事件
  2. C语言 计算圆台的相关元素
  3. C++新特性篇 - Lambada表达式
  4. 高等教育学心理学:技能的形成
  5. [转摘]太极拳精义述真
  6. 【3D目标检测】点云数据转为鸟瞰图
  7. 手机初级软件测试认证,[IT认证]手机软件测试规范含具体用例.doc
  8. 记一段 Kotlin 处理 HashMap 数据结构的代码
  9. kotlin中的Map集合类
  10. 支持多种格式的播放器js代码