INHOUDSOPGAWE:

Pak vir virtuele realiteit met behulp van Arduino: 7 stappe (met foto's)
Pak vir virtuele realiteit met behulp van Arduino: 7 stappe (met foto's)

Video: Pak vir virtuele realiteit met behulp van Arduino: 7 stappe (met foto's)

Video: Pak vir virtuele realiteit met behulp van Arduino: 7 stappe (met foto's)
Video: Avi Loeb: Consciousness, UAPs, Jacques Vallée 2024, Julie
Anonim
Pak vir virtuele realiteit met behulp van Arduino
Pak vir virtuele realiteit met behulp van Arduino

Ek het hierdie projek geskep om normale rekenaarspeletjies in volle VR te speel. Hierdie projek emuleer u bewegings om die sleutels van u sleutelbord in te hou

Voorbeeld: as u vorentoe beweeg, word die aksie om op die toets 'w' te druk nageboots.

Ek het die spel Call of Duty 4: Modern Warfare nagevolg, maar kies nie speletjies wat terugval tydens skiet nie, want dit sal die standaardposisie van die muis verander

Stap 1: Vereistes

Vereistes is-

Daar is 'n lys vol dinge wat u nodig het om hierdie pak te maak

Raak sensors-5

Force sensor-1

GPU 6050 - 4

(of)

GPU 6050 - 2 en versnellingsmeter - 2

Vr bril

Vr -geaktiveerde telefoon

Rekenaar

WiFi -hotspot

'N Speelgoedgeweer

'N PC-speletjie (ek het Call of Duty- Modern Warfare 1 gebruik)

Broodborddrade (manlik-vroulik)

ARDUINO LEONARDO-2

Auton Sheild - 2

Kragbron (lipo)

Reënboog drade

Stap 2: HARDWARE

HARDWARE
HARDWARE
HARDWARE
HARDWARE
HARDWARE
HARDWARE

*herlaai -speld, skietpennetjie, nagvisie -speld, granaatspeld, wapenveranderingspeld is raaksensors. aim_pin is kragsensor en die muis word deur MPU6050 nagevolg, ander sensors is versnellingsmeter (postuur, beweging1 en 2)

1.1) VERKOOP

SOLDER MPU 6050, versnellingsmeter, aanraaksensor en kragsensor met drade

1.2) BEDRADING

Vir MPU 6050-

Speld 2- SDA

Speld 3- SCL

GND - GND

5v - PWR/VCC

Vir beweging_speld1-

Speld A1- x-as

GND-GND

5v - PWR/VCC

Vir beweging_pin2-

Speld A2- x-as

GND-GND

5v - PWR/VCC

Vir postuur_pen-

Speld A0- x-as

GND-GND

5v - PWR/VCC

vir wapenpen -

sig-5v

GND-GND

5v - PWR/VCC

Vir herlaai_pin -

pen 12 - 5v

GND-GND

5v - PWR/VCC

Vir Nightvision_pin -

pen 10 - 5v

GND-GND

5v - PWR/VCC

Vir shoot_pin -

Speld 7 - 5v

GND-GND

5v - PWR/VCC

Vir aim_pin -

Speld 8 - 5v

5v - PWR/VCC

1.3) VERKOOPDRAADE

Soldeer die broodborddrade met die reënboogdrade

1.4) ISOLASIE

Plak die drade vas met die isolasieband op die plek waar u gesoldeer het om kortsluitings te vermy

Stap 3: Sagteware

SAGTEWARE
SAGTEWARE
SAGTEWARE
SAGTEWARE

Ek het 'n app genaamd 'Remotr' van Play Store gebruik om die video van die skootrekenaar na die telefoon te gooi

2.1) REMOTR-

Installeer die REMOTR -toepassing op u rekenaar en skep 'n rekening

Hier is die skakel-

remotrapp.com/#download

Installeer REMOTR -app op u slimfoon

2.2) VIDEO STREAMING

Koppel eers die rekenaar en dieselfde WiFi -netwerk aan en voer u REMOTR -rekening in op beide toestelle

voeg nou die spel wat u wil stroom handmatig by in die sagteware

nou wys die app die rekenaar terwyl die admin daarop klik om te begin stroom

Aktiveer die VR -modus op u slimfoon om in VR te stroom

As u dit nie kan verstaan nie, kyk na hierdie skakel vir gedetailleerde inligting

remotrapp.com/en/howto

Stap 4: HOOFKODE

Die kode vir hierdie projek is nie moeilik of kompleks nie, maar lank

Hier is die kode, kopieer dit en plak dit in u arduino -lêer

ARDUINO

LEONARDO Muis-

Ek het Gabry295 verwys. Hierdie muis kode is gebaseer op sy kop Muis instrueerbaar

#insluit

#insluit

#insluit

#insluit

int aim_pin;

int shoot_pin;

MPU6050 mpu;

int16_t byl, ay, az, gx, gy, gz;

int vx, vy;

ongeldige opstelling () {

Serial.begin (9600);

Muis.begin ();

Wire.begin ();

mpu.initialize ();

as (! mpu.testConnection ()) {

terwyl (1);

}

pinMode (7, INVOER);

pinMode (8, INVOER);

}

leemte -lus () {

shoot_pin = digitalRead (7);

aim_pin = digitalRead (8);

mpu.getMotion6 (& ax, & ay, & az, & gx, & gy, & gz);

vx = (gx-300)/200; // Ek het -300 en +490 geplaas, aangesien my mpu6050 hierdie waardes wys as ek nie die tjek beweeg nie

vy = -(gz+490)/200; // kyk na die kode van die kopmuis deur Gabry295 vir meer inligting oor hierdie waardes

Muis.move (vx, vy);

vertraging (20);

terwyl (shoot_pin == HOOG);

{

Muis.kliek ();

}

terwyl (aim_pin == HOOG);

{

Muis.kliek ();

}

}

