Virtual mouse experiment

Virtual mouse experiment

Experimental phenomena

The button simulates the mouse to move to the left, move to the right, click the left button and other operations

Schematic diagram

Insert picture description here

Code writing

#include<Mouse.h>
#define KEY1 2  //左移
#define KEY2 3  //右移
#define KEY3 4  //左键
int Flag_up = 1;

void setup()
{
    
    
  pinMode(KEY1, INPUT_PULLUP);
  pinMode(KEY2, INPUT_PULLUP);
  pinMode(KEY3, INPUT_PULLUP);
  Mouse.begin();
}

void loop()
{
    
    
  if ( ScanKey(1) == 1)     //左移
  {
    
    
    Mouse.move(-40, 0);     //左移40
  }
  else if (ScanKey(1) == 2) //右移
  {
    
    
    Mouse.move(40, 0);
  }
  else if (ScanKey(1) == 3) //左键按下
  {
    
    
    Mouse.click(MOUSE_LEFT);
  }
}

unsigned char ScanKey(int mode)     //按键扫描程序,返回键值
{
    
    
  if (mode)             //mode = 1时候,该代码支持长按。mode = 0时候,不支持长按
  {
    
    
    Flag_up = 1;
  }

  if (Flag_up  && (digitalRead(KEY1) == LOW || digitalRead(KEY2) == LOW || digitalRead(KEY3) == LOW) )      //当Flag_up = 1并且按键按下时
  {
    
    
    Flag_up = 0;            //清空Flag_up
    delay(30);              //延时去抖动
    if (digitalRead(KEY1) == LOW)   //按键按下
    {
    
    
      return 1;             //返回键值1
    }
    if (digitalRead(KEY2) == LOW)   //按键按下
    {
    
    
      return 2;             //返回键值2
    }
    if (digitalRead(KEY3) == LOW)   //按键按下
    {
    
    
      return 3;             //返回键值3
    }
  }
  if (digitalRead(KEY1) == HIGH && digitalRead(KEY2) == HIGH && digitalRead(KEY3) == HIGH)  //按键松开时候
  {
    
    
    Flag_up = 1;            //置位Flag_up
  }
  return 0;             //返回键值0
}

Guess you like

Origin blog.csdn.net/qq_45671732/article/details/109447013