Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Управление мышью компьютера с помощью джойстика на Arduino: точная навигация курсора

Компоненты и материалы

Arduino UNO 1 шт.
Двухосевой джойстик 1 шт.

Программное обеспечение и онлайн-сервисы

Описание проекта

В качестве альтернативы обычной мыши или тачпаду предлагается управление курсором с помощью аналогового джойстика. Джойстик позволяет перемещать курсор по осям X и Y, а встроенная кнопка выполняет функцию левого клика.

Принцип работы

Джойстик содержит два потенциометра для осей X и Y. Arduino считывает аналоговые значения (0–1023). В центральном положении значения близки к 512. Скетч преобразует отклонения в диапазон от -sensitivity до +sensitivity (по умолчанию 10). Данные передаются по последовательному порту в формате X:Y:SW, где SW — состояние кнопки (1/0).

Управление мышью компьютера с помощью джойстика на Arduino: точная навигация курсора
Подключение джойстика к Arduino
Управление мышью компьютера с помощью джойстика на Arduino: точная навигация курсора
Пример данных в мониторе порта

Программирование на Python

(Обновлено 11.12.2020: заменена библиотека pyautogui на mouse)

  1. Установите Python 3 с официального сайта.
  2. Скопируйте путь к папке с Python.
  3. В командной строке выполните:
    cd <путь_к_python>
    py -m pip install --upgrade pip
    py -m pip install mouse
    py -m pip install pyserial

Скрипт Python считывает данные из последовательного порта, разбирает значения X, Y и SW. Текущие координаты курсора получаются через mouse.get_position(). Новые координаты вычисляются как X + x, Y - y (ось Y инвертирована). Функция mouse.move() перемещает курсор. При нажатии кнопки джойстика (SW=1) выполняется mouse.click(button="left").

Запуск

  1. Загрузите скетч в Arduino UNO, подключите джойстик по схеме.
  2. Создайте файл mouse_control.py, вставьте Python-код, укажите правильный COM-порт (проверьте в Диспетчере устройств).
  3. Откройте файл в IDLE (Python GUI) и запустите модуль (F5).
  4. При ошибках перезапустите IDLE и проверьте COM-порт.
  5. Двигайте джойстик — курсор будет следовать за ним.

Код

Arduino (C++)

//////////////////////////////////
// Joystick controlled mouse
// by Shubham Santosh
/////////////////////////////////
void setup() {
  Serial.begin(9600);
  pinMode(9, INPUT); // SW pin
  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;
  if (x >= 550) xpos = map(x, 550, 1023, 0, sensitivity);
  if (x <= 450) xpos = map(x, 450, 0, 0, -sensitivity);
  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

# Joystick controlled mouse
# By Shubham Santosh
# last edited 12/11/2020
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 = mouse.get_position()
    x, y = int(x), int(y)
    mouse.move(X + x, Y - y)
    if '1' in z:
        mouse.click(button="left")

Схемы подключения

Управление мышью компьютера с помощью джойстика на Arduino: точная навигация курсора

Производственный процесс

  1. Эволюция компьютерной мыши: дизайн, производство и будущие тренды
  2. Температурно-управляемый вентилятор: DIY релейная система охлаждения мебели для медиа
  3. Raspberry Pi управляемая аквапоника: гайд по сборке и код
  4. Создание кнопки AWS IoT с управлением движением на Raspberry Pi, PIR-датчике и MQTT
  5. Создание Bluetooth-робота на Raspberry Pi с аудио-обратной связью
  6. Построение Wi-Fi-управляемого робота на Raspberry Pi с Python — пошаговое руководство
  7. Alexa-управляемый ARDrone 2.0: Голосовой дрон с Raspberry Pi и Hologram Nova
  8. Превращаем старую радиоуправляемую машину в джойстик-контролируемый болид на Arduino
  9. Интерактивная игра с джойстиком и LED-обратной связью на Arduino
  10. Сплав FeNi42: низкое тепловое расширение для прецизионных стекловых и керамических герметиков