该项目涉及一个智能手机应用程序,该应用程序使用蓝牙向连接到HC-05蓝牙模块的Arduino Uno发送操纵杆的x和y轴数据,滚动状态,左右单击状态。这些数据在接收到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