Satura rādītājs:

Virtuālās realitātes tērps, izmantojot Arduino: 7 soļi (ar attēliem)
Virtuālās realitātes tērps, izmantojot Arduino: 7 soļi (ar attēliem)

Video: Virtuālās realitātes tērps, izmantojot Arduino: 7 soļi (ar attēliem)

Video: Virtuālās realitātes tērps, izmantojot Arduino: 7 soļi (ar attēliem)
Video: CS50 2015 - Week 8, continued 2024, Novembris
Anonim
Virtuālās realitātes tērps, izmantojot Arduino
Virtuālās realitātes tērps, izmantojot Arduino

Esmu izveidojis šo projektu, lai spēlētu parastās datorspēles pilnā VR režīmā. Šis projekts līdzinās jūsu kustībām, nospiežot vai turot tastatūras taustiņus

Piemērs- pārvietojoties uz priekšu, tiek atdarināta taustiņa “w” nospiešana.

Esmu atdarinājis spēli Call of Duty 4: Modern Warfare, bet neizvēlies spēles, kurām šaušanas laikā ir atsitiens, jo tas mainīs peles noklusējuma pozīciju

1. darbība. Prasības

Prasības ir-

Ir pilns saraksts ar lietām, kas nepieciešamas, lai izveidotu šo uzvalku

Pieskārienu sensori-5

Spēka sensors-1

GPU 6050 - 4

(vai)

GPU 6050 - 2 un akselerometrs - 2

Vr brilles

Vr iespējots tālrunis

PC

WiFi tīklājs

Rotaļu lielgabals

Datorspēle (esmu izmantojis Call of Duty- Modern Warfare 1)

Maizes dēļu vadi (vīrieši un sievietes)

ARDUINO LEONARDO-2

Autoniskā cilpa - 2

Barošanas avots (lipo)

Varavīksnes vadi

2. solis: Aparatūra

Aparatūra
Aparatūra
Aparatūra
Aparatūra
Aparatūra
Aparatūra

*reload_pin, shoot_pin, night vision_pin, grenade_pin, ieroča change_pin ir pieskāriena sensori. aim_pin ir spēka sensors, un peli emulē MPU6050, citi sensori ir akselerometrs (poza, kustība1 un 2)

1.1) LODĒŠANA

SOLDER MPU 6050, akselerometrs, skārienjūtīgais sensors un spēka sensors ar vadiem

1.2) VADĪŠANA

MPU 6050-

Piespraude 2- SDA

3. tapa- SCL

GND - GND

5v - PWR/VCC

Kustībai_pin1-

Piespraude A1- x ass

GND-GND

5v - PWR/VCC

Kustībai_pin2-

Tapas A2- x ass

GND-GND

5v - PWR/VCC

Poza_tapiņai-

Tapas A0- x ass

GND-GND

5v - PWR/VCC

par ieroča tapu -

sig-5v

GND-GND

5v - PWR/VCC

Reload_pin -

pin12 - 5v

GND-GND

5v - PWR/VCC

Nightvision_pin -

tapas 10 - 5v

GND-GND

5v - PWR/VCC

Shoot_pin -

Pin7 - 5v

GND-GND

5v - PWR/VCC

For aim_pin -

Tapas 8 - 5v

5v - PWR/VCC

1.3) LODĒŠANAS VADI

Lodējiet maizes dēļa vadus ar varavīksnes vadiem

1.4) IZOLĀCIJA

Piestipriniet vadus ar izolācijas lenti vietā, kur esat pielodējis, lai izvairītos no īssavienojumiem

3. darbība: PROGRAMMATŪRA

PROGRAMMATŪRA
PROGRAMMATŪRA
PROGRAMMATŪRA
PROGRAMMATŪRA

Esmu izmantojis lietotni ar nosaukumu “Remotr” no Play veikala, lai pārraidītu video no klēpjdatora uz tālruni

2.1) REMOTR-

Instalējiet datorā REMOTR lietojumprogrammu un izveidojiet kontu

Šeit ir saite-

remotrapp.com/#download

Instalējiet viedtālrunī lietotni REMOTR

2.2) VIDEO STREAMING

Vispirms pievienojiet datoru un vienu un to pašu WiFi tīklu un abās ierīcēs ievadiet savu REMOTR kontu

tagad manuāli pievienojiet spēli, kuru vēlaties straumēt programmatūrā

tagad lietotne parādīs datoru kā administrators, noklikšķiniet uz tā, lai sāktu straumēšanu

Lai straumētu VR, viedtālrunī iespējojiet VR režīmu

Ja nesaprotat, pārbaudiet šo saiti, lai iegūtu sīkāku informāciju

remotrapp.com/en/howto

4. darbība: PAMATKODS

Šī projekta kods nav grūts vai sarežģīts, bet garš

Šeit ir kods, vienkārši nokopējiet to un ielīmējiet savā arduino failā

ARDUINO

LEONARDO pele-

Esmu norādījis Gabry295. Šis peles kods ir balstīts uz viņa pamācāmo peli

#iekļaut

#iekļaut

#iekļaut

#iekļaut

int aim_pin;

int shoot_pin;

MPU6050 mpu;

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

int vx, vy;

void setup () {

Sērijas sākums (9600);

Pele.sākt ();

Wire.begin ();

mpu.initialize ();

ja (! mpu.testConnection ()) {

kamēr (1);

}

pinMode (7, INPUT);

pinMode (8, INPUT);

}

void loop () {

shoot_pin = digitalRead (7);

aim_pin = digitalRead (8);

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

vx = (gx-300)/200; // Man ir likts -300 un +490, jo mans mpu6050 rāda šīs vērtības, kad nepārvietojas pārbaude

vy = -(gz+490)/200; // pārbaudiet Gabry295 galvas peles kodu, lai iegūtu sīkāku informāciju par šīm vērtībām

Pele.pārvietot (vx, vy);

kavēšanās (20);

kamēr (shoot_pin == HIGH);

{

Pele.klikšķis ();

}

while (aim_pin == HIGH);

{

Pele.klikšķis ();

}

}

Leonardo tastatūra

#iekļaut

int Granāta;

int ieroča_pins;

int reload_pin;

int motion1_pin;

int motion2_pin;

int posture_pin;

char nightvision_pin;

anulēts iestatījums ()

{

pinMode (7, INPUT);

pinMode (8, INPUT);

pinMode (9, INPUT);

pinMode (10, INPUT);

pinMode (11, INPUT);

pinMode (12, INPUT);

pinMode (A0, INPUT);

pinMode (A1, INPUT);

Keyboard.begin ();

}

tukša cilpa ()

{

Grenade_pin = digitalRead (8);

gun_pin = digitalRead (9);

motion1_pin = analogRead (A1);

motion2_pin = analogRead (A2);

poza_tapa = analogRead (A0);

reload_pin = digitalRead (12);

nightvision_pin = digitalRead (10);

ja (granāta == HIGH)

{

Keyboard.press ('g');

}

kamēr (ieroča tapa == AUGSTS)

{

Keyboard.press ('q');

}

kamēr (reload_pin == HIGH)

{

Keyboard.press ('r');

}

kamēr (motion1_pin> 340 && motion1_pin <420)

{

Keyboard.press ('w');

}

kamēr (motion1_pin> 420)

{

Keyboard.press ('w');

Keyboard.press ('p');

}

kamēr (motion2_pin> 340 && motion2_pin <420)

{

Keyboard.press ('w');

}

kamēr (motion2_pin> 420)

{

Keyboard.press ('p');

Keyboard.press ('w');

}

kamēr (posture_pin> 340 && posture_pin <420)

{

Keyboard.press ('c');

}

kamēr (poza_tapa> 420)

{

Keyboard.press ('l');

}

kamēr (poza_tapa <340)

{

Keyboard.press ('z');

}

kamēr (nightvision_pin == HIGH)

{

Keyboard.press ('n');

}

}

}

5. darbība: TESTA KODI

Šeit ir daži kodi, kas sadalīti no galvenā koda atbilstoši funkcijai

ŠAUŠANA-

#iekļaut

int x;

void setup () {

pinMode (8, INPUT);

Pele.sākt ();

}

void loop () {

x = digitalRead (8);

ja (x == AUGSTS)

{

Pele.klikšķis ('g');

}

}

MĒRĶIS-

#iekļaut

#iekļaut

#iekļaut

#iekļaut

MPU6050 mpu;

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

int vx, vy;

void setup () {

Sērijas sākums (9600);

Pele.sākt ();

Wire.begin ();

mpu.initialize ();

ja (! mpu.testConnection ()) {

kamēr (1);

}

}

void loop () {

shoot_pin = digitalRead (7);

aim_pin = digitalRead (8);

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

vx = (gx+300)/200; // "+300", jo žiroskopa x ass sniedz vērtības aptuveni -350, kamēr tas nepārvietojas. Mainiet šo vērtību, ja, izmantojot TEST kodu, iegūstat kaut ko citu, pārbaudot, vai vērtības ir tālu no nulles.

vy = -(gz_ -100)/200; // tas pats šeit par "-100"

PĀRLĀDĒŠANA-

#iekļaut

int x;

void setup () {

pinMode (8, INPUT);

Keyboard.begin ();

}

void loop () {

x = digitalRead (8);

ja (x == AUGSTS)

{

Keyboard.press ('r');

}

citādi

{

Keyboard.release ('r');

}

}

NAKTS VISIO #iekļaut

int x;

void setup () {

pinMode (8, INPUT);

Keyboard.begin ();

}

void loop () {

x = digitalRead (8);

ja (x == AUGSTS)

{

Keyboard.press ('g');

}

citādi

{

Keyboard.release ('g');

}

}

KRUŠA UN PRONS-

#iekļaut

int y;

void setup () {

pinMode (A0, INPUT);

Sērijas sākums (9600);

}

void loop () {

y = analogRead (A0);

ja (y <260)

{

Keyboard.release ('c');

Keyboard.release ('p');

}

citādi, ja (y> 260 && y <310)

{

Keyboard.press ('c');

}

citādi, ja (y> 310)

{

Keyboard.press ('p');

}

}

6. darbība: SPĒLES KONTROLE

mainiet spēles vadīklas šādi

tupēt - x

nosliece - l

ieroču maiņa - q

sprints - lpp

stāvēt/lēkt - z

nakts redze - n

kustība uz priekšu - w

granāta - g

7. darbība: IESTATĪŠANA

UZSTĀDĪT
UZSTĀDĪT
UZSTĀDĪT
UZSTĀDĪT
UZSTĀDĪT
UZSTĀDĪT

Visbeidzot, mēs esam nonākuši pie pēdējā soļa, tagad ievietojiet arduino

dēļus kastē un ieslidiniet to somā

Tagad pievienojiet arduino mikro USB portatīvajam datoram, tagad pievienojiet sensorus, kā norādīts iepriekš

*bultiņas iepriekš redzamajos attēlos norāda virzienu, uz kuru sensoram jābūt vērstam

Ja jums ir kādas šaubas, nevilcinieties atstāt komentāru un neaizmirstiet dalīties savā pieredzē

Tieši tā paldies un

BYE.

Ieteicams: