Controle USB para Jogos DIY com Arduino – Construa Seu Próprio Gamepad de Alto Desempenho
Componentes e Materiais
| SparkFun Pro Micro - 5V/16MHz | × | 1 |
| Arduino Leonardo | × | 1 |
| Chave Pushbutton 12mm SparkFun | × | 12 |
| Resistor 10k ohm | × | 1 |
| PCB Personalizado Gravado | × | 1 |
| Componentes Eletrônicos UTSOURCE | × | 1 |
Ferramentas e Máquinas Necessárias
| Pó de Cloreto Férrico |
| Impressora 3D (genérica) |
| Furadeira/Parafusadeira sem Fio |
Aplicativos e Serviços Online
| Arduino IDE |
| Autodesk Fusion 360 |
Sobre o Projeto
VÍDEO
INTRODUÇÃO
Este post é sobre um "Controle USB para Jogos DIY" no qual temos trabalhado recentemente no ElectroPunkz Labs.
A ideia é fazer um controle USB barato baseado no Atmega32U com botões e joysticks analógicos que pode ser usado para jogar jogos como NFS, GTA, Half-Life, LITTLE FIGHTER 2! etc.
Fizemos nosso controle em dois formatos: o primeiro baseado na configuração do PS1 ou SNES e o outro um controle USB estilo Xbox com sticks analógicos e botões (ainda não finalizado).

Vamos fazer a V1 neste post que é o Controle com Layout PS1!
É melhor se você assistir ao vídeo do projeto primeiro-
MATERIAIS
O hardware é bem simples e fácil de conseguir (exceto pelo PCB, você pode fazer o seu com o arquivo PDF do PCB anexado)
- Arduino Leonardo/ Pro Micro/ Atmega32U
- Botões (chaves tact switch)
- PCB Personalizado Gravado (PDF da matriz de botões anexado)
- Resistores 10K
- Fios Jumper
Obrigado UTSOURCE.net por oferecer componentes eletrônicos para este projeto! Você pode conferir UTSOURCE.net, eles lidam com todo tipo de componentes eletrônicos, como por exemplo todos os componentes usados neste projeto!
PROCESSO DE CONSTRUÇÃO(Fiação, montagem, etc)
A primeira coisa a fazer é preparar a Configuração Básica que é basicamente 12 Pushbuttons conectados em configuração Pull-Down com um Pro Micro, basicamente isto-
Testamos isso em uma protoboard e depois preparamos um PCB de acordo com o esquemático acima.


Após fazer o PCB (no OrCad Cadence) imprimimos a camada TOP em papel glossy.
Cortei o papel glossy no formato do PCB e coloquei sobre uma placa de cobre e apliquei calor para transferir a tinta do papel glossy para a placa de cobre. (Método Básico de Transferência de Tônner, assista meu vídeo sobre este tópico)

Após o PCB ficar pronto, mergulhamos em Solução de Gravação e gravamos o PCB, depois apenas furamos os furos para componentes, e nosso PCB DE CONTROLE DE JOGOS DIY estava pronto!
Então apenas colocamos tudo nele de acordo com o esquemático e o circuito estava pronto.
Após o circuito pronto, Desenhamos e Imprimimos em 3D o Gabinete/Caixa do PCB para o controle no Fusion360.

