Egérkiváltó joystick

Itt nézheted meg hogyan és mit kell elektromosan összeszerelni:

A mechanikát 3D nyomtatással lehet teljesen egyedire méretre szabni. Nyomógombokat tetszés szerint lehet betenni ahova szükség van rá, gyenge kézhez igazítva.

A videón látható alkatrészek árai, lehetséges olcsó beszerzési forrása:
https://www.banggood.com/Leonardo-R3-ATmega32U4-Development-Board-With-USB-Cable-p-906441.html?rmmds=search&cur_warehouse=CN

https://www.banggood.com/PS2-Game-Joystick-Push-Button-Switch-Sensor-Module-p-76465.html?rmmds=search

Szoftver:
https://github.com/MHeironimus/ArduinoJoystickLibrary

https://learn.sparkfun.com/tutorials/pro-micro–fio-v3-hookup-guide/all#example-2-hid-mouse-and-keyboard

Egyszerű tervezőprogram 3D nyomtatáshoz, kellő türelemmel:

https://www.youtube.com/watch?v=AQioYbvgWvo

Gyári eszköz ami hasonlót tud, de nem egyéni igények alapján készült:
https://www.aaksni.hu/rock-joystick-t135282

joystick
joystick

A hagyományos egér kiváltására alkalmas joystick a nehezített kézhasználat, a kézmozgás súlyos érintettsége esetén is jól használható. Azok az elektromos kerekesszéket használó személyek, akik kerekesszéküket joystick segítségével irányítják, érdemes megpróbálni, hogy a számítógépet is tudják-e ezzel a hasonló felépítésű eszközzel irányítani.

Bemásolt kód:

/* HID Joystick Mouse Example
by: Jim Lindblom
date: 1/12/2012
license: MIT License – Feel free to use this code for any purpose.
No restrictions. Just keep this license if you go on to use this
code in your future endeavors! Reuse and share.

This is very simplistic code that allows you to turn the
SparkFun Thumb Joystick (http://www.sparkfun.com/products/9032)
into an HID Mouse. The select button on the joystick is set up
as the mouse left click.
*/
#include <Mouse.h>
int horzPin = A0; // Analog output of horizontal joystick pin
int vertPin = A1; // Analog output of vertical joystick pin
int selPin = 9; // select button pin of joystick

int vertZero, horzZero; // Stores the initial value of each axis, usually around 512
int vertValue, horzValue; // Stores current analog output of each axis
const int sensitivity = 200; // Higher sensitivity value = slower mouse, should be <= about 500
int mouseClickFlag = 0;

//int invertMouse = 1; //Invert joystick based on orientation
int invertMouse = -1; //Noninverted joystick based on orientation

void setup()
{
pinMode(horzPin, INPUT); // Set both analog pins as inputs
pinMode(vertPin, INPUT);
pinMode(selPin, INPUT); // set button select pin as input
digitalWrite(selPin, HIGH); // Pull button select pin high
delay(1000); // short delay to let outputs settle
vertZero = analogRead(vertPin); // get the initial values
horzZero = analogRead(horzPin); // Joystick should be in neutral position when reading these

Mouse.begin(); //Init mouse emulation
}

void loop()
{
vertValue = analogRead(vertPin) – vertZero; // read vertical offset
horzValue = analogRead(horzPin) – horzZero; // read horizontal offset

if (vertValue != 0)
Mouse.move(0, (invertMouse * (vertValue / sensitivity)), 0); // move mouse on y axis
if (horzValue != 0)
Mouse.move((invertMouse * (horzValue / sensitivity)), 0, 0); // move mouse on x axis

if ((digitalRead(selPin) == 0) && (!mouseClickFlag)) // if the joystick button is pressed
{
mouseClickFlag = 1;
Mouse.press(MOUSE_LEFT); // click the left button down
}
else if ((digitalRead(selPin)) && (mouseClickFlag)) // if the joystick button is not pressed
{
mouseClickFlag = 0;
Mouse.release(MOUSE_LEFT); // release the left button
}
}