- Komponenter, der kræves
- Arduino Leonardo
- Dual Axis XY joystick-modul
- Kredsløbsdiagram
- Kode og arbejdsforklaring
Vi har tidligere interfacet joystick med Arduino UNO for at forstå, hvordan det fungerer og styrede fire lysdioder på sin venstre, højre, op og ned bevægelse. I dette projekt bruger vi den samme joystick som Gamepad eller spilcontroller til at spille ethvert computerspil, der kræver venstre, højre, op og ned bevægelse. For at spille spil, der kræver flere kontrolmuligheder, kan to eller flere joystick bruges. Her bruger vi Arduino Leonardo til at interface Joystick som spilcontroller. Arduino Leonardo har fordel over Uno, at vi kan installere USB-drivere på den, og den kan detekteres som mus, tastatur eller joystick af computeren, når den er tilsluttet.
Komponenter, der kræves
- Arduino Leonardo
- Dual Axis XY joystick-modul
- Arduino IDE
- Tilslutning af ledninger
Arduino Leonardo
Til dette projekt bruger vi Arduino Leonardo, det er et mikrocontrollerkort baseret på ATmega32u4. Den har 20 digitale indgangs- / udgangsstifter (hvoraf 7 kan bruges som PWM-udgange og 12 som analoge indgange), en 16 MHz krystaloscillator, en mikro-USB-forbindelse, et strømstik, et ICSP-header og en reset-knap. Den indeholder alt, hvad der er nødvendigt for at understøtte mikrocontrolleren; Tilslut det blot til en computer med et USB-kabel, eller tænd det med en AC-til-DC-adapter eller batteri for at komme i gang.
Leonardo adskiller sig fra alle foregående kort, idet ATmega32u4 har indbygget USB-kommunikation, hvilket eliminerer behovet for en sekundær processor. Dette gør det muligt for Leonardo at fremstå for en tilsluttet computer som en mus og et tastatur ud over en virtuel (CDC) seriel / COM-port.
Tekniske specifikationer
Mikrocontroller | ATmega32u4 |
Driftsspænding | 5V |
Indgangsspænding (anbefales) | 7-12V |
Indgangsspænding (grænser) | 6-20V |
Digitale I / O-pins | 20 |
PWM-kanaler | 7 |
Analoge indgangskanaler | 12 |
DC-strøm pr. I / O-pin | 40 mA |
Jævnstrøm til 3,3 V pin | 50 mA |
Glimtvis erindring | 32 KB (ATmega32u4) hvoraf 4 KB bruges af bootloader |
SRAM | 2,5 KB (ATmega32u4) |
EEPROM | 1 KB (ATmega32u4) |
Urets hastighed | 16 MHz |
Længde | 68,6 mm |
Bredde | 53,3 mm |
Vægt | 20 g |
PIN-ud-reference
Dual Axis XY joystick-modul
Joysticks fås i forskellige former og størrelser. Et typisk joystick-modul vises i nedenstående figur. Dette joystick-modul leverer typisk analoge udgange, og de udgangsspændinger, der leveres af dette modul, ændres konstant i henhold til den retning, vi bevæger det i. Og vi kan få bevægelsesretningen ved at fortolke disse spændingsændringer ved hjælp af en mikrokontroller. Tidligere interfacede vi joystick med forskellige mikrocontrollere:
- Interfacing joystick med Arduino
- Interfacing joystick med Raspberry Pi
- Interfacing joystick med PIC Microcontroller
- Joystick-grænseflade med AVR-mikrocontroller
Dette joystick-modul har to akser, som du kan se. De er X-akse og Y-akse. Hver akse af JOY STICK er monteret på et potentiometer eller potte. Midtpunkterne i disse potter køres ud som Rx og Ry. Så Rx og Ry er variable punkter i disse potter. Når joysticket er i standby, fungerer Rx og Ry som spændingsdeler.
Når joysticket bevæges langs den vandrette akse, ændres spændingen ved Rx-pin. Tilsvarende ændres spændingen ved Ry-pin, når den bevæges langs den lodrette akse. Så vi har fire retninger af joystick på to ADC-udgange. Når stokken flyttes, går spændingen på hver stift høj eller lav afhængigt af retning.
Kredsløbsdiagram
Denne Arduino Joystick Game Controller kræver forbindelser mellem Arduino og Joystick som følger:
Kode og arbejdsforklaring
Komplet kode med en demo- video gives i slutningen; her forklarer vi nogle få vigtige dele af det.
For det første skal vi initialisere tastaturbiblioteket
#omfatte
Dernæst i nedenstående kode har vi initialiseret X- og Y-aksen på joystickmodulet til henholdsvis Analog pin A0 og A1.
const int X_pin henholdsvis const int Y_pin
Den analoge værdi af VRX-stiften læses, og hvis værdien er 1023, gives kommandoen for "op", og hvis værdien er 0, gives kommandoen for "ned".
Tilsvarende læses den analoge værdi af VRY-stiften, og hvis værdien er 1023, gives kommandoen for "højre", og hvis værdien er 0, gives kommandoen for "venstre".
Joystick har også en trykknap øverst, så denne knap (SW) læses også, og hvis der trykkes på knappen, vil værdien være 0, så kommandoen for "enter" gives.
Til sidst brænder du koden i Arduino og forbinder Arduino med computeren.
Tjek derefter ' Enheder og printere' i dit kontrolpanel, du vil kunne se " Arduino Leonardo" under enhedsafsnittet som vist i billedet nedenfor. Nu er du klar til at lege med joysticket.
Vi kan styre alle spilkontroller ved hjælp af denne joystick. Joysticket har to potentiometre indeni, den ene er til X-akse-bevægelse og en anden er til Y-akse-bevægelse. Hvert potentiometer får 5v fra Arduino. Så når vi bevæger joysticket, ændres spændingsværdien, og den analoge værdi på analoge ben A0 og A1 ændres også. Så joysticket fungerer som en gamepad.
Så dette er, hvordan en normal joystick kan konverteres til en spilcontroller ved hjælp af Arduino Leonardo og kan bruges til at spille spil, der har alle kontrolelementerne til at flytte til venstre, højre, op og ned. Som fortalt earliar kan mere end en joystick være grænseflade for at få flere kontroller end disse grundlæggende fire funktioner.