У вас мало времени, чтобы играть в видеоигры, когда вы всегда работаете, но время от времени вы можете прокрасться на час или два. Одна из игр, которые мне недавно понравились, — это шутер о Второй мировой войне под названием Hell Let Loose. ».

Одним из качеств, которые меня привлекают в игре, является сообщество и обширное общение между игроками. У него есть цепочка подчинения, и люди регулярно общаются от командования до отряда; в отличие от баттлфилда. Игроки могут напрямую общаться со своим отрядом, со своей командой и с другими игроками поблизости.

Было много раз, когда я наблюдал за стрельбищем, а также хотел рассказать товарищам по отряду о другом происходящем; возможно приближающийся Тигр. У меня просто не хватило пальцев, чтобы сделать это правильно.

Здесь в игру вступает построение полезности.

Проектируйте то, что вам нужно, а не то, что, как вы думаете, вы можете сделать.

Обычно люди не делают так много шагов, чтобы решить проблему, но это казалось правильным способом сделать это. Старайтесь делать все правильно, а не простым способом.

Я начал с создания простого настольного приложения в Visual Studio с использованием C#, чтобы проверить, будут ли SendKeys работать должным образом. Мы использовали пакет InputSimulator, чтобы упростить нажатие клавиш.

Созданное нами настольное приложение позволяет пользователю устанавливать триггеры, необходимые для инициирования различных действий. Мы будем записывать события нажатия клавиши, чтобы добавить ключи в список, а затем дождаться нажатия клавиши, чтобы завершить их настройку.

Я начал с простого микроконтроллера USB mini от Adafruit. Основная функция посылает сигнал ON/OFF через последовательный порт. Там не так много осталось сделать, так что теперь самое интересное, когда появляются цифровые штангенциркули!

Цифровые штангенциркули — невероятный инструмент для получения точных цифр. Если вы все сделаете правильно, вам нужно будет смоделировать и распечатать только один раз. Это может показаться странным, но моей любимой частью всего этого проекта было измерение технических характеристик модели. Это восходит к моей любви к черчению, когда я хотел стать архитектором (2002); пока я не понял, что люди больше не используют T-Square и пудру.

Смоделировав корпус на основе моих измерений, я прогнал его на своем 3D-принтере. Очень приятно наблюдать, как он строится слой за слоем и идеально подходит.

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

Одной из лучших частей этой сборки является то, насколько точно USB-порт совмещен с отпечатком. Это может показаться не таким уж большим делом, но это расстраивает, когда все детали разложены, а порт находится всего на миллиметр выше или ниже отверстия.

На этом этапе я пересмотрел дизайн настольного приложения в Photoshop и начал интегрировать его в C#. У него есть несколько дополнительных опций, таких как срабатывание клавиш, переключение и т. д. На кнопках есть приятный световой эффект, при этом активный свет будет подсвечиваться и на самих кнопках.

Я добавил некоторый код для подключения настольного приложения к последовательному порту моего устройства, прослушивания ввода-вывода, а затем трансляции ключевых событий. Сейчас он подключается напрямую к COM9, что является преимуществом его статуса MVP.

public void SetupPort() {
    sp = new SerialPort("COM9");
    sp.BaudRate = 9600;
    sp.Parity = Parity.None;
    sp.StopBits = StopBits.One;
    sp.DataBits = 8;
    sp.Handshake = Handshake.None;
    sp.DataReceived += new SerialDataReceivedEventHandler(Handle_OnDataReceived);
    sp.ErrorReceived += new SerialErrorReceivedEventHandler(Handle_OnDataError);
sp.Open();
}

Вот и все. Теперь я могу использовать ногу, чтобы включать/отключать функцию «нажми и говори» во время игр, освобождая руки. У меня больше нет оправдания тому, почему в меня постоянно стреляют.

Вот как это работает: