Съдържание:

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

Видео: Sim Racing Button Box: 8 стъпки

Видео: Sim Racing Button Box: 8 стъпки
Видео: Using 28BYJ-48 Stepper Motor Push button Speed with 8 projects: Ultimate Video Tutorial Lesson 107 2024, Ноември
Anonim
Sim Racing Button Box
Sim Racing Button Box

Добре дошли наркомани от 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: Добавете към вашата платформа

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

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

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