Índice:

Caixa de botões do Sim Racing: 8 etapas
Caixa de botões do Sim Racing: 8 etapas

Vídeo: Caixa de botões do Sim Racing: 8 etapas

Vídeo: Caixa de botões do Sim Racing: 8 etapas
Vídeo: 🕹️ D.I.Y Button Box - Step One - What Hardware To Use - 🔘 2024, Novembro
Anonim
Sim Racing Button Box
Sim Racing Button Box

Bem-vindos, viciados em corridas de simulação!

Você está ficando sem teclas para mapear todos os controles do seu carro? Você provavelmente precisa de uma caixa de botão! Neste Instructable estaremos criando um do zero. A caixa de botão terá 32 (!) Estados de botão disponíveis. Nenhum software adicional é necessário para usar esta caixa de botão. Você aprenderá como configurar uma matriz de botão e escrever (ou copiar) código para fazer o upload para o seu Arduino.

É importante saber que a caixa de botão não suporta muitos botões pressionados simultaneamente.

Vamos começar!

Etapa 1: preparação

Preparação
Preparação

Você precisará de algumas ferramentas, botões e mais itens para criar a caixa de botões. Sinta-se à vontade para criar a caixa de botão de acordo com sua preferência.

Eletrônicos:

  • Botões
  • Alterna
  • Codificadores rotativos
  • Arduino Pro Micro
  • Mini USB para cabo USB
  • Fios

Ferramentas:

  • Furar
  • Solda
  • Paquímetro
  • Chaves de fenda
  • Cortador
  • Chave

Programas:

  • IDE Arduino
  • Photoshop / Paint (opcional; pode ser desenhado à mão)

De outros:

  • Caixa (uma caixa; pode ser comprada ou impressa em 3D personalizada)
  • Envoltório de vinil de carbono (opcional)
  • Botões codificadores rotativos
  • Tampas do interruptor (opcional)
  • Impressora de etiquetas (opcional)
  • Ilhó de borracha

Depois de ter todos os itens (ou o suficiente para começar), podemos começar a projetar o layout da caixa de botão.

Etapa 2: Projete o layout da caixa

Ferramentas necessárias para esta etapa:

Photoshop / Paint (opcional; pode ser desenhado à mão)

O design de uma caixa de botão pode ser diferente para cada pessoa. No entanto, para este Instructable usaremos um layout que consiste em:

  • 4x interruptores de alternância de três vias
  • 2x interruptores de alternância unidirecionais
  • 10x botões simples
  • 4x codificador rotativo com botão simples

Chaves de alternância de três vias:

Existem muitos tipos de interruptores de alternância. Alguns são momentâneos e alguns permanecem no lugar até que sejam trocados de volta. Depende de você que tipo usar, mas eu aconselho usar interruptores momentâneos, pois esta caixa de botão não é capaz de ter vários botões ativos ao mesmo tempo. Como as chaves de alternância são de três vias (liga / desliga / liga), temos oito botões (4x2) disponíveis.

Chaves de alternância de uma maneira:

Eles podem ser considerados como botões simples (liga / desliga). Eles também podem ser momentâneos ou alternados. Mais uma vez, depende da preferência pessoal que escolher. Isso nos dá dois (2) botões disponíveis.

Botões de pressão simples:

Botões como esses podem ser usados simplesmente pressionando-os (liga / desliga). Isso nos dará dez (10) botões.

Codificadores rotativos com botão simples:

A maioria (senão todos) dos codificadores rotativos pode ser girada para ambas as direções infinitamente. Toda vez que você os gira em uma direção, é usado como um pressionamento de botão. Esses codificadores rotativos também podem ser pressionados, dando-lhes outro botão. Os codificadores rotativos fornecem doze (12 = 4x3; girar para a esquerda / girar para a direita / pressionar) botões.

32 botões:

Ter todos eles juntos nos dá 32 (8 + 2 + 10 + 12) pressionamentos de botão!

Satisfeito com o layout? É hora de começar a construir!

Etapa 3: Medir e perfurar

Medir e perfurar
Medir e perfurar
Medir e perfurar
Medir e perfurar

Ferramentas necessárias para esta etapa:

  • Paquímetro
  • Furar
  • Eletrônica (botões, interruptores, etc.)

Meça todos os botões que você deseja adicionar à sua caixa de botões. Se você estiver tendo problemas para encontrar as dimensões de seus componentes eletrônicos, use um calibrador (digital) para obter o diâmetro deles.

Marque os pontos centrais dos componentes eletrônicos na face do gabinete e faça furos com os tamanhos corretos. Quer tornar o gabinete um pouco mais agradável esteticamente? Aguarde encaixando os botões!

Assim que terminar de fazer os furos, podemos fazer com que comece a se parecer com uma caixa de botão de verdade!

Etapa 4: ajuste os botões, rotativos e alternadores

Ajustar os botões, rotativos e alternadores
Ajustar os botões, rotativos e alternadores
Ajustar os botões, rotativos e alternadores
Ajustar os botões, rotativos e alternadores

Ferramentas necessárias para esta etapa:

  • Eletrônica (botões, interruptores, etc.)
  • Chave
  • Envoltório de vinil de carbono (opcional)
  • Cortador (opcional)

Todos os seus componentes eletrônicos devem vir com uma porca para aparafusá-los no lugar. Se não; meça-os e compre a porca de tamanho correto.

Se você quiser melhorar (opinião pessoal) a aparência de sua caixa de botões, você pode usar um envoltório de vinil de fibra de carbono. Corte no tamanho (e um pouco maior) da face do gabinete onde você fez os furos. Aplique o vinil e enrole nos cantos das costas. Isso garantirá que o envoltório permaneça no lugar quando o invólucro for fechado. O excesso de vinil que agora bloqueia os orifícios pode ser removido com um cortador.

Depois de colocar o envoltório (ou não), você pode encaixar os componentes eletrônicos para criar a frente de sua caixa de botões. Agora você deve ter algo que realmente se parece com um! Infelizmente, ainda não funciona …

Etapa 5: Projete o layout da fiação

Projete o layout da fiação
Projete o layout da fiação

Ferramentas necessárias para esta etapa:

Photoshop / Paint (opcional; pode ser desenhado à mão)

Criando uma matriz:

Usar uma matriz nos economizará tempo e muita fiação e solda desnecessárias. Não vou entrar em muitos detalhes, mas vou sugerir que você dê uma olhada neste artigo se não for familiar com o conceito de matriz.

Projete sua própria matriz ou use o layout deste Instructable. Na matriz, usaremos cinco grupos. Os grupos são conectados às seguintes pinagens no Arduino:

  • 15: quatro codificadores rotativos
  • A0: cinco botões de pressão
  • A1: dois interruptores de três vias e um botão de pressão
  • A2: dois interruptores de três vias e um botão de pressão
  • A3: cinco botões de pressão

Etapa 6: Solda

De solda
De solda
De solda
De solda

Ferramentas necessárias para esta etapa:

  • Ferro de solda
  • Solda
  • Eletrônica (montada em seu gabinete)
  • Arduino Pro Micro
  • Fios

Opcional:

Carregue primeiro o código da próxima etapa se estiver preocupado com a soldagem. Isso permitirá que você verifique suas conexões

Queremos aplicar a matriz projetada na etapa anterior à caixa de botão real. Dedique algum tempo para isso, especialmente se esta for sua primeira vez de soldagem.

Algumas dicas:

  • Faça um grupo de cada vez
  • Conecte o Arduino ao seu computador para testar ocasionalmente
  • Não aqueça muito os botões de plástico, pois eles podem derreter e quebrar as conexões
  • Não use muita solda, menos é melhor
  • Use fios de cores diferentes para cada grupo / terra

Etapa 7: escrever o código

Ferramentas necessárias para esta etapa:

  • IDE Arduino
  • Biblioteca de joystick
  • Keypad.h (Arduino IDE> Sketch> Incluir biblioteca> Gerenciar bibliotecas…> Pesquise o teclado e instale aquele que foi criado por Mark Stanley e Alexander Brevig)

#include #include

#define ENABLE_PULLUPS

#define NUMROTARIES 4 #define NUMBUTTONS 24 #define NUMROWS 5 #define NUMCOLS 5

botões de byte [NUMROWS] [NUMCOLS] = {

{0, 1, 2, 3, 4}, {5, 6, 7, 8, 9}, {10, 11, 12, 13, 14}, {15, 16, 17, 18, 19}, {20, 21, 22, 23}, };

struct rotariesdef {

byte pin1; byte pin2; int ccwchar; int cwchar; estado de char não assinado volátil; };

rotariesdef rotaries [NUMROTARIES] {

{0, 1, 24, 25, 0}, {2, 3, 26, 27, 0}, {4, 5, 28, 29, 0}, {6, 7, 30, 31, 0}, };

#define DIR_CCW 0x10

#define DIR_CW 0x20 #define R_START 0x0

#ifdef HALF_STEP

