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

Arduino摇杆控制鼠标:精准光标导航

元器件与材料

元器件数量
Arduino UNO1
双轴摇杆模块1

所需软件与在线服务

项目简介

作为鼠标或触控板的替代方案,本项目利用摇杆实现鼠标光标的精准控制。摇杆可在X、Y两个轴向移动光标,并通过内置按键实现点击功能。

工作原理

摇杆本质上包含两个分别沿X、Y轴排列的电位器。Arduino读取模拟值,范围为0-1023。当摇杆处于中位时,读数约为512(0-1023中间值)。

Arduino摇杆控制鼠标:精准光标导航

Arduino程序将摇杆偏离中心的位置映射为-灵敏度到+灵敏度的范围(默认灵敏度为10)。极限位置对应输出10或-10。X、Y轴数值之间用冒号“:”分隔,例如:5:-3。摇杆按键状态(SW)以1/0形式跟在X、Y值后通过串口发送。

Arduino摇杆控制鼠标:精准光标导航

电脑端需使用Python的mouse库(原使用pyautogui,后更新为mouse)接收串口数据并控制鼠标。

Python编程环境搭建

  1. 安装Python 3(从官网下载)
  2. 复制Python安装路径
  3. 打开命令提示符,依次执行:
    cd <你的Python安装路径>
    py -m pip install --upgrade pip
    py -m pip install mouse
    py -m pip install pyserial
    

mouse库用于模拟鼠标操作,pyserial用于串口通信。

Python程序逻辑

最终运行步骤

  1. 将Arduino代码上传至UNO,按原理图接线摇杆
  2. 确认Python库已安装,复制Python代码到记事本,修改正确的COM端口(从设备管理器查看),保存为.py文件
  3. 用IDLE打开该文件并运行(F5)
  4. 若报错,重启IDLE检查COM端口设置
  5. 运行成功后移动摇杆即可控制光标,按下摇杆实现点击

源代码

Arduino代码

//////////////////////////////////
// 摇杆控制鼠标
// by Shubham Santosh
/////////////////////////////////

void setup() {
  Serial.begin(9600);
  pinMode(9, INPUT);       // SW引脚
  digitalWrite(9, HIGH);   // 上拉
}

int prev_state = 0;        // 按键前一状态

void loop() {
  int z = 0, xpos = 0, ypos = 0;
  int x = analogRead(A0);
  int y = analogRead(A1);
  int sensitivity = 10;    // 可调整灵敏度

  // X轴映射
  if (x >= 550) xpos = map(x, 550, 1023, 0, sensitivity);      // 向上
  if (x <= 450) xpos = map(x, 450, 0, 0, -sensitivity);        // 向下

  // Y轴映射
  if (y >= 550) ypos = map(y, 550, 1023, 0, sensitivity);      // 向右
  if (y <= 450) ypos = map(y, 450, 0, 0, -sensitivity);        // 向左

  // 按键检测(上升沿触发)
  int curr_state = digitalRead(9);
  if (curr_state == 1 && prev_state == 0) z = 1;
  else z = 0;

  // 仅当有移动或点击时发送
  if (xpos != 0 || ypos != 0 || z == 1) {
    Serial.print(xpos);
    Serial.print(":");
    Serial.print(ypos);
    Serial.print(":");
    Serial.println(z);
  }

  prev_state = curr_state;
  delay(10);
}

Python代码

# 摇杆控制鼠标
# By Shubham Santosh
# 最后更新 2020/12/11

import mouse, sys
import time
import serial

mouse.FAILSAFE = False
ArduinoSerial = serial.Serial('com3', 9600)  # 修改为实际COM口
time.sleep(1)  # 等待串口稳定

while True:
    data = str(ArduinoSerial.readline().decode('ascii'))
    (x, y, z) = data.split(":")      # 解析X, Y, 按键
    (X, Y) = mouse.get_position()    # 当前光标位置
    (x, y) = (int(x), int(y))        # 转整数
    mouse.move(X + x, Y - y)         # 移动光标(Y轴取反)
    if '1' in z:                     # 检测按键
        mouse.click(button="left")   # 左键点击

原理图

Arduino摇杆控制鼠标:精准光标导航

制造工艺

  1. 计算机鼠标的进化史:设计、制造与未来趋势
  2. 温控风扇DIY:媒体柜散热的继电器驱动方案
  3. 树莓派控制水培养殖系统:构建指南与代码
  4. 树莓派 + PIR 传感器 + MQTT 打造 AWS IoT 运动触发按钮
  5. 蓝牙控制树莓派机器人:语音反馈功能构建指南
  6. 用 Python 构建 Wi-Fi 控制的树莓派机器人:分步指南
  7. Alexa 控制 ARDrone 2.0 演示:树莓派 + Hologram Nova 语音激活无人机
  8. 废旧遥控车改装:Arduino + USB Host Shield 实现 Xbox 手柄无线控制
  9. Arduino + 模拟摇杆互动游戏:五向 LED 反馈
  10. Arduino Mega 驱动 Wii Nunchuk 控制 6 自由度机械臂
  11. Arduino Nano 语音控制机器人:蓝牙 + 手机 APP 实现
  12. FeNi42 合金:精密封接用低热膨胀镍铁合金