Agora só precisamos fazer upload do código e jogar alguns jogos com ele.
CÓDIGO
Faça upload do código fornecido no seu Pro Micro.
Palavra de conselho: primeiro teste sua placa/configuração completamente, verifique a resistência e conectividade das trilhas do PCB porque se algo estiver faltando isso causará muitos erros de teclado porque linhas de ground faltando enviarão sinais irregulares aos pinos e seu pro micro continuará pressionando teclas aleatórias o que tornará a reprogramação do Pro Micro muito difícil.
TESTE
A primeira coisa a fazer é Abrir o Bloco de Notas, e começar a pressionar as teclas do seu Controle e verificar se as teclas pressionadas estão exibindo as palavras corretas atribuídas.
Ou use qualquer app de teste de teclado web ou desktop.
Se tudo estiver funcionando de acordo com o código, abra qualquer jogo e comece a jogar com este CONSOLE DE JOGOS DIY!
Assista ao vídeo-
MELHORIAS FUTURAS
Bem, a primeira coisa que vou adicionar a esta configuração são Joysticks Analógicos para jogar jogos propriamente ditos que usam mouse para navegar o jogador, tipo XBOX ONE CONTROLLER.
V2 terá um PCB adequado com Layout de Controle Xbox One então fiquem ligados.
Deixe um comentário se tiverem algum problema!
Código
CÓDIGO C/C++
#include <Keyboard.h>
int WPin = 2; // CIMA
int SPin = 3; // BAIXO
int APin = 4; //ESQUERDA
int DPin = 5; //DIREITA
int UPLpin = 7; //superior esquerdo Q
int UPRpin = 9; //superior direito
int Xpin = 14;//x
int Apin = 10; //i
int Ypin = 15;//y
int Bpin = 16;//b
void setup() {
pinMode(WPin, INPUT);
pinMode(SPin, INPUT);
pinMode(APin, INPUT);
pinMode(DPin, INPUT);
pinMode(UPLpin, INPUT);
pinMode(UPRpin, INPUT);
pinMode(Xpin, INPUT);
pinMode(Apin, INPUT);
pinMode(Ypin, INPUT);
pinMode(Bpin, INPUT);
digitalWrite(WPin, HIGH);
digitalWrite(SPin, HIGH);
digitalWrite(APin, HIGH);
digitalWrite(DPin, HIGH);
digitalWrite(UPLpin, HIGH);
digitalWrite(UPRpin, HIGH);
digitalWrite(Xpin, HIGH);
digitalWrite(Apin, HIGH);
digitalWrite(Ypin, HIGH);
digitalWrite(Bpin, HIGH);
Keyboard.begin();
}
void loop() {
if (digitalRead(WPin) == 0) {
Keyboard.write('W');
delayMicroseconds(1);
}
if (digitalRead(SPin) == 0) {
Keyboard.write('S');
delayMicroseconds(1);
}
if (digitalRead(APin) == 0) {
Keyboard.write('A');
delayMicroseconds(1);
}
if (digitalRead(DPin) == 0) {
Keyboard.write('D');
delayMicroseconds(1);
}
if (digitalRead(UPLpin) == 0) {
Keyboard.write('q');
delayMicroseconds(1);
}
if (digitalRead(UPRpin) == 0) {
Keyboard.write('e');
delayMicroseconds(1);
}
if (digitalRead(Xpin) == 0) {
Keyboard.write('x');
delayMicroseconds(1);
}
if (digitalRead(Apin) == 0) {
Keyboard.write('i');
delayMicroseconds(1);
}
if (digitalRead(Ypin) == 0) {
Keyboard.write('y');
delayMicroseconds(1);
}
if (digitalRead(Bpin) == 0) {
Keyboard.write('b');
delayMicroseconds(1);
}
}
Peças Personalizadas e Gabinetes
Arquivos de design 3D para o gabinete do controle disponíveis no projeto original.
Esquemáticos
Esquemático do circuito e layout do PCB disponíveis nos arquivos do projeto.
Processo de manufatura
- Construa um Jogo em Tempo Real com Giroscópio: Arduino Nano + Sensor MPU-6050
- Dados Digital com Arduino: Gere Números Aleatórios 1-6 em LCD 16x2
- Construa um Jogo Tetris com Arduino Nano em Matriz LED 16×8 DIY
- Garrafa de Água Inteligente com Arduino – Monitoramento em Tempo Real e Alertas
- Pixel Chaser: Jogo LED Interativo de Um Toque com Arduino Nano
- Controlador Residencial Arduino com Alexa: Automação Inteligente Simplificada
- Jogo Pong Neon em Matriz NeoPixel com Arduino Nano
- Luva Inteligente de Gestos para Texto – Linguagem de Sinais
- Jogo Pong 1D com Arduino Nano e Fita LED WS2812 – Tutorial DIY Passo a Passo
- Controlador Testador Arduino DMX-512 – Kit Completo de Peças para Controle de Iluminação Confiável