Tutorial - UnoJoy utilize seu Arduino Uno como um Joystick

Olá Garagistas!!!

Neste tutorial iremos fazer um passo a passo de como transformar seu Arduino UNO R3 em um Joystick com o UnoJoy. Ele é totalmente compatível com as plataformas Windows, OSX e PS3, além de ser é capaz de simular todas as teclas do controle de PS3.

Iremos fazer todo o procedimento no Windows 7 x64

Lista de Materiais 

1 x Arduino Uno Rev 3

1 x Joystick Shield

1 x Jumper

Softwares

No Windows você deve instalar o software Flip da Atmel (neste pacote já vem com JRE)

Baixe a pasta do projeto UnoJoy e descompacte onde preferir. Utilizamos os arquivos deste link:

UnoJoyWin-21Feb2013.zip

Para outros sistemas operacionais veja a página do projeto.

Hardware

Neste tutorial a única montagem com Hardware necessária é colocar o Joystick Shield no Arduino Uno R3

Testando as teclas

Depois de instalar os softwares descritos acima e descompactar a pasta do UnoJoy, baixe este Sketch feito para o Joystick Shield e grave no seu Arduino.

Neste Sketch, fizemos algumas modificações no exemplo do UnoJoy para que funciona-se com o Joystick Shield.

Mantenha o Arduino Conectado na USB.

Agora execute o programa que esta na pasta que você descompactou o UnoJoy no caminho abaixo:

UnoJoyWin > UnoJoyProcessingVisualizer > UnoJoyProcessingVisualizer.exe

Ao fazer isto aparecerá esta tela.

Mexa o Joystick e você verá na tela as teclas sendo acionadas.

O botão Start pode ser acionado com um Jumper entre o pino D7 e o GND (deixamos ele no pino Aref pois não queremos o start sempre acionado).

Com a teclas testadas, retiramos o Arduino da USB e tiramos o Joystick Shield.

Transformando Uno em Joystick

Cuidados:

  • Ao fazer o procedimento abaixo você vai modificar o firmware do conversor USB/Serial que esta na placa do Arduino. Isto vai mudar a forma como ele é reconhecido pelo computador. Faça por sua conta em risco.
  • Todo o processo pode ser desfeito (leia como no fim to tutorial).
  • Evite manusear o Arduino com anel e qualquer outra coisa metálica.

 

Reconecte o Arduino no PC e dê um curto nos pinos que são mostrados na imagem abaixo:

Tire o jumper de perto do Arduino para evitar curto-circuito (mas mantenha ele conectado ao PC).

Isto serve para poder ser reprogramado o chip de comunicação USB/Serial (ATmega8u2 ou ATmega16u2) e deixa-lo em modo DFU (Device Firmware Update).

No gerenciador de dispositivos o Arduino será reconhecido como mostra a figura abaixo:

Clique em:

UnoJoyWinUnoJoyDriverInstaller.bat

E se o driver ainda não for instalado, mande procurar nesta pasta:

UnoJoyWin > Drivers

Instalado o dispositivo, certifique-se se você instalou o FLIP e execute o arquivo: 

UnoJoyWin > TurnIntoAJoystick.bat

Uma tela como esta irá aparecer:

Desconecte o Arduino da USB e reconecte.

Clique no ícone do Windows e em Dispositivos e Impressoras.

Você verá que o Joystick esta instalado.

ATENÇÃO: Para reverter o processo, você deve repetir os passo do item "Transformando Uno em Joystick" e ao chegar no ponto de executar o arquivo "TurnIntoAJoystick.bat" execute "TurnIntoAnArduino.bat" que esta dentro da pasta do UnoJoyWin.

É isto pessoal!!! Agora configure seu UnoJoy em seu emulador preferido ou ainda em seu PS3 e ponha os dedos para trabalhar. Se gostaram do tutorial, ficaram com dúvidas ou tem algum comentário a fazer, deixe ele abaixo.

\o/

Referências

https://code.google.com/p/unojoy/

http://arduino.cc/en/Hacking/DFUProgramming8U2

Exibições: 33057

Comentar

Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!

Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

Comentário de efraim joão de sousa em 27 abril 2019 às 17:06

olá boa tarde! estou fazendo um projeto de um  volante com pedais usando o Arduíno Uno, para esse projeto comprei 4 potenciômetros sendo  1 multi-voltas de alta precisão  de 2k linear para o volante e 3 potenciômetros B10k  linear para os pedais, porem estou com dificuldades em estabilizar os potenciômetros no jogo, o volante e os pedais não estabiliza, dificultando o controle, já usei diversos Sketch e tutoriais no you tube, coloquei capacitores cerâmicos 104  e nada adiantou,   não consigo calibrar em nenhuma tentativa, gostaria que alguém me ajuda-se!

Comentário de lucas mecanica em 26 junho 2017 às 11:33

