Агуулгын хүснэгт:

Arduino ашиглан виртуал бодит байдлын костюм: 7 алхам (зурагтай)
Arduino ашиглан виртуал бодит байдлын костюм: 7 алхам (зурагтай)

Видео: Arduino ашиглан виртуал бодит байдлын костюм: 7 алхам (зурагтай)

Видео: Arduino ашиглан виртуал бодит байдлын костюм: 7 алхам (зурагтай)
Видео: 35 видео со страшными призраками: мегасборник 2023 года [V1] 2024, Арваннэгдүгээр
Anonim
Arduino ашиглан виртуал бодит байдлын костюм
Arduino ашиглан виртуал бодит байдлын костюм

Би энэ төслийг ердийн компьютер тоглоомыг бүрэн VR хэлбэрээр тоглохоор бүтээсэн. Энэхүү төсөл нь таны хөдөлгөөнийг дууриаж, гарныхаа товчлуурыг дарж эсвэл барьж байх болно

Жишээ: урагшлахад 'w' товчлуурыг дарах үйлдэл дууриадаг.

Би Call of Duty 4: Modern Warfare тоглоомыг дуурайсан боловч буудаж байхдаа ухрах тоглоомыг бүү сонгоорой, учир нь энэ нь хулганы үндсэн байрлалыг өөрчлөх болно.

Алхам 1: Шаардлага

Шаардлага нь-

Энэ костюм хийхэд танд хэрэгтэй зүйлсийн жагсаалт дүүрэн байна

Мэдрэгч мэдрэгч-5

Хүч мэдрэгч-1

GPU 6050-4

(эсвэл)

GPU 6050 - 2 ба хурдасгуур - 2

Vr шил

Vr идэвхжүүлсэн утас

PC

WiFi сүлжээний цэг

Тоглоомын буу

Компьютер тоглоом (би Call of Duty- Modern Warfare 1-ийг ашигласан)

Талхны хавтангийн утас (Эрэгтэй, эмэгтэй)

Ардуино Леонардо-2

Автоны бүрхүүл - 2

Эрчим хүчний эх үүсвэр (lipo)

Солонго утас

Алхам 2: ТОНОГ ТӨХӨӨРӨМЖ

ТОНОГ ТӨХӨӨРӨМЖ
ТОНОГ ТӨХӨӨРӨМЖ
ТОНОГ ТӨХӨӨРӨМЖ
ТОНОГ ТӨХӨӨРӨМЖ
ТОНОГ ТӨХӨӨРӨМЖ
ТОНОГ ТӨХӨӨРӨМЖ

*reload_pin, shoot_pin, шөнийн харааны_зүү, гранат_зүү, зэвсэг солих_зүү нь мэдрэгчтэй мэдрэгч юм. aim_pin бол хүч мэдрэгч бөгөөд хулганыг MPU6050 -ээр дуурайдаг бол бусад мэдрэгчийг акселерометр (байрлал, хөдөлгөөн1 & 2)

1.1) Гагнах

SOLDER MPU 6050, акселерометр, мэдрэгч ба утастай хүч мэдрэгч

1.2) УТАС

MPU 6050-ийн хувьд

Зүү 2- SDA

Зүү 3- SCL

GND - GND

5V - PWR/VCC

Хөдөлгөөний_зүү1-

Зүү A1- x тэнхлэг

GND-GND

5V - PWR/VCC

Хөдөлгөөний_пин2-

Зүү A2- x тэнхлэг

GND-GND

5V - PWR/VCC

Биений_тээгчийн хувьд-

Зүү A0- x тэнхлэг

GND-GND

5V - PWR/VCC

зэвсгийн_тээгчийн хувьд -

sig-5v

GND-GND

5V - PWR/VCC

Reload_pin -ийн хувьд -

зүү12 - 5в

GND-GND

5V - PWR/VCC

Nightvision_pin -ийн хувьд -

зүү 10 - 5в

GND-GND

5V - PWR/VCC

Shoot_pin -

Pin7 - 5v

GND-GND

5V - PWR/VCC

Зорилго_тээгчийн хувьд -

Зүү 8 - 5в

5V - PWR/VCC

1.3) Гагнуурын утас

