Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

DIY USB-геймпад на Arduino: собственный высокопроизводительный контроллер

Компоненты и материалы

Инструменты

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

О проекте

Проект DIY Gaming USB Controller — дешевой USB-геймпад на базе ATmega32U4 с кнопками и (в следующей версии) аналоговыми стиками. Подходит для игр вроде NFS, GTA, Half-Life, Little Fighter 2 и т.д.

Два форм-фактора: V1 — раскладка PS1/SNES (только кнопки), V2 — раскладка Xbox с аналоговыми стиками (в разработке). Здесь описывается V1.

DIY USB-геймпад на Arduino: собственный высокопроизводительный контроллер

Схема и печатная плата

12 кнопок в pull-down конфигурации к пинам Pro Micro. Схема проверена на макетке, затем спроектирована PCB в OrCad Cadence. Маска верхнего слоя печатается на глянцевой бумаге, переносится утюгом на фольгированный текстолит (метод LUT), травится в хлорном железе, сверлятся отверстия.

DIY USB-геймпад на Arduino: собственный высокопроизводительный контроллер
DIY USB-геймпад на Arduino: собственный высокопроизводительный контроллер

Корпус

Корпус спроектирован в Fusion 360 и напечатан на 3D-принтере. Все компоненты устанавливаются внутрь.

DIY USB-геймпад на Arduino: собственный высокопроизводительный контроллер

Код (загрузка в Pro Micro)

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

#include <Keyboard.h>

int WPin = 2;    // UP
int SPin = 3;    // DOWN
int APin = 4;    // LEFT
int DPin = 5;    // RIGHT
int UPLpin = 7;  // Q (upper left)
int UPRpin = 9;  // E (upper right)
int Xpin = 14;   // X
int Apin = 10;   // I
int Ypin = 15;   // Y
int Bpin = 16;   // B

void setup() {
  pinMode(WPin, INPUT_PULLUP);
  pinMode(SPin, INPUT_PULLUP);
  pinMode(APin, INPUT_PULLUP);
  pinMode(DPin, INPUT_PULLUP);
  pinMode(UPLpin, INPUT_PULLUP);
  pinMode(UPRpin, INPUT_PULLUP);
  pinMode(Xpin, INPUT_PULLUP);
  pinMode(Apin, INPUT_PULLUP);
  pinMode(Ypin, INPUT_PULLUP);
  pinMode(Bpin, INPUT_PULLUP);
  Keyboard.begin();
}

void loop() {
  if (digitalRead(WPin) == LOW) { Keyboard.write('W'); delayMicroseconds(1); }
  if (digitalRead(SPin) == LOW) { Keyboard.write('S'); delayMicroseconds(1); }
  if (digitalRead(APin) == LOW) { Keyboard.write('A'); delayMicroseconds(1); }
  if (digitalRead(DPin) == LOW) { Keyboard.write('D'); delayMicroseconds(1); }
  if (digitalRead(UPLpin) == LOW) { Keyboard.write('q'); delayMicroseconds(1); }
  if (digitalRead(UPRpin) == LOW) { Keyboard.write('e'); delayMicroseconds(1); }
  if (digitalRead(Xpin) == LOW) { Keyboard.write('x'); delayMicroseconds(1); }
  if (digitalRead(Apin) == LOW) { Keyboard.write('i'); delayMicroseconds(1); }
  if (digitalRead(Ypin) == LOW) { Keyboard.write('y'); delayMicroseconds(1); }
  if (digitalRead(Bpin) == LOW) { Keyboard.write('b'); delayMicroseconds(1); }
}

Тестирование

  1. Откройте Блокнот, нажимайте кнопки — должны появляться соответствующие символы.
  2. Или используйте любой онлайн-тестер клавиатуры.
  3. Если всё работает — запускайте игру и играйте!

Дальнейшие улучшения (V2)

Оставайтесь на связи, задавайте вопросы в комментариях!

Производственный процесс

  1. Создание игры в реальном времени на Arduino Nano с гироскопом MPU-6050 и OLED-дисплеем
  2. Цифровые кости на Arduino: генератор случайных чисел с LCD-дисплеем и кнопкой
  3. Tetris на Arduino Nano: самостоятельная сборка 16×8 LED-матрицы на 74HC595
  4. Умная бутылка для воды на Arduino: мониторинг и напоминания в реальном времени
  5. Pixel Chaser: игра на один тап с NeoPixel Ring и Arduino Nano
  6. Arduino Home Controller с Alexa: умный дом голосовым управлением
  7. NeoPixel Matrix Pong на Arduino Nano: неоновая игра Pong на матрице 15×10
  8. Умная перчатка для перевода жестов в текст (язык жестов)
  9. 1D Pong на Arduino и ленте WS2812: пошаговое руководство
  10. Arduino DMX-512 Tester Controller – Полный набор деталей для надежного управления освещением