Sim Racing Button Box: 8 стъпки
Sim Racing Button Box: 8 стъпки
Anonim

Добре дошли наркомани от sim racing!

Изчерпвате ли ключови връзки, за да картографирате всички контроли на колата си? Вероятно имате нужда от кутия за копчета! В този Instructable ще създадем такъв от нулата. Кутията с бутони ще има 32 (!) Налични състояния на бутони. Не се изисква допълнителен софтуер, за да използвате това поле с бутони. Ще научите как да настроите матрица с бутони и да напишете (или копирате) код, който да качите на вашия Arduino.

Важно е да знаете, че полето с бутони не поддържа много едновременно натиснати бутони.

Да започваме!

Стъпка 1: Подготовка

Ще ви трябват някои инструменти, бутони и още елементи, за да създадете полето с бутони. Чувствайте се свободни да създадете полето с бутони по ваше желание.

Електроника:

  • Бутони
  • Превключва
  • Ротационни енкодери
  • Arduino Pro Micro
  • Мини USB към USB кабел
  • Проводници

Инструменти:

  • Пробивна машина
  • Припой
  • Дебеломер
  • Отвертки
  • Фреза
  • Гаечен ключ

Софтуер:

  • Arduino IDE
  • Photoshop/Paint (по избор; може да се рисува на ръка)

Други:

  • Корпус (кутия; може да бъде закупен или персонализиран 3D отпечатан)
  • Въглеродна винилова обвивка (по избор)
  • Копчета за въртящ се енкодер
  • Капаци на превключвателите (по избор)
  • Принтер за етикети (по избор)
  • Гумена втулка

След като имате всички (или достатъчно, за да започнете) елементи, можем да започнем да проектираме оформлението на полето с бутони.

Стъпка 2: Проектирайте оформлението на кутията

Инструменти, необходими за тази стъпка:

Photoshop/Paint (по избор; може да се рисува на ръка)

Дизайнът на кутия с бутони може да бъде различен за всеки. Въпреки това, за този Instructable ще използваме оформление, което се състои от:

  • 4x трипътни превключватели
  • 2x еднопосочни превключватели
  • 10x прости бутони
  • 4x въртящ се енкодер с прост бутон

Трипътни превключватели:

Има много видове превключватели. Някои са моментни, а други остават на място, докато не се върнат обратно. От вас зависи кой тип да използвате, но съветвам да използвате моментни превключватели, тъй като това поле с бутони не може да има много активни бутони едновременно. Тъй като превключвателите са трипътни (включване/изключване/включване), имаме осем (4x2) бутона на разположение.

Еднопосочни превключватели:

Те могат да се разглеждат като прости бутони (изключване/включване). Те също могат да бъдат моментни или превключващи. Отново, до лични предпочитания кой да изберем. Те ни дават два (2) налични бутона.

Прости бутони:

Бутони като тези могат да се използват, като просто ги натиснете (изключване/включване). Това ще ни даде десет (10) бутона.

Ротационни енкодери с прост бутон:

Повечето (ако не всички) въртящи се енкодери могат да се обръщат безкрайно в двете посоки. Всеки път, когато ги завъртите в посока, тя се използва като натискане на бутон. Тези въртящи се енкодери също могат да бъдат натиснати, като им се даде друг бутон. Ротационните енкодери дават дванадесет (12 = 4x3; завъртане наляво/завъртане надясно/натискане) бутони.

32 бутона:

Като ги съберем заедно, получаваме 32 (8+2+10+12) натискания на бутони!

Доволни ли сте от оформлението? Време е да започнете строителството!

Стъпка 3: Измерете и пробийте

Инструменти, необходими за тази стъпка:

  • Дебеломер
  • Пробивна машина
  • Електроника (бутони, ключове и др.)

Измерете всички бутони, които искате да добавите към полето за бутони. Ако имате проблеми с намирането на размерите на вашата електроника, използвайте (цифров) шублер, за да получите диаметъра им.

Маркирайте централните точки на електрониката на лицевата страна на вашия корпус и пробийте дупки с правилните размери. Искате ли да направите заграждението малко по -естетично? Изчакайте с поставянето на бутоните!

След като приключите с пробиването на дупките, можем да го направим да изглежда като истинска кутия с копчета!

Стъпка 4: Поставете бутоните, ротарите и превключвателите

Инструменти, необходими за тази стъпка:

  • Електроника (бутони, ключове и др.)
  • Гаечен ключ
  • Въглеродна винилова обвивка (по избор)
  • Фреза (по избор)

Цялата ви електроника трябва да идва с гайка, която да я завинтва на място. Ако не; измерете ги и закупете гайката с правилния размер.

Ако искате да подобрите (лично мнение) външния вид на кутията с копчета, можете да използвате винилова обвивка от въглеродни влакна. Изрежете го до размера (и малко по -голям) на лицето на заграждението, в което сте пробили отворите. Нанесете винила и го увийте около ъглите към гърба. Това ще гарантира, че обвивката остава на място, когато заграждението е затворено. Излишният винил, който сега блокира отворите, може да бъде отстранен с помощта на фреза.