Талхны хавтангийн утсыг солонгын утсаар гагнана

1.4) ДУЛААХ

Богино холболтоос зайлсхийхийн тулд утсыг тусгаарлагч соронзон хальсны хамт гагнасан газарт нь наа

Алхам 3: ПРОГРАММ

ПРОГРАММ
ПРОГРАММ
ПРОГРАММ
ПРОГРАММ

Би зөөврийн компьютерээс гар утас руу видео дамжуулахын тулд Play store -оос 'Remotr' нэртэй апп ашигласан

2.1) REMOTR-

REMOTR програмыг компьютер дээрээ суулгаад бүртгэл үүсгээрэй

Энд линк байна-

remotrapp.com/#download

REMOTR програмыг ухаалаг гар утсандаа суулгаарай

2.2) Видео дамжуулах

Эхлээд компьютер болон ижил WiFi сүлжээ хоёуланг нь холбоод REMOTR дансаа хоёр төхөөрөмжид оруулна уу

одоо програм дээр дамжуулахыг хүсч буй тоглоомоо гараар нэмж оруулаарай

одоо апп нь компьютерийг админаар дарж цацаж эхлэх болно

VR -ээр дамжуулахын тулд ухаалаг гар утсан дээрээ vr горимыг идэвхжүүлнэ үү

Хэрэв та ойлгохгүй байгаа бол энэ линкээр орж дэлгэрэнгүй мэдээлэл аваарай

remotrapp.com/en/howto

Алхам 4: Үндсэн код

Энэ төслийн код нь хатуу эсвэл төвөгтэй биш боловч урт юм

Энд код байгаа бөгөөд үүнийг хуулж аваад arduino файлдаа буулгаарай

ARDUINO

Леонардо хулгана

Би Gabry295 -ийг дахин бичсэн. Энэхүү хулганы код нь түүний толгой дээр суурилсан бөгөөд хулганыг зааварлах боломжтой юм

#оруулах

#оруулах

#оруулах

#оруулах

int aim_pin;

int shoot_pin;

MPU6050 мегапиксел;

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

int vx, vy;

хүчингүй тохиргоо () {

Цуваа эхлэх (9600);

Хулгана.begin ();

Wire.begin ();

mpu.initialize ();

if (! mpu.testConnection ()) {

байхад (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; // Миний mpu6050 нь чекийг хөдөлгөхгүй байхад эдгээр утгыг харуулдаг тул би -300 ба +490 -ийг оруулсан

vy = -(gz+490)/200; // эдгээр утгын талаар дэлгэрэнгүй мэдээллийг Gabry295 -ийн толгойн хулганы кодыг шалгана уу

Хулгана.move (vx, vy);

саатал (20);

while (shoot_pin == HIGH);

{

Хулгана дарна уу ();

}

while (aim_pin == HIGH);

{

Хулгана дарна уу ();

}

}

Леонардо гар

#оруулах

int гранат;

int зэвсгийн_зүү;

int reload_pin;

int хөдөлгөөн1_pin;

int хөдөлгөөн2_pin;

int posture_pin;

char nightvision_pin;

хүчингүй тохиргоо ()

{

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 ();

}

хоосон давталт ()

{

Grenade_pin = digitalRead (8);

зэвсгийн_тээгч = digitalRead (9);

motion1_pin = analogRead (A1);

motion2_pin = analogRead (A2);

posture_pin = analogRead (A0);

reload_pin = digitalRead (12);

nightvision_pin = digitalRead (10);

хэрэв (гранат == ӨНДӨР)

{

Keyboard.press ('g');

}

байхад (зэвсгийн_зүү == ӨНДӨР)

{

Keyboard.press ('q');

}

байхад (reload_pin == HIGH)

{

Keyboard.press ('r');

}

байхад (motion1_pin> 340 && motion1_pin <420)

{

Keyboard.press ('w');

}

байхад (motion1_pin> 420)

{

Keyboard.press ('w');

Keyboard.press ('p');

}

байхад (motion2_pin> 340 && motion2_pin <420)

{

Keyboard.press ('w');

}

байхад (motion2_pin> 420)

{

Keyboard.press ('p');

Keyboard.press ('w');

}

байхад (posture_pin> 340 && posture_pin <420)

{

Keyboard.press ('c');

}

байхад (posture_pin> 420)

{

Keyboard.press ('l');

}

байхад (байрлал_зүү <340)

{

Keyboard.press ('z');

}

байхад (nightvision_pin == HIGH)

{

Keyboard.press ('n');

}

}

}

Алхам 5: КОДУУД ТЕСТ

Функцийн дагуу үндсэн кодоос хуваасан цөөн хэдэн кодыг энд оруулав

БУУДЛАГА-

#оруулах

int x;

хүчингүй тохиргоо () {

pinMode (8, INPUT);

Хулгана.begin ();

}

void loop () {

x = digitalRead (8);

хэрэв (x == HIGH)

{

Хулгана. дарна уу ('g');

}

}

ЗОРИЛГО-

#оруулах

#оруулах

#оруулах

#оруулах

MPU6050 мегапиксел;

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

int vx, vy;

хүчингүй тохиргоо () {

Цуваа эхлэх (9600);

Хулгана.begin ();

Wire.begin ();

mpu.initialize ();

if (! mpu.testConnection ()) {

байхад (1);

}

}

void loop () {

shoot_pin = digitalRead (7);

aim_pin = digitalRead (8);

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

vx = (gx+300)/200; // "+300", учир нь гироскопын x тэнхлэг нь хөдөлж чадахгүй байхад -350 орчим утгыг өгдөг. Хэрэв та TEST кодыг ашиглан өөр зүйл олж авбал энэ утгыг өөрчил, тэгээс хол утгууд байгаа бол chacking хийгээрэй.

vy = -(gz_ -100)/200; // "-100" -ын тухай энд мөн адил

Дахин ачаалах-

#оруулах

int x;

хүчингүй тохиргоо () {

pinMode (8, INPUT);

Keyboard.begin ();

}

void loop () {

x = digitalRead (8);

хэрэв (x == HIGH)

{

Keyboard.press ('r');

}

өөр

{

Keyboard.release ('r');

}

}

NIGHT VISIO #оруулах

int x;

хүчингүй тохиргоо () {

pinMode (8, INPUT);

Keyboard.begin ();

}

void loop () {

x = digitalRead (8);

хэрэв (x == HIGH)

{

Keyboard.press ('g');

}

өөр

{

Keyboard.release ('g');

}

}

CROUCH, PRONE-

#оруулах

int y;

хүчингүй тохиргоо () {

pinMode (A0, INPUT);

Цуваа эхлэх (9600);

}

void loop () {

y = analogRead (A0);

хэрэв (y <260)

{

Keyboard.release ('c');

Keyboard.release ('p');

}

өөр бол (y> 260 && y <310)

{

Keyboard.press ('c');

}

өөр бол (y> 310)

{

Keyboard.press ('p');

}

}

Алхам 6: Тоглоомын хяналт

Тоглоомын хяналтыг дараах байдлаар өөрчилнө үү

бөхийх - x

хандлагатай - л

зэвсгийн өөрчлөлт - q

спринт - х

зогсож/үсрэх - z

шөнийн хараа - n

урагшлах хөдөлгөөн - w

гранат - г

Алхам 7: Тохируулах

ЗАСЧ БАЙНА
ЗАСЧ БАЙНА
ЗАСЧ БАЙНА
ЗАСЧ БАЙНА
ЗАСЧ БАЙНА
ЗАСЧ БАЙНА

Эцэст нь бид arduino -г тавих сүүлчийн алхам руу орлоо

самбарыг хайрцагт хийж уутанд хийнэ

Одоо arduino -ийн микро USB -ийг зөөврийн компьютерын USB порт руу холбож, мэдрэгчийг дээр дурдсанчлан холбоно уу

*Дээрх зурган дээрх сумны тэмдэг нь мэдрэгчийн тулгарах ёстой чиглэлийг илэрхийлнэ

Хэрэв танд эргэлзэж байвал сэтгэгдлээ үлдээхээс бүү эргэлзээрэй, туршлагаа хуваалцахаа бүү мартаарай

Үүнд л баярлалаа

BYE.

Зөвлөмж болгож буй: