Indholdsfortegnelse:

Sim Racing Button Box: 8 trin
Sim Racing Button Box: 8 trin

Video: Sim Racing Button Box: 8 trin

Video: Sim Racing Button Box: 8 trin
Video: MAKE THIS BUTTON BOX | 32 FUNCTION w ENCODERS 2024, November
Anonim
Sim Racing Button Box
Sim Racing Button Box

Velkommen til sim racing -afhængige!

Er du ved at løbe tør for nøglebånd til at kortlægge alle dine bilkontroller til? Du har sandsynligvis brug for en knapboks! I denne Instructable opretter vi en fra bunden. Knappeboksen vil have 32 (!) Tilgængelige knaptilstande. Der kræves ikke yderligere software for at bruge denne knapboks. Du lærer, hvordan du opsætter en knapmatrix og skriver (eller kopierer) kode for at uploade til din Arduino.

Det er vigtigt at vide, at knapboksen ikke understøtter mange knapper, der trykkes samtidigt.

Lad os komme igang!

Trin 1: Forberedelse

Forberedelse
Forberedelse

Du skal bruge nogle værktøjer, knapper og flere elementer til at oprette knapboksen. Opret gerne knapboksen efter eget ønske.

Elektronik:

  • Knapper
  • Skifter
  • Rotary encoders
  • Arduino Pro Micro
  • Mini USB til USB kabel
  • Ledninger

Værktøjer:

  • Bore
  • Lodde
  • Bremsekaliber
  • Skruetrækkere
  • Skærer
  • Skruenøgle

Software:

  • Arduino IDE
  • Photoshop/Paint (valgfrit; kan tegnes i hånden)

Andet:

  • Kabinet (en kasse; kan købes eller tilpasses 3D -printet)
  • Carbon vinylfolie (valgfrit)
  • Drejekoder knapper
  • Kontaktdæksler (valgfrit)
  • Etiketprinter (valgfri)
  • Gummigummi

Når du har alle (eller nok til at komme i gang) varer, kan vi begynde at designe layoutet på knapboksen.

Trin 2: Design bokslayoutet

Værktøjer, der kræves til dette trin:

Photoshop/Paint (valgfrit; kan tegnes i hånden)

Designet af en knapboks kan være anderledes for alle. Til denne Instructable bruger vi imidlertid et layout, der består af:

  • 4x trevejs vippekontakter
  • 2x envejskontakter
  • 10x enkle trykknapper
  • 4x roterende encoder med enkel knap

Trevejskontakter:

Der er mange typer vippekontakter. Nogle er midlertidige, og nogle forbliver på plads, indtil de skiftes tilbage. Det er op til dig, hvilken type du skal bruge, men jeg anbefaler, at du bruger øjeblikkelige switches, da denne knapboks ikke er i stand til at have mange multiple knapper aktive på samme tid. Da vippekontakterne er trevejs (on/off/on), har vi otte (4x2) knapper til rådighed.

Envejskontakter:

Disse kan betragtes som enkle knapper (fra/til). Disse kan også være øjeblikkelige eller skifte. Igen, op til personlig præference, som du skal vælge. Disse giver os to (2) tilgængelige knapper.

Enkle trykknapper:

Knapper som disse kan bruges ved blot at skubbe dem (fra/til). Disse giver os ti (10) knapper.

Rotary encoders med simpel trykknap:

De fleste (hvis ikke alle) roterende encodere kan drejes i begge retninger uendeligt. Hver gang du roterer dem til en retning, bruges det som et tryk på en knap. Disse roterende encodere kan også trykkes på og give dem en anden knap. Drejekoderne giver tolv (12 = 4x3; drej til venstre/drej til højre/tryk).

32 knapper:

At have dem alle sammen giver os 32 (8+2+10+12) knapper!

Tilfreds med layoutet? Tid til at begynde at bygge!

Trin 3: Mål og bor

Mål og bor
Mål og bor
Mål og bor
Mål og bor

Værktøjer, der kræves til dette trin:

  • Bremsekaliber
  • Bore
  • Elektronik (knapper, kontakter osv.)

Mål alle de knapper, du vil tilføje til din knapboks. Hvis du har problemer med at finde dimensionerne på din elektronik, skal du bruge en (digital) tykkelse til at få diameteren på dem.

Marker elektronikens midterpunkter på forsiden af dit kabinet, og bor huller med de korrekte størrelser. Ønsker du at gøre kabinettet lidt mere æstetisk tiltalende? Vent med at montere knapperne!

Når du er færdig med at bore hullerne, kan vi få det til at ligne en rigtig knapboks!

Trin 4: Monter knapperne, rotaryerne og vipperne

Monter knapperne, rotaryerne og vipperne
Monter knapperne, rotaryerne og vipperne
Monter knapperne, rotaryerne og vipperne
Monter knapperne, rotaryerne og vipperne

Værktøjer, der kræves til dette trin:

  • Elektronik (knapper, kontakter osv.)
  • Skruenøgle
  • Carbon vinylfolie (valgfrit)
  • Skærer (valgfrit)

Al din elektronik skal leveres med en møtrik til at skrue den på plads. Hvis ikke; mål dem og køb den korrekte størrelse møtrik.

