
Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-23 15:04



У моего сына был вечер ретро-видеоигр на свой день рождения, и утром я решил посмотреть, смогу ли я сделать из своего тайника пару USB-контроллеров для игры в паддл для Pong с помощью 3D-принтера и электроники. Хотя мне удалось заставить их в основном работать вовремя, люди в конце концов были слишком заняты другими играми для Pong.
Контроллеры можно использовать для Pong с эмулятором уровня схемы DICE или с моей довольно точной версией pygame, для игр Atari 2600 с эмулятором и для функциональности, подобной Etch-a-Sketch, с программой рисования, такой как Tux Paint.
Есть три переключаемых режима:
- Эмуляция манипулятора Stelladaptor: они должны работать со всем программным обеспечением эмуляции Atari 2600, которое поддерживает Stelladaptor; в режиме Stelladaptor лопасти работают как двухкоординатный двухкнопочный джойстик, каждое из которых управляет одной осью и одной кнопкой.
- эмуляция двойного джойстика: каждое весло функционирует как джойстик с одной кнопкой (при этом движение весла переводится в движение по обеим осям джойстика)
- мышь: каждый манипулятор управляет одним направлением движения для абсолютной мыши, а кнопки являются кнопками мыши; вместе с программой рисования вы можете получить высокотехнологичный прибор, похожий на Etch-a-Sketch.
Запасы
Тебе понадобится:
- stm32f103c8t6 синяя таблетка
- 2x линейный потенциометр (я бы рекомендовал 20K-100K)
- 2x микровыключателя шириной 12 мм с кнопкой
- 3д принтер
- разные (нить, провода, припой, паяльник, горячий клей)
Шаг 1. Подготовьте плату и среду Arduino


- Припаяйте шесть выводов к середине платы stm32f103c8t6.
- Проверьте сопротивление между A12 и 3,3 В. Он должен быть 1,5 КБ для полной совместимости с USB. На многих платах вместо этого стоит 10К. Если у вас один из них, в идеале припаяйте резистор 1,8 кОм от A12 к 3,3 В, хотя вам может повезти и ваши компьютеры будут работать с 10 кОм.
- Установите загрузчик. Инструкции приведены в Шаге 2 данного Руководства. Следует обратить внимание на то, какой размер флэш-памяти сообщает STM Demonstrator. Если это 32 КБ, у вас поддельный stm32f103c8, который, вероятно, является переименованным stm32f103c6. Этот проект все еще должен работать с этим, но обратите внимание, что у вас есть поддельная доска для будущего шага.
- Установите Arduino, Arduino Zero и ядро на основе libmaple Роджера, следуя инструкциям в шаге 3 инструкции, которую вы использовали на предыдущем шаге. Игнорируйте инструкции библиотеки на этом шаге.
- Загрузите последнюю версию моей библиотеки USB Composite и распакуйте ее в папку Arduino / Libraries.
- Загрузите мой эскиз лопастных контроллеров и распакуйте его в папку Arduino.
- В Arduino перейдите в Инструменты | Доска | Стандартная серия STM32F103C, если у вас нет поддельной платы c6, и в этом случае выберите вместо нее Generic STM32F103C6 / поддельный STM32F103C8. Если вы не уверены, какой у вас есть, на самом деле безопаснее выбрать поддельный вариант.
Шаг 2. Загрузите

Подключите плату к USB-адаптеру вашего компьютера, загрузите эскиз лопастного контроллера и нажмите кнопку «Загрузить» (стрелка вправо). Если все пойдет хорошо, скетч должен быть загружен, и плата должна появиться на вашем компьютере в виде двухкоординатного двухкнопочного джойстика под названием «Stelladaptor». В Windows вы можете проверить это с помощью Windows-R, joy.cpl [ввод].
Конечно, это ничего не даст, пока вы не соберете остальное оборудование.
Шаг 3. Распечатайте

- Загрузите файлы stl и / или scad со страницы моей Thingiverse для этого проекта. Обратите внимание, что рукоятка лопасти здесь изменена.
- Если ширина корпуса вашего микропереключателя отличается от 12 мм, вам необходимо настроить параметр ширины кнопки в файле paddlemain-standalone.scad. Вы можете сделать это в OpenSCAD или в настройщике Thingiverse.
- Возможно, вам придется настроить измерения в файле paddleknob.scad, чтобы они соответствовали вашему потенциометру.
-
Распечатайте эти файлы (сделайте только одну копию файлов "2x", если вам нужна только одна ракетка). Я использовал PLA, но ABS тоже должен работать.
- 2x paddlemain.stl
- 2x paddleknob.stl
- 1x paddleconverter.stl
- 1x pcbholdernarrower.stl
- 2x buttoncap110.stl (необязательно)
- 1x 12.stl (необязательно; распечатайте другим цветом и приклейте, чтобы маркировать две лопасти)
Шаг 4: Подключение



Вам нужно будет провести четыре провода от платы stm32f103c к каждому лопастному контроллеру. Для этих проводов можно использовать старые USB-шнуры. У меня были хорошие отдельные провода от кабеля Ethernet, которые я связал термоусадочной пленкой.
Каждая лопасть имеет один микровыключатель и один потенциометр. С помощью мультиметра определите пару соседних (не диагональных) контактов микровыключателя, которые подключаются / отключаются нажатием кнопки. Я обозначу эти контакты S1 и S2 на схеме. Три контакта на потенциометре я пометил P1, P2 и P3 сверху вниз, если смотреть снизу потенциометра, при этом контакты должны быть направлены вправо.
Протяните четыре провода от платы через отверстие на боковой стороне корпуса лопасти (paddlemain.stl).
При подключении проводов к микропереключателю, сначала протолкните провода через отверстия в боковой части корпуса лопастей и припаяйте к переключателю, пока переключатель находится на внешней стороне корпуса. Затем потяните переключатель к корпусу, чтобы контакты и присоединенные провода вошли в отверстия. Отрезаю ненужные булавки.
Обе лопасти:
- P1 - S1
- P1 на плату 3,3 В (3,3)
- P3 на плату GND (G)
Весло 1:
- P2 на плату A1
- S2 на плату A2
Весло 2:
- P2 на борт A3
- S2 на борт A4
Теперь проверьте соединения, подключившись к компьютеру и используя программу тестирования джойстика. В Windows, Windows-R, joy.cpl [ввод], выберите Stelladaptor, нажмите «Свойства». Paddle 1 должен управлять осью X и первой кнопкой; Весло 2 должно управлять осью Y и второй кнопкой.
Шаг 5: Окончательная сборка




Микровыключатели можно приклеить (за меня это сделал горячий клей) в их местах сбоку на корпусе весла. Колпачки для пуговиц можно защелкнуть, добавив немного горячего клея для устойчивости.
Потенциометр прикрепляется к большому отверстию в верхней части лопастной коробки. Ручка должна скользить и прилипать. При необходимости увеличьте отверстия с помощью дрели. Нажмите на нижнюю крышку, если хотите, добавьте немного горячего клея.
Синяя таблеточная плата помещается внутри ползунка для печатной платы, который затем прикручивается к нижней части коробки преобразователя, у которой также есть крышка, которая может ее закрыть.
Я добавил немного Shoe Goo там, где провода соединяются с корпусом, чтобы защитить провода. И наклеил на лопасти метки «1» и «2».
Шаг 6: Режимы работы


Лопатки имеют три режима работы. Вы можете переключить режим работы, нажав определенную комбинацию кнопок при подключении их к USB-порту, отпуская, когда светодиоды платы перестанут мигать. Как только вы переключите режим работы, он будет сохранен во флэш-памяти и останется там до тех пор, пока вы не измените его в следующий раз. (Итак, если вы не хотите менять режим, не нажимайте никаких кнопок при подключении лопастей к USB-порту.) Вот варианты:
- Только левая кнопка-манипулятор: один двухкоординатный двухкнопочный джойстик, при этом каждая ось и каждая кнопка управляются одним манипулятором. Более того, лопасти идентифицируются как Stelladaptor, USB-адаптер снятого с производства для контроллеров Atari 2600, поэтому эмуляторы Atari 2600, такие как Stella и Z26, которые совместимы со Stelladapter, должны работать безупречно.
- Обе кнопки-манипулятора: каждый манипулятор представляет собой отдельный джойстик. Джойстик имеет одну рабочую кнопку, и при повороте лопасти джойстик перемещается по диагонали, поэтому для лопасти работает либо ось X, либо ось Y.
- Только правая кнопка-манипулятор: манипуляторы отображаются как двухкнопочная абсолютная мышь. Теперь вы можете использовать это так же, как Etch-a-Sketch с программой рисования.
Шаг 7: Понг


Понг был великой оригинальной игрой в весло. Я рекомендую исходную версию, потому что клоны часто не включают в себя все прекрасные тонкие функции, такие как изменение скорости при повторных ударах, изменение угла в зависимости от части ракетки, которая ударяет по мячу, или тонко, но не легко предсказуемого положения. подачи после промаха. Подробный анализ оригинала см. Здесь.
Один из лучших способов играть в понг - использовать эмулятор уровня схемы DICE, если ваш компьютер достаточно быстр, чтобы использовать его на полной скорости. (У меня ноутбук с Windows, но Raspberry PI 3+ работает слишком медленно.) Я рекомендую версию 0.8.
Если вы используете режим Stelladaptor в лопастях, перейдите в Настройки | Сконфигурируйте входы… в DICE и выберите «Джойстик 1» и «Абсолютный» для манипулятора игрока 1, а также установите горизонтальное и вертикальное положение для оси X Joy 1. Затем сделайте то же самое для ракетки Player 2, за исключением оси Y.
Если ваш компьютер слишком медленный для DICE, я сделал версию Python3 + pygame, время и функциональность которой должны быть очень близки к исходному Pong (я благодарен доктору Хьюго Холдену за помощь в этом отношении).
Рекомендуемые:
Как очистить практически любой игровой контроллер: 5 шагов

Как очистить почти любой игровой контроллер: у меня есть несколько контроллеров Logitech Dual Action, которые я использую для эмулятора Raspberry Pi, для которых я скоро загрузлю инструкцию. При попытке использовать этот контроллер (он хранился в хранилище для больше года) большинство кнопок на го
Автоматический игровой контроллер Google T Rex с использованием Arduino: 7 шагов

Автоматический игровой контроллер Google T Rex с использованием Arduino: давайте построим его
Игровой контроллер Arduino: 5 шагов

Игровой контроллер Arduino: игровой контроллер - это устройство, используемое для ввода данных в видеоигре, чтобы персонаж или объект двигались. Дизайн и функциональность игрового контроллера просты и определенно подарят вам потрясающие впечатления от игры. И это будет более инва
Контроллер DIY на базе Arduino - Игровой контроллер Arduino PS2 - Игра в Tekken с DIY-геймпадом Arduino: 7 шагов

Контроллер DIY на базе Arduino | Игровой контроллер Arduino PS2 | Игра в Tekken с помощью DIY Arduino Gamepad: Здравствуйте, ребята, играть в игры всегда весело, но играть с вашим собственным игровым контроллером DIY еще веселее. Поэтому мы создадим игровой контроллер с использованием arduino pro micro в этих инструкциях
USB-игровой контроллер на тренажере: 8 шагов (с изображениями)

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