blog-eletrogate-logo-desktop blog-eletrogate-logo-mobile
  • Categorias
    • Voltar
    • INICIANTES
    • INTERMEDIÁRIOS
    • AVANÇADOS
    • divide
    • Automação Residencial
    • Componentes Eletrônicos
    • Impressão 3D
    • IoT
    • Modelagem 3D
    • Módulos Wifi
    • Por trás da tecnologia
    • Projetos
    • Raspberry Pi
    • Robótica
    • Sensores
    • Shields
    • Sistemas Operacionais
    • Tipos de Arduino
    • Tutoriais
  • Apostilas
  • Quem Somos
  • Seja um redator
  • Trabalhe Conosco
    • Categorias
      • Voltar
      • INICIANTES
      • INTERMEDIÁRIOS
      • AVANÇADOS
      • divide
      • Automação Residencial
      • Componentes Eletrônicos
      • Impressão 3D
      • IoT
      • Modelagem 3D
      • Módulos Wifi
      • Por trás da tecnologia
      • Projetos
      • Raspberry Pi
      • Robótica
      • Sensores
      • Shields
      • Sistemas Operacionais
      • Tipos de Arduino
      • Tutoriais
    • Apostilas
    • Quem Somos
    • Seja um redator
    • Trabalhe Conosco
Loja Eletrogate
voltar
  • Introdução
  • Qual a Diferença do Pro Micro?
  • Especificações da Placa
  • Projeto
  • Materiais Necessários para o Projeto Gamepad de PC com Arduino Pro Micro
  • Desenvolvimento
  • Conclusão
  • Sobre o Autor
Projetos

Gamepad de PC com Arduino Pro Micro

Eletrogate 11 de agosto de 2020Atualizado em: 19 set 2022

Introdução

Aqui no nosso blog já usamos e fizemos posts de diversas placas microcontroladas, que resultaram em vários posts legais e bastante aprendizado. Só para citar alguns exemplos, já utilizamos por aqui a placa:

  • Arduino Uno
  • Arduino Mega
  • Arduino Nano
  • Arduino Pro Mini
  • NodeMCU ESP8266
  • ESP-01

Hoje será a vez de apresentar uma placa sensacional, que é o Arduino Pro Micro!


Qual a Diferença do Pro Micro?

Olhando rápido, ela parece muito ser uma fusão do Nano V3.0 + Cabo Usb para Arduino com o Pro Mini Atmega328p 5v 16MHz, pois ela é tão pequena quanto Arduino Pro Mini e ainda vem com o conector MicroUSB, que facilita nossa vida para mandar os programas (diferente do Pro Mini, não precisa de um conversor USB externo). Mas se formos olhar detalhadamente para ela, veremos que ela possui um Chip Atmega32U4, o que faz ela uma placa extremamente poderosa, muito mais que o Arduino Pro Mini.

Se caso você conheça a placa Placa Leonardo R3 + Cabo Usb para Arduino, certamente saberá que ela é famosa justamente por conseguir emular dispositivos USB como mouse, teclado e outros periféricos, te dando a possibilidade de fazer com que o Arduino mande comandos para o computador e o “engane”, fazendo se passar por um humano.

O Arduino Pro Micro funciona exatamente como o Arduino Leonardo, tendo a vantagem de ser extremamente compacto. Você pode ter ficado na dúvida se isso significa que essa placa só serve para controlar o computador, certo? E a resposta é não! Tanto a placa Leonardo e a Pro Mini funcionam como qualquer outro Arduino para projetos gerais, mas essas possuem esse poder adicional.

A verdade é que o Arduino Pro Micro está para o Arduino Leonardo assim como o Arduino Pro Mini está para o Arduino Uno. Ambos funcionam como miniaturização da placa maior.

Se caso seu projeto precise/demande também várias portas analógicas, o Arduino Pro Micro pode ser a pedida certa também, porque ela possui 9 portas analógicas, contra 6 Arduino Uno.


Especificações da Placa

Aqui está as especificações da placa:

  • Microcontrolador: Atmega32U4;
  •  Regulador 5V integrado;
  • Tensão de operação: 5V;
  • Tensão de entrada: 5-12V;
  • Corrente Máxima de saída: 150mA;
  • Proteção de sobre-corrente e polaridade reversa;
  • Conexão USB; – Digital I/O Pins: 12 (dos quais 5 oferecem saída PWM);
  • Pinos de entrada analógica: 9;
  • Memória Flash: 32 KB (dos quais 2 KB são usados pelo carregador de inicialização);
  • SRAM: 2 KB;
  • EEPROM: 1 KB;
  • Clock Speed: 16 MHz;

E aqui é o seu pinout, com a função de cada pino:

Onde você pode observar os pinos de comunicação serial, SPI e I2C.

Se caso você entenda diagramas esquemáticos e queira dar uma olhada nos detalhes construtivos da placa no sentido de ligações elétricas, clique aqui. Clicou e não entendeu nada? Clique aqui e aprenda sobre diagramas esquemáticos


Projeto

Com a placa devidamente apresentada, vamos ao projeto de hoje. Imagina que chegou uma visita na sua casa, e é uma pessoa querendo jogar algum jogo no computador com você, mas você só tem um controle. O que fazer? Não seria legal você mostrar seus conhecimentos e montar ali mesmo na hora um controle completamente funcional e se divertir com ele?

O projeto do Joystick explorará as principais características do Pro Micro: Ser pequeno a ponto de ser encaixado em uma protoboard e conseguir simular para o computador um dispositivo USB do tipo Gamepad. Com isso, iremos utilizar coisas simples como pushbuttons e um joystick para fazer este projeto.


Materiais Necessários para o Projeto Gamepad de PC com Arduino Pro Micro

  • 1x Protoboard 400 Pontos
  • 1x Arduino Pro Micro ATmega32U4 5V
  • 6x Push Buttons (Chave Táctil) 6x6x6mm
  • 1x Kit com 140 Jumpers em U para Protoboard
  • 1x Barra de Pinos Macho 1×40 – 180º
  • Materiais para realizar soldagem

cta_cart


Desenvolvimento

Montagem

O primeiro passo é remover os pinos 90° que vieram no módulo original, e soldar no lugar pinos 180°, que você adquiriu

No meu caso, o módulo possuia ilhas de solda na parte superior, mas pode acontecer de o módulo ter ilhas somente na parte inferior, o que dificultará um pouco, mas dará para realizar a soldagem normalmente. Você precisará de um apoio para segurar o módulo e a barra de pinos, e realizar a soldagem por baixo, como na foto abaixo:

Créditos: Samuel Martins

Recomendo que você tire a peça preta depois da soldagem, fazendo ficar dessa forma:

Créditos: Samuel Martins

Com os pinos devidamente soldados, você poderá realizar a montagem abaixo, optando sempre por utilizar jumpers em U, ou fazer seus próprios jumpers utilizando fios regidos finos.

A montagem real ficou assim, se caso você queira se inspirar nela:

Com a montagem concluída, podemos partir para a programação do módulo.

Código

Para o projeto, iremos utilizar uma biblioteca desenvolvida pelo Matthew Heironimus, no qual o Github da biblioteca pode ser consultado clicando aqui.

Para fazer o download da biblioteca na versão que estamos utilizando, clique aqui.

Para instalar ela, vá na Arduino IDE em “Sketch> Incluir Biblioteca > Adicionar biblioteca .ZIP”

Selecione o arquivo “ArduinoJoystickLibrary-master.zip” e dê um abrir. A Arduino IDE irá instalar a biblioteca automaticamente.

Abra a Arduino IDE e copie o seguinte código:

/*
 * Gamepad com o Arduino Pro Micro
 * Eletrogate 2020   //   Arduino versao 1.8.12
 */

#include <Joystick.h>

#define Joystick_GND  21 // Setando o pino 21 como o GND do nódulo Joystick
#define Joystick_VCC  20 // Setando o pino 20 como o Vcc do nódulo Joystick
#define Joystick_VRX  A1 // Setando os pinos abaixo cada um com sua função
#define Joystick_VRY  A0
#define Joystick_SW   15
#define Button_B      5
#define Button_Y      4
#define Button_A      10
#define Button_X      16
#define Button_Start  3
#define Button_Select 2

// Criando um objeto do tipo Joystick, onde simulará um gamepad.
Joystick_ Joystick(JOYSTICK_DEFAULT_REPORT_ID,JOYSTICK_TYPE_GAMEPAD, 
  11, 0,                  // Quantidade de botões, Numero de Hat Switch
  true, true, false,     // Eixos X e Y no joystick, mas não o eixo Z
  false, false, false,   // Sem Rx, Ry, ou Rz
  false, false,          // Sem rudder ou throttle
  false, false, false);  // Sem acelerador, freio, ou direção
  
void setup() {
  Serial.begin(9600);
  pinMode(Joystick_GND, OUTPUT); // Setendo Joystick_GND como saída, já que ele deverá jogar o valor 0V para o módulo.
  pinMode(Joystick_VCC, OUTPUT); // Setendo Joystick_VCC como saída, já que ele deverá jogar o valor 5V para o módulo.
  pinMode(Joystick_VRX, INPUT); // Setando como entrada porque este pino deverá ler o valor do joystick
  pinMode(Joystick_VRY, INPUT); // Setando como entrada porque este pino deverá ler o valor do joystick
  pinMode(Joystick_SW , INPUT_PULLUP); // Todos os botões abaixo estão setados como INPUT_PULLUP, dispensando resistores.
  pinMode(Button_B , INPUT_PULLUP);
  pinMode(Button_Y , INPUT_PULLUP);
  pinMode(Button_A , INPUT_PULLUP);
  pinMode(Button_X , INPUT_PULLUP);
  pinMode(Button_Start , INPUT_PULLUP);
  pinMode(Button_Select , INPUT_PULLUP);
  digitalWrite(Joystick_VCC, HIGH);// Setendo o valor de 5V no VCC do Joystick
  digitalWrite(Joystick_GND, LOW); //Setendo o valor de GND no GND do Joystick
  
  Joystick.begin();
  Joystick.setXAxisRange(-127, 127); // Definindo os limites dos eixos do gamepad. Deixe esse valor padrão
  Joystick.setYAxisRange(-127, 127);
  
}

void loop() {
  //Setando os valores dos eixos e butões
  Joystick.setXAxis(map(analogRead(Joystick_VRY),0,1023,-127,127)); // Utilizando a função Map para que o sinal original de 0 1023 seja adequado a -127 a 127
  Joystick.setYAxis(map(analogRead(Joystick_VRX),0,1023,127,-127)); // Utilizando a função Map como no exemplo anterior, mas utilizando a vantagem da inversão
  Joystick.setButton(0, !digitalRead(Button_X)); // Como estamos usando INPUT_PULLUP, o valor precisa ser invertido.
  Joystick.setButton(1, !digitalRead(Button_A));
  Joystick.setButton(2, !digitalRead(Button_B));
  Joystick.setButton(3, !digitalRead(Button_Y));
  Joystick.setButton(9, !digitalRead(Button_Start));
  Joystick.setButton(8, !digitalRead(Button_Select));
  Joystick.setButton(10, !digitalRead(Joystick_SW));
  delay(10); // Um pequeno delay na ordem de fração do nosso movimento dos dedos.
}

A explicação de cada linha está nos comentários do código.

Para carregar seu código, selecione a opção “Arduino Micro”. Você poderá selecionar também a opção “Arduino Leonardo” se desejar.

Selecione a Porta COM correta, e envie o código. O computador irá fazer um sinal de que um dispositvo foi desplugado, mas não se preocupe, é comum.

O seu Sistema Operacional pode demorar alguns instantes para reconhecer e configurar o novo dispositivo, mas assim que identificado tudo estará pronto para ser testado.


Conclusão

Abra um jogo qualquer, configure os controles para o seu GamePad Arduino Micro com cada função individual, e se divirta. Se tudo deu certo, você poderá comemorar o fim do projeto fazendo igual eu, jogando Rayman Legends com seu controle novo.

https://blog.eletrogate.com/wp-content/uploads/2020/08/vid_20200810_172241.mp4

 


Gostou tanto a ponto de querer fazer um controle assim permanente para você? Que tal utilizar uma Placa Fenolite Perfurada 10x5cm para você soldar tudo e ter o seu próprio controle DIY?

Você realizou a montagem e gostou muito? Posta lá no instagram e nos marca: @eletrogate 

Achou legal mas não entende nada sobre Arduino? Não fique triste! Agora temos um canal no Youtube fresquinho, e acabamos de lançar um vídeo falando sobre o que é Arduino, confere lá e se inscreve.

Dúvidas e sugestões, utilize a parte dos comentários! Não se esqueça de avaliar o post aqui embaixo.

Muito obrigado por ter lido até aqui. Abraços e até a próxima!

Tenha a Metodologia Eletrogate na sua Escola! Conheça nosso Programa de Robótica Educacional.


Sobre o Autor


Gustavo Nery