#define R_CCW_BEGIN 0x1 #define R_CW_BEGIN 0x2 #define R_START_M 0x3 #define R_CW_BEGIN_M 0x4 #define R_CCW_BEGIN_M 0x5 const unsigned char ttable [6] [4] = {// R_START_BEGINSTART (00) {R_START_BEGINSTART, R_CW_B, // R_CCW_BEGIN {R_START_M | DIR_CCW, R_START, R_CCW_BEGIN, R_START}, // R_CW_BEGIN {R_START_M | DIR_CW, R_CW_BEGIN, R_START, R_START}, // R_START_M (11) {R_START_M, R_CCW_BEGIN_M, R_CW_BEGIN_M, R_START}, // R_CW_BEGIN_M {R_START_M, R_START_M, R_CW_BEGIN_M, R_START | DIR_CW}, // R_CCW_BEGIN_M {R_START_M, R_CCW_BEGIN_M, R_START_M, R_START | DIR_CCW},}; #else #define R_CW_FINAL 0x1 #define R_CW_BEGIN 0x2 #define R_CW_NEXT 0x3 #define R_CCW_BEGIN 0x4 #define R_CCW_FINAL 0x5 #define R_CCW_NEXT 0x6

const unsigned char ttable [7] [4] = {

// R_START {R_START, R_CW_BEGIN, R_CCW_BEGIN, R_START}, // R_CW_FINAL {R_CW_NEXT, R_START, R_CW_FINAL, R_START | DIR_CW}, // R_CW_BEGIN {R_CW_NEXT, R_CW_BEGIN, R_START, R_START}, // R_CW_NEXT {R_CW_NEXT, R_CW_BEGIN, R_CW_FINAL, R_START}, // R_CCW_BEGIN {R_CCW_NEXT_EXT, R_CCW_NEXT, R_CW_BEGIN, R_CW_FINAL, R_START}, // R_CCW_BEGIN {R_CCW_NEXT_EXT, R_CCWART, R_CCW_NEXT, R_CCWART, // R_CCW_NEXT, R_CCWIN_FINAL_CCWART, // R_CCWIN_CCWART, // R_CCWIN_START_R_CCWART // R_CCWART_L_START // R_CCWART_LINAL_START // R_CCWART_LINAL_START // R_CCWART // RINAL_START, // R_CCWART. R_START, R_START | DIR_CCW}, // R_CCW_NEXT {R_CCW_NEXT, R_CCW_FINAL, R_CCW_BEGIN, R_START},}; #fim se

byte rowPins [NUMROWS] = {21, 20, 19, 18, 15};

byte colPins [NUMCOLS] = {14, 16, 10, 9, 8};

Teclado buttbx = Teclado (makeKeymap (botões), rowPins, colPins, NUMROWS, NUMCOLS);

Joystick_ Joystick (JOYSTICK_DEFAULT_REPORT_ID, JOYSTICK_TYPE_JOYSTICK, 32, 0, falso, falso, falso, falso, falso, falso, falso, falso, falso, falso, falso);

void setup () {

Joystick.begin (); rotary_init ();}

void loop () {

CheckAllEncoders ();

CheckAllButtons ();

}

void CheckAllButtons (void) {

if (buttbx.getKeys ()) {for (int i = 0; i

void rotary_init () {

para (int i = 0; i

unsigned char rotary_process (int _i) {

unsigned char pinstate = (digitalRead (rotaries [_i].pin2) << 1) | digitalRead (rotativos [_i].pin1); rotários [_i].state = ttable [rotários [_i].state & 0xf] [pinstate]; retorno (rotativos [_i].state & 0x30); }

void CheckAllEncoders (void) {for (int i = 0; i <NUMROTARIES; i ++) {

resultado de caractere sem sinal = rotary_process (i); if (resultado == DIR_CCW) {Joystick.setButton (rotários .ccwchar, 1); atraso (50); Joystick.setButton (rotários .ccwchar, 0); }; if (resultado == DIR_CW) {Joystick.setButton (rotários .cwchar, 1); atraso (50); Joystick.setButton (rotários .cwchar, 0); }; }}

  1. Conecte seu Arduino Pro Micro ao computador conectando o cabo USB
  2. Para fazer o upload do código, selecione o tipo de Arduino em Ferramentas> Placa:…> Arduino / Genuino Micro.
  3. Para selecionar a porta USB correta, vá para Ferramentas> Porta:> COM x (Arduino / Genuino Micro)
  4. Verifique o esboço clicando em ✓ no canto superior esquerdo (em Arquivo)
  5. Pressione → ao lado dele para fazer o upload para o Arduino

Etapa 8: adicionar à sua plataforma

Adicione à sua plataforma
Adicione à sua plataforma

Parabéns! Você chegou tão longe. Agora é hora de correr!

Recomendado: