查看: 6032|回复: 2
打印 上一主题 下一主题

[经验] 在 Arduino 上使用 PS/2 键盘进行输入

[复制链接]
  • TA的每日心情

    2018-11-20 13:41
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    跳转到指定楼层
    楼主
    发表于 2019-2-14 17:08:47 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
    分享到:


    大家好,这是一个有趣的制作,可以让你的 Arduino 拥有 106 个输入按键,是不是难以置信?下面给大家介绍如何在 Arduino 上使用 PS/2 键盘。

    你需要以下材料:
    • Arduino (UNO)
    • PS/2 键盘
    • PS/2 键盘接口







    根据图上的引脚把 PS/2 接口与 Arduino 连接起来,对应关系如下表。

    5V :- Arduino 5V out
    Ground :- Arduino GND
    Clock :- Arduino Pin 3
    Data :- Arduino Pin 8

    下面开始编写代码。首先需要借助一个类库,下载地址:

    PS2Keyboard.zip (10.22 KB, 下载次数: 5)

    然后编写 Arduino 的代码如下:
    1. #include < PS2Keyboard.h>

    2. const int DataPin = 8;
    3. const int IRQpin =  3;

    4. PS2Keyboard keyboard;

    5. void setup() {
    6.   delay(1000);
    7.   keyboard.begin(DataPin, IRQpin);
    8.   Serial.begin(9600);
    9.   Serial.println("Keyboard Test:");
    10. }

    11. void loop() {
    12.   if (keyboard.available()) {
    13.      
    14.     // read the next key
    15.     char c = keyboard.read();
    16.      
    17.     // check for some of the special keys
    18.     if (c == PS2_ENTER) {
    19.       Serial.println();
    20.     } else if (c == PS2_TAB) {
    21.       Serial.print("[Tab]");
    22.     } else if (c == PS2_ESC) {
    23.       Serial.print("[ESC]");
    24.     } else if (c == PS2_PAGEDOWN) {
    25.       Serial.print("[PgDn]");
    26.     } else if (c == PS2_PAGEUP) {
    27.       Serial.print("[PgUp]");
    28.     } else if (c == PS2_LEFTARROW) {
    29.       Serial.print("[Left]");
    30.     } else if (c == PS2_RIGHTARROW) {
    31.       Serial.print("[Right]");
    32.     } else if (c == PS2_UPARROW) {
    33.       Serial.print("[Up]");
    34.     } else if (c == PS2_DOWNARROW) {
    35.       Serial.print("[Down]");
    36.     } else if (c == PS2_DELETE) {
    37.       Serial.print("[Del]");
    38.     } else {
    39.       
    40.       // otherwise, just print all normal characters
    41.       Serial.print(c);
    42.     }
    43.   }
    44. }
    复制代码
    上传代码之后运行,在键盘上输入的内容就会显示在调试窗口哦~

    转载自趣无尽



    回复

    举报

  • TA的每日心情
    难过
    2021-2-27 22:16
  • 签到天数: 1568 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    沙发
    发表于 2019-4-3 10:24:19 | 只看该作者
    学习一下
    回复 支持 反对

    举报

  • TA的每日心情
    奋斗
    2020-6-24 21:05
  • 签到天数: 157 天

    连续签到: 1 天

    [LV.7]常住居民III

    板凳
    发表于 2019-5-20 19:44:59 | 只看该作者
    谢谢你的分享!!
    回复 支持 反对

    举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 1/5 下一条

    有奖活动|英飞凌智能座舱直播活动
    3月12日,英飞凌将携手大联大品佳集团,从行业痛点出发,结合最新技术发展,深入解析智能座舱的技术革新与未来趋势,现场还会有嘉宾为您提供一对一答疑服务。无论您是科技爱好者、工程师,还是投资者与行业分析师,这场直播都将为您揭开智能座舱的核心技术密码!

    查看 »



    手机版|小黑屋|与非网

    GMT+8, 2025-4-29 17:26 , Processed in 0.133489 second(s), 22 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.5

    Copyright © 2001-2024, Tencent Cloud.