Olá, estou utilizando botão a parte do módulo joystick... e estou com dificuldade, pois se eu colocar mais de 3 botões o arduino entra em curto. Não estou usando resistor nos botões, estou ligando do pino digital para o botão e do botão para o terra. Outra dúvida, estou criando um VR com MPU6050 mas não consigo zerar os parâmetros dele após o movimento da cabeça para cima por exemplo, como se eu quisesse ver o teto ou o céu do jogo... mas ele continua como se eu estivesse dando o comando no analógico e não para com minha cabeça parando, o analógico só retorno ao meio se eu centralizar minha cabeça e isso não tras sensação de VR...

Comentário de leonardo clavell em 8 julho 2016 às 9:42

Olá, eu fiz um volante com este projeto, jogava no ps3 e no pc com ele, agora tenho um xbox one, alguém pode me ajudar a funcioná-lo no xbox one?

Comentário de leonardo vieira em 27 maio 2016 às 12:13

Olá, quanto a transformar o arduino em joystick, gostaria de saber se com o arduino NANO v3.0(Microcontrolador: ATmega328), também seria possível mudar o modo como o PC o lê? de modo que reconheça-o como um controlador de jogos... sem que seja preciso programar...?

Agradecido!

Comentário de Vanderlei Hermesmeiyer em 7 agosto 2014 às 18:41

Contribuindo o código abaixo eu fiz seguindo o do tutorial e fiz algumas alterações ele tem opção de usar 17 botões ou 15 botões e um manche ou 13 botões e dois manche. Basta comentar e tirar comentário de algumas linhas para a alterações mais vocês olhando o código vão perceber isto...

#include "UnoJoy.h"
void setup(){
setupPins();
setupUnoJoy();
}
void loop(){
dataForController_t controllerData = getControllerData();
setControllerData(controllerData);
}
void setupPins(void){
for (int i = 2; i <= 12; i++){
pinMode(i, INPUT);
digitalWrite(i, HIGH);
}
pinMode(A0, INPUT);
digitalWrite(A0, HIGH);
pinMode(A1, INPUT);
digitalWrite(A1, HIGH);
pinMode(A2, INPUT);
digitalWrite(A2, HIGH);
pinMode(A3, INPUT);
digitalWrite(A3, HIGH);
pinMode(A4, INPUT);
digitalWrite(A4, HIGH);
pinMode(A5, INPUT);
digitalWrite(A5, HIGH);
}
dataForController_t getControllerData(void){
dataForController_t controllerData = getBlankDataForController();
controllerData.triangleOn = !digitalRead(2);
controllerData.circleOn = !digitalRead(3);
controllerData.squareOn = !digitalRead(4);
controllerData.crossOn = !digitalRead(5);
controllerData.dpadUpOn = !digitalRead(6);
controllerData.dpadDownOn = !digitalRead(7);
controllerData.dpadLeftOn = !digitalRead(8);
controllerData.dpadRightOn = !digitalRead(9);
controllerData.startOn = !digitalRead(10);
controllerData.homeOn = !digitalRead(11);
controllerData.selectOn = !digitalRead(12);
controllerData.l1On = !digitalRead(A0);
controllerData.r1On = !digitalRead(A1);
controllerData.l2On = !digitalRead(A2);
controllerData.r2On = !digitalRead(A3);
controllerData.l3On = !digitalRead(A4);
controllerData.r3On = !digitalRead(A5);
//controllerData.leftStickX = map((analogRead(A0)),0,1023,0,255);
//controllerData.leftStickY = map((analogRead(A1)),0,1023,255,0);
//controllerData.rightStickX = map((analogRead(A2)),0,1023,0,255);
//controllerData.rightStickY = map((analogRead(A3)),0,1023,255,0);
return controllerData;
}

Comentário de Vanderlei Hermesmeiyer em 7 agosto 2014 às 18:13

Ola! só para deixar registrado eu estava com o mesmo problema com meu Arduino UNO R3 (Não entrava em modo DFU ao fazer o jumper nos pinos indicados).

Depois de algumas pesquisas notei que o UNO R3 que eu estava usando não erra original.

Comprei outra placa Arduino UNO R3, porem desta vez comprei na loja do lab de garagem está chegou hoje e fiz todo o procedimento nesta placa para unojoy e funcionou tudo ok.

Moral final! Meu Arduino erra falsificado por este motivo não estava conseguindo colocar o UNO R3 como joystick... Quem sabe não e este o problema dos colegas... ai...

Comentário de Vanderlei Hermesmeiyer em 4 agosto 2014 às 22:25

Estou tendo o mesmo problema UNO R3 não entra em modo DFU.

Se conseguiram diz ai o procedimento, pois o meu ao fechar o curto só reinicia e não entra em modo DFU.

Comentário de Romualdo Macario de Souza em 6 maio 2014 às 18:37

Estou enfrentando o mesmo problema o migo ja conseguiu solucionar se sim me da uma força

Comentário de Alisson Francisco Krul em 14 setembro 2013 às 10:22

Parabéns pelo post, muito bom, estava mesmo procurando informações sobre o unojoy em português, mais estou tendo um problema é por isso que venho aqui, ao fechar o curto no local indicado do arduino Uno ele da um reset e é novamente reconhecido como Arduino Uno R3, se souberem onde estou errando me ajudem resolver meu problema, isso vai mudar todo o projeto do meu TCC...Vlw e novamente parabéns pelo blog muito bom!!!

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço