Оглавление:

Коробка кнопок Sim Racing: 8 шагов
Коробка кнопок Sim Racing: 8 шагов

Видео: Коробка кнопок Sim Racing: 8 шагов

Видео: Коробка кнопок Sim Racing: 8 шагов
Видео: ⚡⚡⚡🚙🚙🚙🚥telemetry for simracing/🏁🏁🏁А так ли она нужна?!))SimHub🚗🚗🚗 2024, Ноябрь
Anonim
Коробка кнопок Sim Racing
Коробка кнопок Sim Racing

Добро пожаловать, любители симуляторов гонок!

У вас заканчиваются привязки клавиш для привязки всех элементов управления вашим автомобилем? Вероятно, вам нужна коробка для кнопок! В этом руководстве мы создадим его с нуля. В кнопочном блоке будет 32 (!) Доступных состояния кнопки. Для использования этого поля с кнопками не требуется никакого дополнительного программного обеспечения. Вы узнаете, как настроить матрицу кнопок и написать (или скопировать) код для загрузки на ваш Arduino.

Важно знать, что блок кнопок не поддерживает большое количество одновременно нажатых кнопок.

Давайте начнем!

Шаг 1: подготовка

Подготовка
Подготовка

Вам понадобятся некоторые инструменты, кнопки и другие предметы для создания блока кнопок. Не стесняйтесь создавать кнопочный блок по своему желанию.

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

  • Кнопки
  • Переключает
  • Энкодеры
  • Arduino Pro Micro
  • Кабель с мини-USB на USB
  • Провода

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

  • Дрель
  • Припой
  • Каверномер
  • Отвертки
  • Резак
  • Гаечный ключ

Программное обеспечение:

  • IDE Arduino
  • Photoshop / Paint (необязательно; можно нарисовать вручную)

Другой:

  • Корпус (коробка; можно купить или напечатать на 3D-принтере)
  • Карбон-виниловая пленка (по желанию)
  • Ручки поворотного энкодера
  • Крышки переключателей (опционально)
  • Принтер этикеток (опционально)
  • Резиновая втулка

Когда у вас есть все (или достаточно для начала) элементов, мы можем приступить к разработке макета поля кнопок.

Шаг 2. Разработайте макет коробки

Инструменты, необходимые для этого шага:

Photoshop / Paint (необязательно; можно нарисовать вручную)

Дизайн коробки для кнопок может быть разным для всех. Однако для этого руководства мы будем использовать макет, который состоит из:

  • 4 трехпозиционных переключателя
  • 2 односторонних тумблера
  • 10 простых кнопок
  • 4-кратный поворотный энкодер с простой кнопкой

Трехпозиционные переключатели:

Есть много типов тумблеров. Некоторые из них кратковременны, а некоторые остаются на месте до тех пор, пока не переключатся обратно. Какой тип использовать, решать вам, но я советую использовать мгновенные переключатели, так как в этом блоке кнопок не может быть одновременно много активных кнопок. Поскольку тумблеры трехпозиционные (вкл. / Выкл. / Вкл.), У нас есть восемь (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: Написание кода

Инструменты, необходимые для этого шага:

  • IDE Arduino
  • Библиотека джойстиков
  • Keypad.h (Arduino IDE> Эскиз> Включить библиотеку> Управление библиотеками…> Найдите клавиатуру и установите ту, которая создана Марком Стэнли и Александром Бревигом)

#include #include

#define ENABLE_PULLUPS

#define NUMROTARIES 4 #define NUMBUTTONS 24 #define NUMROWS 5 #define 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 {

byte pin1; byte pin2; int ccwchar; int cwchar; изменчивое состояние беззнакового символа; };

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_START_START_R_START_START_R_START_ (R_START_START_) 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_START_M_R_START_M_R_START_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

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

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

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

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

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

беззнаковый символ rotary_process (int _i) {

символ без знака pinstate = (digitalRead (rotaries [_i].pin2) << 1) | digitalRead (поворотники [_i].pin1); поворотные [_i].state = ttable [поворотные [_i].state & 0xf] [pinstate]; return (вращатели [_i].state & 0x30); }

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

беззнаковый результат char = rotary_process (i); если (результат == DIR_CCW) {Joystick.setButton (rotaries .ccwchar, 1); задержка (50); Joystick.setButton (rotaries .ccwchar, 0); }; если (результат == DIR_CW) {Joystick.setButton (rotaries .cwchar, 1); задержка (50); Joystick.setButton (rotaries .cwchar, 0); }; }}

  1. Подключите Arduino Pro Micro к компьютеру, подключив кабель USB.
  2. Чтобы загрузить код, выберите тип Arduino, выбрав Инструменты> Плата:…> Arduino / Genuino Micro.
  3. Чтобы выбрать правильный порт USB, перейдите в Инструменты> Порт:> COM x (Arduino / Genuino Micro)
  4. Проверьте эскиз, щелкнув ✓ в верхнем левом углу (в разделе «Файл»).
  5. Нажмите → рядом с ним, чтобы загрузить его в Arduino.

Шаг 8: Добавьте к своей буровой установке

Добавить в свою установку
Добавить в свою установку

Поздравляю! Вы зашли так далеко. Пришло время гонок!

Рекомендуемые: