Inhoudsopgave:

USB Paddle Game Controller - Ajarnpa
USB Paddle Game Controller - Ajarnpa

Video: USB Paddle Game Controller - Ajarnpa

Video: USB Paddle Game Controller - Ajarnpa
Video: USB Adapter for Atari Paddles and Joysticks with 4 ports Retro 2024, November
Anonim
USB paddle-gamecontroller
USB paddle-gamecontroller
USB paddle-gamecontroller
USB paddle-gamecontroller
USB paddle-gamecontroller
USB paddle-gamecontroller

Mijn zoon had een retro-videogame-avond voor zijn verjaardag, en op de ochtend van de dag besloot ik te kijken of ik een paar USB-paddle-gamecontrollers voor Pong kon maken met behulp van een 3D-printer en elektronica uit mijn voorraad. Hoewel ik ze in principe op tijd aan het werk kreeg, hadden mensen het uiteindelijk te druk met andere spellen voor Pong.

De controllers kunnen worden gebruikt voor Pong met de DICE-emulator op circuitniveau of met mijn redelijk nauwkeurige pygame-versie, voor Atari 2600-games met een emulator en voor Etch-a-Sketch-achtige functionaliteit met een tekenprogramma zoals Tux Paint.

Er zijn drie schakelbare modi:

  • Stelladaptor paddle-emulatie: ze zouden moeten werken met alle Atari 2600-emulatiesoftware die de Stelladaptor ondersteunt; in de Stelladaptor-modus functioneren de paddles als joystick met twee assen en twee knoppen, waarbij elke paddle één as en één knop bedient
  • dubbele joystick-emulatie: elke peddel functioneert als een joystick met één knop (waarbij de peddelbeweging wordt vertaald in beweging op beide joystickassen)
  • muis: elke paddle bestuurt één bewegingsrichting voor een absolute muis, en de knoppen zijn muisknoppen; samen met een schilderprogramma kun je een hightech apparaat krijgen dat lijkt op een Etch-a-Sketch.

Benodigdheden

Je zal nodig hebben:

  • stm32f103c8t6 blauwe pil
  • 2x lineaire potentiometer (ik zou 20K-100K aanraden)
  • 2x 12 mm brede microschakelaar met knop
  • 3D-printer
  • diversen (filament, draden, soldeer, soldeerbout, hete lijm)

Stap 1: Bereid de Board- en Arduino-omgeving voor

Bord- en Arduino-omgeving voorbereiden
Bord- en Arduino-omgeving voorbereiden
Bord- en Arduino-omgeving voorbereiden
Bord- en Arduino-omgeving voorbereiden
  1. Soldeer de zes header-pinnen in het midden van je stm32f103c8t6-bord.
  2. Controleer de weerstand tussen A12 en 3,3V. Het zou 1,5K moeten zijn voor een volledigere USB-compatibiliteit. Veel boards hebben in plaats daarvan 10K. Als jij er een van bent, soldeer dan idealiter een 1,8K-weerstand van A12 naar 3,3V, hoewel je misschien geluk hebt en je computers met de 10K laat werken.
  3. Installeer een bootloader. Er zijn instructies in stap 2 van dit Instructable. Een ding om op te merken is wat de flitsgrootte is die door de STM Demonstrator wordt gerapporteerd. Als het 32K is, heb je een nep stm32f103c8 die waarschijnlijk een opnieuw gelabeld stm32f103c6 is. Dit project zou daar nog steeds mee moeten werken, maar noteer dat je het nepbord hebt voor een toekomstige stap.
  4. Installeer Arduino, Arduino Zero en Roger's op libmaple gebaseerde kern volgens de instructies in stap 3 van de Instructable die u in de vorige stap hebt gebruikt. Negeer de bibliotheekinstructies in die stap.
  5. Download de nieuwste versie van mijn USB Composite-bibliotheek en pak deze uit in uw Arduino/Libraries-map.
  6. Download de schets van mijn paddlecontrollers en pak deze uit in je Arduino-map.
  7. Ga in Arduino naar Extra | Bord | Generieke STM32F103C-serie, tenzij je het nep-c6-bord hebt, in dat geval kies je in plaats daarvan voor Generiek STM32F103C6/nep STM32F103C8. Als je niet zeker weet welke je hebt, is het kiezen van de nepoptie eigenlijk veiliger.

Stap 2: Uploaden

Uploaden
Uploaden

Sluit het bord aan op de USB-adapter van uw computer, laad de schets van de paddlecontroller en klik op de knop Uploaden (pijl naar rechts). Als alles goed gaat, moet de schets worden geüpload en moet het bord op je computer verschijnen als een joystick met twee assen en twee knoppen, genaamd "Stelladaptor". In Windows kun je dit verifiëren met Windows-R, joy.cpl[enter].

Dit zal natuurlijk niets doen totdat je de rest van de hardware hebt gemonteerd.

Stap 3: Afdrukken

Afdrukken
Afdrukken
  1. Download de stl- en/of scad-bestanden van mijn Thingiverse-pagina voor dit project. Houd er rekening mee dat de paddle-knop vanaf hier wordt gewijzigd.
  2. Als de breedte van de behuizing van uw microschakelaar afwijkt van 12 mm, moet u de parameter voor de knopbreedte aanpassen in het bestand paddlemain-standalone.scad. Dat kan in OpenSCAD of in de Thingiverse Customizer.
  3. Mogelijk moet u de metingen in het bestand paddleknob.scad aanpassen aan uw potentiometer.
  4. Druk deze bestanden af (maak slechts één kopie van de "2x"-bestanden als u slechts één peddel wilt). Ik heb PLA gebruikt, maar ABS zou ook goed moeten werken.

    • 2x paddlemain.stl
    • 2x peddelknop.stl
    • 1x peddelconverter.stl
    • 1x pcbhoudersmaller.stl
    • 2x knoopkap110.stl (optioneel)
    • 1x 12.stl (optioneel; print in een andere kleur en lijm op om de twee peddels te labelen)

Stap 4: Bedrading

Bedrading
Bedrading
Bedrading
Bedrading
Bedrading
Bedrading

U moet vier draden van het stm32f103c-bord naar elke paddle-controller leiden. U kunt voor deze draden oude USB-kabels gebruiken. Ik had toevallig mooie losse draden van een ethernetkabel die ik samenbond met krimpfolie.

Elke paddle heeft een microschakelaar en een potentiometer. Gebruik een multimeter om een paar aangrenzende (niet diagonale) pinnen op de microschakelaar te identificeren die zijn aangesloten/losgekoppeld door op de knop te drukken. Ik zal deze pinnen S1 en S2 in het diagram labelen. De drie pinnen op de potentiometer heb ik P1, P2 en P3 gelabeld van boven naar beneden, kijkend vanaf de onderkant van de potentiometer, met pinnen naar rechts.

Duw de vier draden van het bord door het gat aan de zijkant van de paddle-behuizing (paddlemain.stl).

Bij het aansluiten van draden op de microswitch, duwt u eerst de draden door de gaten in de zijkant van de paddle-behuizing en soldeert u deze aan de switch terwijl de switch aan de buitenkant van de behuizing ligt. Trek vervolgens de schakelaar naar de behuizing, zodat de pinnen en aangesloten draden in de gaten passen. Ik heb de onnodige pinnen afgesneden.

Beide peddels:

  • P1 tot S1
  • P1 aan boord van 3.3V (3.3)
  • P3 aan boord van GND (G)

Peddel 1:

  • P2 aan boord van A1
  • S2 aan boord van A2

Peddel 2:

  • P2 aan boord van A3
  • S2 aan boord van A4

Test nu de verbindingen door verbinding te maken met uw computer en een joystick-testprogramma te gebruiken. Op windows, Windows-R, joy.cpl[enter], selecteer Stelladaptor, klik op Eigenschappen. Paddle 1 moet de X-as en de eerste knop besturen; paddle 2 moet de Y-as en de tweede knop bedienen.

Stap 5: Eindmontage

Eindmontage
Eindmontage
Eindmontage
Eindmontage
Eindmontage
Eindmontage
Eindmontage
Eindmontage

De microschakelaars kunnen worden gelijmd (hete lijm deed het werk voor mij) op hun locaties aan de zijkant van de paddlebox. Knoopdoppen kunnen worden vastgeklikt, met een beetje hete lijm voor stabiliteit.

De potentiometer wordt bevestigd aan het grote gat in de bovenkant van de paddlebox. De knop moet erop schuiven en blijven plakken. Vergroot de gaten met een boor indien nodig. Duw de onderklep erop en voeg desgewenst een beetje hete lijm toe.

Het blauwe pillenbord past in de PCB-schuif, die vervolgens aan de onderkant van de converterdoos wordt geschroefd, die ook een deksel heeft dat hem kan afdekken.

Ik heb een beetje Shoe Goo toegevoegd waar draden de behuizing ontmoeten om de draden te beschermen. En ik plakte op "1" en "2" labels op de peddels.

Stap 6: Bedrijfsmodi

Bedrijfsmodi
Bedrijfsmodi
Bedrijfsmodi
Bedrijfsmodi

De peddels hebben drie standen. U kunt de werkingsmodus wijzigen door op een bepaalde combinatie van knoppen te drukken terwijl u ze op een USB-poort aansluit en loslaat zodra de led's op het bord stoppen met knipperen. Zodra u de werkingsmodus wijzigt, wordt deze opgeslagen in het flashgeheugen en blijft deze behouden tot u deze de volgende keer wijzigt. (Dus als u de modus niet wilt wijzigen, drukt u op geen enkele knop terwijl u de paddles op een USB-poort aansluit.) Dit zijn de opties:

  • Alleen linker paddle-knop: één joystick met twee assen en twee knoppen, waarbij elke as en knop wordt bestuurd door één paddle. Bovendien identificeren de paddles zich als een Stelladaptor, een stopgezette USB-adapter voor Atari 2600-controllers, en dus zouden Atari 2600-emulators zoals Stella en Z26 die compatibel zijn met Stelladapter perfect moeten werken.
  • Beide paddle-knoppen: Elke paddle toont een afzonderlijke joystick. De joystick heeft één bedieningsknop en door aan de peddel te draaien, beweegt de joystick diagonaal, zodat de X- of de Y-as voor de peddel werkt.
  • Alleen rechter paddle-knop: de paddles worden weergegeven als een absolute muis met twee knoppen. U kunt dit nu op dezelfde manier gebruiken als een Etch-a-Sketch met een tekenprogramma.

Stap 7: Pong

Pong
Pong
Pong
Pong

Pong was het geweldige originele paddle-spel. Ik raad de originele versie aan, omdat klonen vaak niet alle mooie subtiele functionaliteit bevatten, zoals de veranderingen in snelheid bij herhaalde slagen, de hoek verandert afhankelijk van het deel van de peddel dat de bal raakt, of de subtiel maar niet gemakkelijk voorspelbare positie van de service na een misser. Voor een zorgvuldige analyse van het origineel, zie hier.

Een van de beste manieren om Pong te spelen is met de DICE-emulator op circuitniveau als je computer snel genoeg is om hem op volle snelheid te gebruiken. (Mijn Windows-laptop wel, maar de Raspberry PI 3+ is veel te traag.) Ik raad versie 0.8 aan.

Als u de Stelladaptor-modus in de paddles gebruikt, gaat u naar Instellingen | Configureer Inputs… in DICE en kies Joystick 1 en Absolute voor Player 1 Paddle, en stel zowel Horizontaal als Verticaal in op Joy 1 X-Axis. Doe dan hetzelfde voor Player 2 Paddle, behalve met Y-Axis.

Als je computer te traag is voor DICE, heb ik een Python3+pygame-versie gemaakt waarvan de timing en functionaliteit heel dicht bij de originele Pong moeten liggen (ik ben dankbaar voor de hulp van Dr. Hugo Holden in dit opzicht).

Aanbevolen: