Arduino通过PS2模块使用PS2键盘
2017-11-12 20:02
573 查看
在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
该模块有四个引脚,意义分别如下: +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鼠标
- 【arduino】通过Esp8266-01模块实现的WiFi通信(3)使用TCP协议进行局域网通信(client篇)
- 通过 Browserify 在浏览器中使用 NodeJS 模块
- python 使用sqlalchemy,mysqldb模块通过ssh隧道连接mysql
- python使用paramiko模块通过ssh2协议对交换机进行配置
- python 使用mysqldb模块通过ssh隧道连接mysql
- linux通过GRUP引导多操作系统时USB键盘不可使用,导致无数选择其他系统
- Arduino使用TM1637四位数码管显示模块
- 在mysql中建立表格,表名称和列的定义都使用键盘输入,用户数据也要通过键盘输入。
- arduino巡线模块使用
- 【arduino】通过Esp8266-01模块实现的WiFi通信(1)简介和搭建编程环境
- arduino mega2560与HC-06蓝牙模块使用
- [Arduino]HC-06蓝牙模块使用小结
- 【arduino】通过Esp8266-01模块实现的WiFi通信(4)关于透传
- python使用smtplib模块通过gmail实现邮件发送的方法
- android系统PS2全键盘驱动(上)-使用linux的标准接口实现
- python 使用mysqldb模块通过SSHTunnelForwarder隧道连接mysql
- 内核子系统或设备驱动可以直接编译到内核,也可以编译成模块,如果编译到内核,可以使用前一节介绍的方法通过内核启动参数来向它们传递参数,如果编译成模块,则可以通过命令行在插入模块时传递参数,或者在运行时,
- logging模块的使用--通过网络收发日志
- Arduino使用手指测心跳模块