Leonardo -sleutelbord

#insluit

int Granaat;

int wapenpennetjie;

int herlaai_pin;

int beweging1_pin;

int beweging2_pin;

int postuur_pen;

char nightvision_pin;

leemte opstelling ()

{

pinMode (7, INVOER);

pinMode (8, INVOER);

pinMode (9, INVOER);

pinMode (10, INVOER);

pinMode (11, INVOER);

pinMode (12, INVOER);

pinMode (A0, INVOER);

pinMode (A1, INVOER);

Keyboard.begin ();

}

leemte lus ()

{

Grenade_pin = digitalRead (8);

wapenpennetjie = digitalRead (9);

movement1_pin = analogRead (A1);

movement2_pin = analogRead (A2);

posture_pin = analogRead (A0);

herlaai_pin = digitalRead (12);

nightvision_pin = digitalRead (10);

as (granaat == HOOG)

{

Keyboard.press ('g');

}

terwyl (wapenpennetjie == HOOG)

{

Keyboard.press ('q');

}

terwyl (herlaai_speld == HOOG)

{

Keyboard.press ('r');

}

terwyl (movement1_pin> 340 && movement1_pin <420)

{

Keyboard.press ('w');

}

terwyl (beweging1_speld> 420)

{

Keyboard.press ('w');

Keyboard.press ('p');

}

terwyl (movement2_pin> 340 && movement2_pin <420)

{

Keyboard.press ('w');

}

terwyl (beweging2_pin> 420)

{

Keyboard.press ('p');

Keyboard.press ('w');

}

terwyl (postuurpeld> 340 && postuurpennetjie <420)

{

Keyboard.press ('c');

}

terwyl (postuurpeld> 420)

{

Keyboard.press ('l');

}

terwyl (postuurpennetjie <340)

{

Keyboard.press ('z');

}

terwyl (nightvision_pin == HOOG)

{

Keyboard.press ('n ');

}

}

}

Stap 5: TOETSKODES

Hier is die paar kodes wat volgens die funksie van die hoofkode verdeel is

SKIET-

#insluit

int x;

ongeldige opstelling () {

pinMode (8, INVOER);

Muis.begin ();

}

leemte -lus () {

x = digitalRead (8);

as (x == HOOG)

{

Muis.kliek ('g');

}

}

MIK-

#insluit

#insluit

#insluit

#insluit

MPU6050 mpu;

int16_t byl, ay, az, gx, gy, gz;

int vx, vy;

ongeldige opstelling () {

Serial.begin (9600);

Muis.begin ();

Wire.begin ();

mpu.initialize ();

as (! mpu.testConnection ()) {

terwyl (1);

}

}

leemte -lus () {

shoot_pin = digitalRead (7);

aim_pin = digitalRead (8);

mpu.getMotion6 (& ax, & ay, & az, & gx, & gy, & gz);

vx = (gx+300)/200; // "+300" omdat die x -as van die gyroscoop waardes van ongeveer -350 gee terwyl dit nie beweeg nie. Verander hierdie waarde as u iets anders kry met behulp van die TEST -kode, as dit waardes ver van nul af is.

vy = -(gz_ -100)/200; // dieselfde hier omtrent "-100"

HERLADING-

#insluit

int x;

ongeldige opstelling () {

pinMode (8, INVOER);

Keyboard.begin ();

}

leemte -lus () {

x = digitalRead (8);

as (x == HOOG)

{

Keyboard.press ('r');

}

anders

{

Sleutelbord.vrystelling ('r');

}

}

NAGVISIO #sluit in

int x;

ongeldige opstelling () {

pinMode (8, INVOER);

Keyboard.begin ();

}

leemte -lus () {

x = digitalRead (8);

as (x == HOOG)

{

Sleutelbord.pers ('g');

}

anders

{

Sleutelbord.vrystelling ('g');

}

}

CROUCH EN GETUIG-

#insluit

int y;

ongeldige opstelling () {

pinMode (A0, INVOER);

Serial.begin (9600);

}

leemte -lus () {

y = analogRead (A0);

as (y <260)

{

Sleutelbord.vrystelling ('c');

Sleutelbord.vrystelling ('p');

}

anders as (y> 260 && y <310)

{

Keyboard.press ('c');

}

anders as (y> 310)

{

Keyboard.press ('p');

}

}

Stap 6: SPELBEHEER

verander die spelkontroles soos volg

hurk - x

geneig - l

wapenverandering - q

sprint - bl

staan/spring - z

nagvisie - n

beweging vorentoe - w

granaat - g

Stap 7: OPSTEL

OPSTEL
OPSTEL
OPSTEL
OPSTEL
OPSTEL
OPSTEL

Uiteindelik het ons by die laaste stap gekom, nou sit die arduino

borde in 'n boks en steek dit in die sak

Koppel nou die mikro -USB van die arduino aan die USB -poorte van 'n skootrekenaar, en koppel die sensors nou soos hierbo aangedui

*pyltjies op die foto's hierbo verteenwoordig die rigting waarheen die sensor moet kyk

As u twyfel, moet asseblief nie 'n opmerking lewer nie en moenie vergeet om u ervaring te deel nie

Dit is dit dankie en

Totsiens.

Aanbeveel: