- Komponenter krävs
- Arduino Leonardo
- Dual Axis XY Joystick Module
- Kretsschema
- Kod och arbetsförklaring
Vi har tidigare kopplat joystick med Arduino UNO för att förstå hur den fungerar och kontrollerade fyra lysdioder på vänster, höger, upp och ner rörelse. I detta projekt kommer vi att använda samma joystick som Gamepad eller spelkontroll för att spela alla datorspel som kräver vänster, höger, upp och ner rörelser. För att spela spel som kräver fler kontrollalternativ kan två eller flera joysticks användas. Här kommer vi att använda Arduino Leonardo för att ansluta Joystick som spelkontroll. Arduino Leonardo har fördel över Uno att vi kan installera USB-drivrutiner på den och det kan detekteras som mus, tangentbord eller joystick av datorn när den är ansluten.
Komponenter krävs
- Arduino Leonardo
- Dual Axis XY Joystick Module
- Arduino IDE
- Anslutande ledningar
Arduino Leonardo
För detta projekt använder vi Arduino Leonardo, det är ett mikrokontrollkort baserat på ATmega32u4. Den har 20 digitala in- / utgångsstift (varav 7 kan användas som PWM-utgångar och 12 som analoga ingångar), en 16 MHz kristalloscillator, en mikro-USB-anslutning, ett strömuttag, ett ICSP-huvud och en återställningsknapp. Den innehåller allt som behövs för att stödja mikrokontrollern; anslut den bara till en dator med en USB-kabel eller strömförsörj den med en AC-till-DC-adapter eller batteri för att komma igång.
Leonardo skiljer sig från alla föregående kort eftersom ATmega32u4 har inbyggd USB-kommunikation, vilket eliminerar behovet av en sekundär processor. Detta gör att Leonardo kan visas för en ansluten dator som en mus och ett tangentbord, förutom en virtuell (CDC) seriell / COM-port.
Tekniska specifikationer
Microcontroller | ATmega32u4 |
Driftspänning | 5V |
Ingångsspänning (rekommenderas) | 7-12V |
Ingångsspänning (gränser) | 6-20V |
Digitala I / O-stift | 20 |
PWM-kanaler | 7 |
Analoga ingångskanaler | 12 |
DC-ström per I / O-stift | 40 mA |
Likström för 3,3V stift | 50 mA |
Flashminne | 32 KB (ATmega32u4) varav 4 KB används av bootloader |
SRAM | 2,5 kB (ATmega32u4) |
EEPROM | 1 kB (ATmega32u4) |
Klockfrekvens | 16 MHz |
Längd | 68,6 mm |
Bredd | 53,3 mm |
Vikt | 20 g |
PIN-utreferens
Dual Axis XY Joystick Module
Joysticks finns i olika former och storlekar. En typisk joystickmodul visas i figuren nedan. Denna joystick-modul tillhandahåller vanligtvis analoga utgångar och de utgångsspänningar som tillhandahålls av den här modulen ändras i enlighet med den riktning vi rör den i. Och vi kan få rörelseriktningen genom att tolka dessa spänningsförändringar med hjälp av någon mikrokontroller. Tidigare kopplade vi joystick med olika mikrokontroller:
- Gränssnitts joystick med Arduino
- Gränssnittsspak med Raspberry Pi
- Gränssnitts joystick med PIC Microcontroller
- Joystickgränssnitt med AVR Microcontroller
Denna joystickmodul har två axlar som du kan se. De är X- och Y-axlar. Varje axel av JOY STICK är monterad på en potentiometer eller pot. Dessa krukors mittpunkter drivs ut som Rx och Ry. Så Rx och Ry är variabla punkter till dessa krukor. När joysticken är i beredskap fungerar Rx och Ry som spänningsdelare.
När joysticken flyttas längs den horisontella axeln ändras spänningen vid Rx-stiftet. På samma sätt, när den flyttas längs den vertikala axeln, ändras spänningen vid Ry-stiftet. Så vi har fyra riktningar av joystick på två ADC-utgångar. När pinnen flyttas går spänningen på varje stift hög eller låg beroende på riktning.
Kretsschema
Denna Arduino Joystick Game Controller kräver anslutningar mellan Arduino och Joystick enligt följande:
Kod och arbetsförklaring
Komplett kod med en demo- video ges i slutet; här förklarar vi några viktiga delar av det.
För det första måste vi initiera tangentbordets bibliotek
#omfatta
Nästa i nedanstående kod har vi initialiserat X- och Y-axeln för joystickmodulen för den analoga stift A0 respektive A1.
const int X_pin respektive const int Y_pin
Det analoga värdet på VRX-stiftet läses av och om värdet är 1023 ges kommandot för "upp" och om värdet är 0 så ges kommandot för "ned".
På samma sätt läses det analoga värdet på VRY-stiftet och om värdet är 1023 ges kommandot för "höger" och om värdet är 0 så ges kommandot för "vänster".
Joystick har också en tryckknapp ovanpå så att den här knappen (SW) också läses och om knappen trycks in kommer värdet att vara 0 då kommandot för "enter" ges.
Slutligen bränna koden i Arduino och anslut Arduino till datorn.
Kontrollera sedan " Enheter och skrivare" på din kontrollpanel, du kommer att kunna se " Arduino Leonardo" under enhetsavsnittet som visas i bilden nedan. Nu är du redo att spela med joysticken.
Vi kan styra alla spelkontroller med denna joystick. Joystick har två potentiometrar inuti, en är för X-axelrörelse och en annan för Y-axelrörelse. Varje potentiometer får 5v från Arduino. Så när vi flyttar joysticken kommer spänningsvärdet att ändras och det analoga värdet vid analoga stift A0 och A1 kommer också att ändras. Så joysticken fungerar som en gamepad.
Så detta är hur en vanlig joystick kan omvandlas till en spelkontroll med Arduino Leonardo och kan användas för att spela spel med alla kontroller för att flytta åt vänster, höger, upp och ner. Som sagt earliar kan mer än en joystick anslutas för att få fler kontroller än dessa fyra grundläggande funktioner.