USB键盘模拟实验

「爱情、让人受尽委屈。」 2022-11-21 09:42 223阅读 0赞

USB键盘模拟实验

实验现象

模拟键盘上的和←和→按键,控制“是男人就下一百层”的游戏

理论学习

利用Leonardo棒子的USB控制器,模仿一个USB键盘

原理图

在这里插入图片描述

代码编写

在arduino中管理库中下载Keyboard库,并用#include包含Keyboard.h头文件

  1. #include<Keyboard.h>
  2. #define KEY1 2 //向左按键
  3. #define KEY2 3 //向右按键
  4. int Flag_up = 1;
  5. void setup()
  6. {
  7. pinMode(KEY1, INPUT_PULLUP);
  8. pinMode(KEY2, INPUT_PULLUP);
  9. Keyboard.begin();
  10. }
  11. void loop()
  12. {
  13. if ( ScanKey(1) == 1) //向左按键按下
  14. {
  15. Keyboard.press(KEY_LEFT_ARROW); //向电脑发送向左按键按下的指令
  16. delay(50);
  17. Keyboard.releaseAll(); //向电脑发送按键释放的指令
  18. }
  19. else if (ScanKey(1) == 2) //向右按键按下
  20. {
  21. Keyboard.press(KEY_RIGHT_ARROW); //向电脑发送向右按键按下的指令
  22. delay(50);
  23. Keyboard.releaseAll(); //向电脑发送按键释放的指令
  24. }
  25. }
  26. unsigned char ScanKey(int mode) //按键扫描程序,返回键值
  27. {
  28. if (mode) //mode = 1时候,该代码支持长按。mode = 0时候,不支持长按
  29. {
  30. Flag_up = 1;
  31. }
  32. if (Flag_up && (digitalRead(KEY1) == LOW || digitalRead(KEY2) == LOW) ) //当Flag_up = 1并且按键按下时
  33. {
  34. Flag_up = 0; //清空Flag_up
  35. delay(10); //延时去抖动
  36. if (digitalRead(KEY1) == LOW) //按键按下
  37. {
  38. return 1; //返回键值1
  39. }
  40. if (digitalRead(KEY2) == LOW) //按键按下
  41. {
  42. return 2; //返回键值1
  43. }
  44. }
  45. if (digitalRead(KEY1) == HIGH && digitalRead(KEY2) == HIGH) //按键松开时候
  46. {
  47. Flag_up = 1; //置位Flag_up
  48. }
  49. return 0; //返回键值0
  50. }

发表评论

表情:
评论列表 (有 0 条评论,223人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Win7系统不识别usb键盘

    Win7系统不识别usb键盘 打开win7设备管理器,找到usb键盘并直接打开,发现如下usb键盘中的驱动中是有带感叹号的。 第1步:在桌面找到计算机图标,并在此图标上右键选