След като сте сложили обвивката (или не), можете да се поберете в електрониката, за да създадете предната част на кутията с бутони. Вече трябва да имате нещо, което вече наистина прилича на такова! За съжаление все още не работи …

Стъпка 5: Проектирайте схемата на окабеляване

Инструменти, необходими за тази стъпка:

Photoshop/Paint (по избор; може да се рисува на ръка)

Създаване на матрица:

Използването на матрица ще ни спести време и много ненужно окабеляване и запояване. Аз самият няма да навлизам в подробности, но ще ви предложа да разгледате тази статия, ако не сте запознати с концепцията за матрица.

Проектирайте своя собствена матрица или използвайте оформлението от тази инструкция. В матрицата ще използваме пет групи. Групите са свързани със следните пинаути на Arduino:

  • 15: четири въртящи се енкодера
  • A0: пет бутона
  • A1: два трипосочни превключвателя и един бутон
  • A2: два трипосочни превключвателя и един бутон
  • A3: пет бутона за натискане

Стъпка 6: Запояване

Инструменти, необходими за тази стъпка:

  • Поялник
  • Припой
  • Електроника (монтирана на вашия корпус)
  • Arduino Pro Micro
  • Проводници

По избор:

Качете първо кода от следващата стъпка, ако се притеснявате за запояване. Това ще ви позволи да проверите връзките си

Искаме да приложим матрицата, проектирана в предишната стъпка, към действителната кутия с бутони. Отделете малко време за това, особено ако за първи път запоявате.

Някои съвети:

  • Направете една група навреме
  • Свържете Arduino към компютъра си, за да тествате от време на време
  • Не загрявайте твърде много пластмасовите бутони, тъй като те могат да се стопят и да прекъснат връзките
  • Не използвайте твърде много спойка, по -малко е по -добре
  • Използвайте различни цветни проводници за всяка група/маса

Стъпка 7: Написване на кода

Инструменти, необходими за тази стъпка:

  • Arduino IDE
  • Библиотека с джойстик
  • Keypad.h (Arduino IDE> Sketch> Include Library> Manage Libraries …> Search for Keypad and install the one that is created by Mark Stanley and Alexander Brevig)

#включи #включи

#define ENABLE_PULLUPS

#дефинирайте NUMROTARIES 4 #дефинирайте NUMBUTTONS 24 #дефинирайте NUMROWS 5 #дефинирайте NUMCOLS 5

байтови бутони [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 {

байт pin1; байт pin2; int ccwchar; int cwchar; променливо неподписано char състояние; };

rotariesdef ротари [NUMROTARIES] {

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

#дефинирайте DIR_CCW 0x10

#дефинирайте DIR_CW 0x20 #дефинирайте 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_ RC, RG, RG, 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 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},}; #endif

байт rowPins [NUMROWS] = {21, 20, 19, 18, 15};

байт colPins [NUMCOLS] = {14, 16, 10, 9, 8};

Клавиатура buttbx = клавиатура (makeKeymap (бутони), rowPins, colPins, NUMROWS, NUMCOLS);

Джойстик_ Джойстик (JOYSTICK_DEFAULT_REPORT_ID, JOYSTICK_TYPE_JOYSTICK, 32, 0, false, false, false, false, false, false, false, false, false, false, false);

void setup () {

Joystick.begin (); rotary_init ();}

void loop () {

CheckAllEncoders ();

CheckAllButtons ();

}

void CheckAllButtons (void) {

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

void rotary_init () {

за (int i = 0; i

unsigned char rotary_process (int _i) {

unsigned char pinstate = (digitalRead (ротарии [_i].pin2) << 1) | digitalRead (ротари [_i].pin1); rotaries [_i].state = ttable [rotaries [_i].state & 0xf] [pinstate]; return (ротари [_i].state & 0x30); }

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

неподписан знак резултат = ротационен_процес (i); if (резултат == DIR_CCW) {Joystick.setButton (ротации .ccwchar, 1); забавяне (50); Joystick.setButton (ротари .ccwchar, 0); }; if (резултат == DIR_CW) {Joystick.setButton (ротации .cwchar, 1); забавяне (50); Joystick.setButton (ротари .cwchar, 0); }; }}

  1. Свържете вашия Arduino Pro Micro към компютъра, като включите USB кабела
  2. За да качите кода, изберете типа Arduino, като отидете в Tools> Board:…> Arduino/Genuino Micro.
  3. За да изберете правилния USB порт, отидете на Инструменти> Порт:> COM x (Arduino/Genuino Micro)
  4. Проверете скицата, като щракнете върху ✓ в горния ляв ъгъл (под Файл)
  5. Натиснете → до него, за да го качите в Arduino

Стъпка 8: Добавете към вашата платформа

Честито! Стигнахте толкова далеч. Сега е време да се състезавате!

Препоръчано: