Mouse controlado por joystick
Componentes e suprimentos
![]() |
| × | 1 | |||
| × | 1 |
Aplicativos e serviços online
![]() |
| |||
|
Sobre este projeto
Como alternativa para rastrear o cursor do computador usando um mouse ou trackpad, fiz esse mesmo aplicativo com a ajuda de um joystick. O joystick pode mover o cursor em qualquer direção (eixos xe Y) e também executa a função de clique com o botão do joystick integrado.
Básico-
Um joystick consiste simplesmente em 2 potenciômetros alinhados nas direções xey. O arduino lê valores analógicos do joystick na faixa de 0 a 1023. Assim, quando o joystick está em sua posição padrão (centro), o valor analógico também fica próximo a 500 (entre 0 e 1023).

O esboço do Arduino é programado de forma que, quando o joystick é movido para longe do centro, imprima valores na faixa de -sensibilidade a + valor de sensibilidade (valor padrão definido é 10) dependendo da posição. Portanto, quando o joystick é movido em uma posição extrema, o arduino imprime o valor 10 e se o joystick é movido em outra posição extrema, -10 é impresso.
Para imprimir valores separados para as direções xey, usaremos ":" entre os valores das direções xey. Exemplo:

O status do botão do joystick (SW) é impresso (1/0) no monitor serial após os valores xey.
Para que o laptop / computador reconheça os valores, precisaremos do módulo pyautogui do python.
Programação Python
(editado em 11/12/2020 - mudou a biblioteca de 'pyautogui' para 'mouse')
O usuário deve ter o python 3 instalado em seu laptop / computador. Ele pode ser baixado aqui.
Após a instalação, copie o caminho do local do arquivo python.

As etapas a seguir devem ser executadas no prompt de comando. Abra o prompt de comando e digite o seguinte-
1.
cd
2.
py –m pip install –- atualizar pip
3.
py –m pip install mouse
4.
py -m pip install pyserial
O mouse módulo é usado para realizar ações do mouse e pyserial módulo é usado para enviar / receber dados do arduino. Eu já tinha instalado os módulos necessários, então peguei este

O programa python é feito para ler os dados impressos pelo Arduino e reconhecer o x e y valores de direção, bem como o status do switch (SW).
As coordenadas atuais do cursor são obtidas a partir da função do mouse
mouse.get_position ()
que fornece as coordenadas X e Y do cursor na forma de pixels. Quando o joystick é movido, os valores analógicos fornecidos pelo arduino são adicionados com a posição atual do cursor para mover o cursor na direção desejada.
Para mover o cursor na direção dada, a função
mouse.move (X + x, Y + y)
satisfaz esse propósito. onde X e Y são a posição atual do cursor e x e y são as posições de incremento / decremento fornecidas pelo arduino.
exemplo:
mouse.moveTo (100,150)
move o cursor para 100 pixels no eixo xe 150 pixels no eixo y. Para executar a operação de clique com base no status do SW,
mouse.click (button ="left")
é usado.
Execução Final
Carregue o esboço do arduino (fornecido abaixo) para o seu arduino UNO e conecte o joystick aos pinos do arduino conforme mostrado no esquema.
Depois de verificar se o mouse e o pyserial estão instalados em seu computador / laptop, execute as seguintes etapas.
1. Copie o esboço do python em um arquivo do bloco de notas. Especifique a porta COM correta do arduino. No gerenciador de dispositivos, você pode obter a porta COM à qual a placa arduino está conectada. Salve o arquivo como ".py" após fazer as alterações.


2. Abra o IDLE do python (GUI do python) e abra o arquivo do bloco de notas a partir dele.


3. execute o módulo.

Você será direcionado de volta para a tela da Fig 4
Caso veja algum erro, reinicie o IDLE e verifique se mencionou a porta COM correta do arduino.
Se não houver erros, mova o joystick e você verá o movimento do cursor.
Código
- Código Arduino
- Código Python
Código Arduino Arduino
//////////////////////////////////// Mouse controlado por joystick ////// por Shubham Santosh / //////////////////////////////////////// void setup () {Serial.begin (9600); pinMode (9, INPUT); // SW pin digitalWrite (9, HIGH);} int prev_state =0; // estado anterior do loop switchvoid () {int z =0, xpos =0, ypos =0; int x =analogRead (A0); int y =analogRead (A1); sensibilidade interna =10; // você pode ajustar a sensibilidade com base no seu conforto if (x> =550) // quando movido para cima xpos =map (x, 550,1023,0, sensibilidade); if (x <=450) // quando movido para baixo xpos =map (x, 450,0,0, -sensibilidade); if (y> =550) // quando movido para a direita ypos =map (y, 550,1023,0, sensibilidade); if (y <=450) // quando movido para a esquerda ypos =map (y, 450,0,0, -sensibilidade); int curr_state =digitalRead (9); if (curr_state ==1 &&prev_state ==0) // quando SW é pressionado z =1; senão z =0; if (xpos! =0 ou ypos! =0 ou z ==1) // imprime somente quando o joystick é movido {Serial.print (xpos); // imprime os dados separando por ":" Serial.print (":"); Serial.print (ypos); Serial.print (":"); Serial.println (z); } prev_state =curr_state; atraso (10); // para operação normal}
Código Python Python
# Mouse controlado por joystick # Por Shubham Santosh # última edição 12/11/2020import mouse, sysimport time import serialmouse.FAILSAFE =FalseArduinoSerial =serial.Serial ('com3', 9600) #Especifique o COM porttime.sleep (1 ) # atraso de 1 segundo enquanto 1:data =str (ArduinoSerial.readline (). decode ('ascii')) #read the data (x, y, z) =data.split (":") # assigns to x, y e z (X, Y) =mouse.get_position () #ler a posição atual do cursor (x, y) =(int (x), int (y)) #converter para int mouse.move (X + x, Yy ) #mova o cursor para a posição desejada se '1' em z:# lê o status de SW mouse.click (button ="left") # clica no botão esquerdo
Esquemas

Processo de manufatura
- Mouse do computador
- Ventilador com temperatura controlada
- Aquaponia controlada com Raspberry Pi
- Botão AWS IoT controlado por movimento
- Robô Raspberry Pi controlado por Bluetooth
- Robô controlado por Wi-Fi usando Raspberry Pi
- MajorTom:Alexa Voice Controlled ARDrone 2.0
- Carro RC controlado por joystick
- Joystick Game
- Liga de Expansão Controlada Liga 42