USB键盘模拟实验

使用Arduino Leonardo棒子的USB控制器模拟USB键盘,通过编程实现键盘的左右箭头按键功能,以此控制‘是男人就下一百层’的游戏。实验中包含了代码编写,主要涉及Keyboard库的使用,通过检测按键状态模拟键盘输入。
摘要由CSDN通过智能技术生成

USB键盘模拟实验

实验现象

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

理论学习

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

原理图

在这里插入图片描述

代码编写

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

#include<Keyboard.h>
#define KEY1 2          //向左按键
#define KEY2 3          //向右按键
int Flag_up = 1;
void setup()
{
  pinMode(KEY1, INPUT_PULLUP);
  pinMode(KEY2, INPUT_PULLUP);
  Keyboard.begin();
}
void loop()
{
  if ( ScanKey(1) == 1)         //向左按键按下
  {
    Keyboard.press(KEY_LEFT_ARROW); //向电脑发送向左按键按下的指令
    delay(50);
    Keyboard.releaseAll();      //向电脑发送按键释放的指令
  }
  else if (ScanKey(1) == 2) //向右按键按下
  {
    Keyboard.press(KEY_RIGHT_ARROW);    //向电脑发送向右按键按下的指令
    delay(50);
    Keyboard.releaseAll();      //向电脑发送按键释放的指令
  }
}
unsigned char ScanKey(int mode)     //按键扫描程序,返回键值
{
  if (mode)             //mode = 1时候,该代码支持长按。mode = 0时候,不支持长按
  {
    Flag_up = 1;
  }
  if (Flag_up  && (digitalRead(KEY1) == LOW || digitalRead(KEY2) == LOW) ) //当Flag_up = 1并且按键按下时
  {
    Flag_up = 0;                    //清空Flag_up
    delay(10);                      //延时去抖动
    if (digitalRead(KEY1) == LOW)           //按键按下
    {
      return 1;                     //返回键值1
    }
    if (digitalRead(KEY2) == LOW)           //按键按下
    {
      return 2;                     //返回键值1
    }
  }
  if (digitalRead(KEY1) == HIGH && digitalRead(KEY2) == HIGH)       //按键松开时候
  {
    Flag_up = 1;                            //置位Flag_up
  }
  return 0;                             //返回键值0
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_45671732

你们鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值