Hvis du ønsker at forbedre (personlig mening) udseendet af din knapboks, kan du bruge en vinylfiberfolie. Skær den til størrelsen (og en smule større) af dit kabinets ansigt, hvor du borede hullerne. Påfør vinylen og vikl den rundt om hjørnerne på bagsiden. Dette vil sikre, at indpakningen forbliver på plads, når kabinettet er lukket. Overdreven vinyl, der nu blokerer hullerne, kan fjernes ved hjælp af en fræser.

Efter at have taget omslaget (eller ej) kan du passe ind i elektronikken for at skabe forsiden af din knapboks. Du skulle nu have noget, der virkelig ligner en allerede! Desværre virker det ikke endnu …

Trin 5: Design ledningslayoutet

Design ledningslayoutet
Design ledningslayoutet

Værktøjer, der kræves til dette trin:

Photoshop/Paint (valgfrit; kan tegnes i hånden)

Oprettelse af en matrix:

Brug af en matrix vil spare os tid og en masse unødvendige ledninger og lodninger. Jeg vil ikke gå nærmere ind på mig selv, men vil foreslå, at du tager et kig på denne artikel, hvis du ikke er bekendt med begrebet matrix.

Design din egen matrix, eller brug layoutet fra denne Instructable. I matrixen vil vi bruge fem grupper. Grupperne er forbundet med følgende pinouts på Arduino:

  • 15: fire roterende encodere
  • A0: fem trykknapper
  • A1: to trevejsknapper og en trykknap
  • A2: to trevejsknapper og en trykknap
  • A3: fem trykknapper

Trin 6: Lodning

Lodning
Lodning
Lodning
Lodning

Værktøjer, der kræves til dette trin:

  • Loddekolbe
  • Lodde
  • Elektronik (monteret på dit kabinet)
  • Arduino Pro Micro
  • Ledninger

Valgfri:

Upload koden fra det næste trin først, hvis du er bekymret for lodning. Dette giver dig mulighed for at kontrollere dine forbindelser

Vi ønsker at anvende den matrix, der blev designet i det foregående trin, på den faktiske knapboks. Brug lidt tid på dette, især hvis det er første gang du lodder.

Nogle tips:

  • Lav en gruppe ad gangen
  • Slut Arduino til din computer for at teste lejlighedsvis
  • Opvarm ikke plastik knapper for meget, da de kan smelte og bryde forbindelser
  • Brug ikke for meget loddemetal, mindre er bedre
  • Brug ledninger i forskellige farver til hver gruppe/jord

Trin 7: Skrivning af koden

Værktøjer, der kræves til dette trin:

  • Arduino IDE
  • Joystick bibliotek
  • Tastatur.h (Arduino IDE> Skitse> Inkluder bibliotek> Administrer biblioteker …> Søg efter tastatur og installer det, der er oprettet af Mark Stanley og Alexander Brevig)

#include #include

#define ENABLE_PULLUPS

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

byte knapper [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; flygtig usigneret forkølelsestilstand; };

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] [R], R_ST_, R_ST_C_R_ST_R_ST_R 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_ST_M, R_ST_ 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, R_START, R_CCW_BEGIN, R_START} // R_CCW_FINAL {R_CCW_NEXT, R_CCW_FINAL, R_START, R_START | DIR_CCW}, // R_CCW_NEXT {R_CCW_NEXT, R_CCW_FINAL, R_CCW_BEGIN, R_START},}; #Afslut Hvis

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

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

Tastatur buttbx = Tastatur (makeKeymap (knapper), rowPins, colPins, NUMROWS, NUMCOLS);

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

ugyldig opsætning () {

Joystick.begin (); rotary_init ();}

void loop () {

CheckAllEncoders ();

CheckAllButtons ();

}

void CheckAllButtons (void) {

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

void rotary_init () {

for (int i = 0; i

usigneret char rotary_process (int _i) {

usigneret char pinstate = (digitalRead (rotaries [_i].pin2) << 1) | digitalRead (rotations [_i].pin1); rotaries [_i].state = ttable [rotaries [_i].state & 0xf] [pinstate]; return (rotations [_i].state & 0x30); }

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

usigneret char resultat = rotary_process (i); hvis (resultat == DIR_CCW) {Joystick.setButton (rotations .ccwchar, 1); forsinkelse (50); Joystick.setButton (rotations .ccwchar, 0); }; hvis (resultat == DIR_CW) {Joystick.setButton (rotations .cwchar, 1); forsinkelse (50); Joystick.setButton (rotations .cwchar, 0); }; }}

  1. Tilslut din Arduino Pro Micro til din computer ved at tilslutte USB -kablet
  2. For at uploade koden skal du vælge Arduino -typen ved at gå til Værktøjer> Board: …> Arduino/Genuino Micro.
  3. For at vælge den korrekte USB -port skal du gå til Værktøjer> Port:> COM x (Arduino/Genuino Micro)
  4. Bekræft skitsen ved at klikke på ✓ i øverste venstre hjørne (under Fil)
  5. Tryk på → ved siden af for at uploade den til Arduino

Trin 8: Føj til din Rig

Føj til din Rig
Føj til din Rig

Tillykke! Du er kommet så langt. Nu er det tid til løb!

Anbefalede: