0

该项目涉及一个智能手机应用程序,该应用程序使用蓝牙将操纵杆的 x 轴和 y 轴数据、滚动状态、左右单击状态发送到连接到 HC-05 蓝牙模块的 Arduino Uno。这些数据在接收到 Arduino 时被操纵以更改当前光标的位置以获得新位置。然后将生成的数据以及滚动和按钮状态打印为 Python 草图可以读取的输出。Python 草图用于使用鼠标模块执行鼠标操作,我通过移动应用程序控制鼠标。

错误:-当我运行 python 和 Arduino 脚本时没有错误,它运行良好,但是当我使用移动应用程序并将应用程序与 Arduino 连接时,它会连接但它不工作(光标不移动)检查下面的链接

应用程序链接:- https://drive.google.com/drive/folders/1xJYx8pkkLD5OFUnATf7K_ENvClIXVAxw

这是我正在尝试执行 https://create.arduino.cc/projecthub/shubhamsantosh99/smartphone-controlled-mouse-728d91 基本上,我按照上面链接中的所有步骤操作,但我无法从移动应用程序中移动光标

这是Arduino代码:-

    int datareceived[5] {0,0,0,0};          // To store byte from phone
    int in_byte = 0;
    int array_index = 0;
    void setup() {
    Serial.begin (9600); // starts the serial monitor
    }
     int height=0,width=0;
     int lcount=0,rcount=0;
    void loop() {
      int clicks=0;
      int sensitivity=20;       // you can adjust the sensitivity
      int xpos=0,ypos=0;
    if (Serial.available() > 0) {  //recieve byte from phone
      in_byte= Serial.read(); //store in byte into a variable
      if (in_byte == (255)) { // if the variable is 0 stet the array inxed to 0.
        array_index = 0;
      }
      datareceived[array_index] = in_byte;  //store number into array
      array_index = array_index +1;
      
    if(datareceived[1]>=110)
    xpos=map(datareceived[1],110,172,0,sensitivity);       // When moved right
    if(datareceived[1]<=70)
    xpos=map(datareceived[1],60,1,0,-sensitivity);        // When moved left
    if(datareceived[2]>=110)
    ypos=map(datareceived[2],110,255,0,sensitivity);     // When moved down
    if(datareceived[2]<=60)
    ypos=map(datareceived[2],70,1,0,-sensitivity);       // When moved up
    
    
    if(datareceived[3]==1)      // TO recognise a single button press
    {
      lcount+=1;
      if(lcount>3)
      {
        clicks=1;
        lcount=0;
      }
    }
    else if(datareceived[3]==2)
    {
      rcount+=1;
      if(rcount>3)
      {
        clicks=2;
        rcount=0;
      }
    }
    else 
    clicks=datareceived[3];       // to recognise the scroll
    
    
    if(xpos!=0 or ypos!=0 or clicks!=0)       // when either of the joystick is moved or the button is pressed
    {
    height=height+ypos;
    width=width+xpos;
    if(height>=799)
    height=799;
    if(height<=0)
    height=0;
    if(width>=1279)
    width=1279;
    if(width<=0)
    width=0;
    Serial.print(width);
    Serial.print(":");
    Serial.print(height);
    Serial.print(":");
    Serial.println(clicks);
    clicks=0;
    }
    }
    }

这是python代码:-

    import mouse, sys
    import time 
    import serial
    
    mouse.FAILSAFE=False
    ArduinoSerial=serial.Serial('com3',9600)  #Specify the correct COM port
    time.sleep(1)                             #delay of 1 second
    
    while 1:
       data=str(ArduinoSerial.readline().decode('ascii'))
       (x,y,z)=data.split(":")  # read the x and y axis data
       (x,y)=(int(x),int(y))   # convert to int
       mouse.move(x,y)         # move the cursor to desired coordinates
       if '1' in z:                       
          mouse.click(button="left")     #clicks mouse button
       elif '2' in z:
          mouse.click(button="right")
       elif '3' in z:
          mouse.wheel(delta=-1)       # Scroll down
       elif '4' in z:
          mouse.wheel(delta=1)       # Scroll up
4

0 回答 0