亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

操纵杆控制鼠标

组件和用品

Arduino UNO
× 1
双轴操纵杆
× 1

应用和在线服务

Arduino IDE
IDLE(Python GUI)

关于这个项目

作为使用鼠标或触控板跟踪计算机光标的替代方法,我在操纵杆的帮助下制作了相同的应用程序。摇杆可以在任意方向(x轴和Y轴)移动光标,也可以通过内置的摇杆开关实现点击功能。

基础-

操纵杆简单地由 2 个在 x 和 y 方向对齐的电位器组成。 arduino从摇杆读取0到1023范围内的模拟值。因此,当摇杆处于默认(中心)位置时,模拟值也接近500(0到1023之间)。

arduino 草图被编程为当操纵杆远离中心时,然后根据位置打印从 - 敏感度到 + 敏感度值(默认值设置为 10)范围内的值。所以,当操纵杆移动到一个极端位置时,arduino 打印值 10,如果操纵杆移动到另一个极端位置,则打印 -10。

要打印 x 和 y 方向的单独值,我们将在 x 和 y 方向值之间使用“:”。示例:

操纵杆按钮(SW)的状态在 x 和 y 值之后打印在串行监视器上(1/0)。

为了让笔记本电脑/电脑识别这些值,我们需要 python 的 pyautogui 模块。

Python编程

(2020 年 11 月 12 日编辑 - 将库从“pyautogui”更改为“鼠标”)

用户必须在他们的笔记本电脑/计算机上安装 python 3。可以从这里下载。

安装完成后,复制python文件所在路径。

以下步骤将在命令提示符下执行。打开命令提示符并输入以下内容-

1. cd <粘贴python文件的路径>

2. py -m pip install --upgrade pip

3. py -m pip install mouse

4. py -m pip install pyserial

鼠标 模块用于执行鼠标操作和pyserial 模块用于从 arduino 发送/接收数据。我已经安装了必要的模块,所以我得到了这个

使python程序读取Arduino打印的数据并识别xy 方向值以及开关(SW)的状态。

从鼠标函数mouse.get_position()获取光标的当前坐标 它以像素的形式提供光标的 X 和 Y 坐标。

当摇杆移动时,arduino 提供的模拟值与当前光标位置相加,使光标向所需方向移动。

要在给定方向移动光标,函数 mouse.move(X+x,Y+y) 满足这个目的。

其中 X 和 Y 是当前光标的位置,x 和 y 是 arduino 提供的增量/减量位置。

示例:mouse.moveTo(100,150) 将光标移动到 x 轴 100 像素和 y 轴 150 像素。

根据软件状态进行点击操作,mouse.click(button="left") 使用。

最终执行

将 arduino 草图(如下所示)上传到您的 arduino UNO 并将操纵杆连接到示意图中给出的 arduino 引脚。

确保您的计算机/笔记本电脑上安装了鼠标和 pyserial 后,执行以下步骤。

1.将python草图复制到记事本文件中。指定 arduino 的正确 COM 端口。从设备管理器中,您可以获取 arduino 板所连接的 COM 端口。更改后将文件另存为“.py”。

2.打开python的IDLE(python GUI)并从中打开记事本文件。

3. 运行模块。

然后您将被引导回图 4 中的屏幕

如果您发现任何错误,请重新启动 IDLE 并检查您是否提到了正确的 arduino COM 端口。

如果没有错误,则移动操纵杆,您将看到光标的移动。

代码

  • Arduino 代码
  • Python 代码
Arduino 代码Arduino
//////////////////////////////// 操纵杆控制鼠标////// 舒巴姆·桑托什/ /////////////////////////////////void setup() { Serial.begin(9600); pinMode(9,输入); // SW pin digitalWrite(9,HIGH);}int prev_state=0; // switchvoid loop() 的前一个状态 { int z=0,xpos=0,ypos=0; int x=analogRead(A0); int y=analogRead(A1);整数灵敏度=10; // 您可以根据自己的舒适度调整灵敏度 if(x>=550) // 向上移动时 xpos=map(x,550,1023,0,sensitive); if(x<=450) // 当向下移动时 xpos=map(x,450,0,0,-sensitive); if(y>=550) // 当向右移动时 ypos=map(y,550,1023,0,sensitive); if(y<=450) // 当向左移动时 ypos=map(y,450,0,0,-sensitive); int curr_state=digitalRead(9); if(curr_state==1 &&prev_state==0) // 当按下 SW 时 z=1;否则 z=0; if(xpos!=0 or ypos!=0 or z==1) // 仅在操纵杆移动时打印 { Serial.print(xpos); // 打印数据并以“:”分隔 Serial.print(":"); Serial.print(ypos); Serial.print(":"); Serial.println(z); } prev_state=curr_state;延迟(10); // 正常操作}
Python 代码Python
# Joystick 控制的鼠标# By Shubham Santosh# lastedited 12/11/2020import mouse, sysimport time import serialmouse.FAILSAFE=FalseArduinoSerial=serial.Serial('com3',9600) #指定正确的COM端口time.sleep(1 ) #delay of 1 secondwhile 1:data=str(ArduinoSerial.readline().decode('ascii')) #读取数据 (x,y,z)=data.split(":") # 赋值给 x, y and z (X,Y)=mouse.get_position() #读取光标当前位置(x,y)=(int(x),int(y)) #转换为int mouse.move(X+x,Yy) ) #move cursor to 期望位置 if '1' in z:# read the Status of SW mouse.click(button="left") # clicks left button 

示意图


制造工艺

  1. 电脑鼠标
  2. 温控风扇
  3. Raspberry Pi 控制的鱼菜共生
  4. 运动控制的 AWS IoT 按钮
  5. 通过蓝牙控制的树莓派机器人
  6. 使用 Raspberry Pi 的 Wifi 控制机器人
  7. MajorTom:Alexa 语音控制的 ARDrone 2.0
  8. 操纵杆控制的遥控车
  9. 摇杆游戏
  10. Nunchuk 控制机械臂(使用 Arduino)
  11. 语音控制机器人
  12. 合金 42 可控膨胀合金