Cursando Engenharia de Controle e Automação pela UFMG. Apaixonado por eletrônica, computação e tecnologias na área de sistemas embarcados. Nos tempos livres me divido entre desenvolver pesquisa na universidade, adquirir novos conhecimentos e estar com a família.


Eletrogate

11 de agosto de 2020 Atualizado em: 19 set 2022

A Eletrogate é uma loja virtual de componentes eletrônicos do Brasil e possui diversos produtos relacionados à Arduino, Automação, Robótica e Eletrônica em geral.

Tenha a Metodologia Eletrogate dentro da sua Escola! Conheça nosso Programa de Robótica nas Escolas!

Projetos

Jogo da Velha na TV!

Eletrogate19 de setembro de 2023

Este é um jogo de quebra-cabeça para dois jogadores, identificados como “X” e “O”, que se revezam marcando os espaços em uma área 3 × 3.
Alguma vez na vida você já deve ter jogado este clássico jogo conhecido como Jogo-da-Velha ou Tic-Tac-Toe.

Neste post, você vai aprender a montar e programar uma versão digital deste jogo, com saída de imagem para TV, utilizando apenas alguns componentes eletrônicos básicos, uma placa Arduino UNO e um Teclado Matricial de 16 teclas.

Projetos

Jogo da Velha na TV!

Eletrogate19 de setembro de 2023

Este é um jogo de quebra-cabeça para dois jogadores, identificados como “X” e “O”, que se revezam marcando os espaços em uma área 3 × 3.
Alguma vez na vida você já deve ter jogado este clássico jogo conhecido como Jogo-da-Velha ou Tic-Tac-Toe.

Neste post, você vai aprender a montar e programar uma versão digital deste jogo, com saída de imagem para TV, utilizando apenas alguns componentes eletrônicos básicos, uma placa Arduino UNO e um Teclado Matricial de 16 teclas.

IoT

LittleFS: Alto Desempenho para RP Pico, ESP32 e ESP8266

Eletrogate12 de setembro de 2023

Aprenda neste post, a usar o sistema de arquivos LittleFS, que possui mais desempenho do que o sistema SPIFFS, nas placas Raspberry Pi Pico, ESP32 e ESP8266.

IoT

LittleFS: Alto Desempenho para RP Pico, ESP32 e ESP8266

Eletrogate12 de setembro de 2023

Aprenda neste post, a usar o sistema de arquivos LittleFS, que possui mais desempenho do que o sistema SPIFFS, nas placas Raspberry Pi Pico, ESP32 e ESP8266.

Sensores

Como Utilizar o Módulo Sensor de Cor RGB TCS34725

Eletrogate5 de setembro de 2023

Você já precisou de algum sensor para detectar as cores de objetos? Venha conferir o post de hoje! Nós vamos utilizar o sensor RGB TCS34725.

Sensores

Como Utilizar o Módulo Sensor de Cor RGB TCS34725

Eletrogate5 de setembro de 2023

Você já precisou de algum sensor para detectar as cores de objetos? Venha conferir o post de hoje! Nós vamos utilizar o sensor RGB TCS34725.

Projetos

Controlando o Braço Robótico em MDF via Bluetooth

Eletrogate29 de agosto de 2023 Atualizado em: 01 set 2023

Que tal montar um braço robótico e controlá-lo pelo celular? Entre para dicas de montagem e aprender a controlar servos e conectar sua placa.

Projetos

Controlando o Braço Robótico em MDF via Bluetooth

Eletrogate29 de agosto de 2023 Atualizado em: 01 set 2023

Que tal montar um braço robótico e controlá-lo pelo celular? Entre para dicas de montagem e aprender a controlar servos e conectar sua placa.

Eletrogate Robô

Cadastre-se e fique por
dentro de novidades!

blog-eletrogate-logo-footer

Rua Rio de Janeiro, 441 - Sala 1301
Centro - Belo Horizonte/MG
CEP 30160-041
*Não temos atendimento físico

ANWAR SLEIMAN HACHOUCHE - ME
CNPJ: 18.917.521/0001-73

Atendimento

(31) 3142-3800

[email protected]


Seg a Sex - das 8h às 17h

Institucional

  • Apostilas
  • Quem Somos
  • Privacidade
  • Seja um Redator
  • Trabalhe Conosco

Nos acompanhe

Facebook Instagram Youtube

© ELETROGATE 2023 - Todos os direitos reservados. Termos de uso e Política de privacidade.