Mündəricat:

Arduino istifadə edərək virtual reallıq kostyumu: 7 addım (şəkillərlə birlikdə)
Arduino istifadə edərək virtual reallıq kostyumu: 7 addım (şəkillərlə birlikdə)

Video: Arduino istifadə edərək virtual reallıq kostyumu: 7 addım (şəkillərlə birlikdə)

Video: Arduino istifadə edərək virtual reallıq kostyumu: 7 addım (şəkillərlə birlikdə)
Video: Fiziki virtual reallıq 2024, Noyabr
Anonim
Arduino istifadə edərək Virtual Reallıq Suit
Arduino istifadə edərək Virtual Reallıq Suit

Bu layihəni normal kompüter oyunlarını tam VR rejimində oynamaq üçün yaratdım. Bu layihə, hərəkətlərinizi klaviaturanın düymələrini basıb saxlamağa bənzəyir

Misal- irəlilədikdə 'w' düyməsinə basma hərəkəti təqlid edilir.

Call of Duty 4: Modern Warfare oyununu təqlid etdim, ancaq çəkərkən geri çəkilən oyunları seçməyin, çünki bu, siçanın standart mövqeyini dəyişəcək.

Addım 1: Tələblər

Tələblər-

Bu paltarı hazırlamaq üçün lazım olan şeylərin siyahısı var

Toxunma sensorları-5

Güc sensoru-1

GPU 6050-4

(və ya)

GPU 6050 - 2 və Akselerometr - 2

Vr eynək

Vr effektiv telefon

PC

WiFi qaynar nöqtəsi

Oyuncaq silahı

Bir kompüter oyunu (Call of Duty- Modern Warfare 1 istifadə etdim)

Çörək taxtası telləri (Kişi-Qadın)

ARDUINO LEONARDO-2

Avtomatik qabıq - 2

Güc mənbəyi (lipo)

Göy qurşağı telləri

Addım 2: DONANIM

DONANIM
DONANIM
DONANIM
DONANIM
DONANIM
DONANIM

*reload_pin, shoot_pin, gecə görmə_pin, qumbara_pin, silah dəyişmə_pini toxunma sensorlarıdır. aim_pin güc sensoru və siçan MPU6050 tərəfindən təqlid edilir, digər sensorlar akselerometrdir (duruş, hərəkət1 və 2)

1.1) Lehimləmə

SOLDER MPU 6050, akselerometr, toxunma sensoru və telləri olan güc sensoru

1.2) KABLOLAMA

MPU 6050 üçün

Pin 2- SDA

Pin 3- SCL

GND - GND

5V - PWR/VCC

Hərəkət_pin1 üçün-

Pin A1- x ox

GND-GND

5V - PWR/VCC

Hərəkət_pin2-

Pin A2- x ox

GND-GND

5V - PWR/VCC

Duruş_pin üçün-

Pin A0- x ox

GND-GND

5V - PWR/VCC

silah_pin üçün -

sig-5v

GND-GND

5V - PWR/VCC

Reload_pin üçün -

pin12 - 5v

GND-GND

5V - PWR/VCC

Nightvision_pin üçün -

pin 10 - 5v

GND-GND

5V - PWR/VCC

Shoot_pin üçün -

Pin7 - 5v

GND-GND

5V - PWR/VCC

Aim_pin üçün -

Pin 8 - 5v

5V - PWR/VCC

1.3) Lehim telləri

Çörək taxtası tellərini göy qurşağı telləri ilə lehimləyin

1.4) İZOLASİYA

Qısa qapanmalardan qaçmaq üçün telləri lehim etdiyiniz yerə izolyasiya lenti ilə yapışdırın

Addım 3: YAZILIM

PROQRAM TƏMİNATI
PROQRAM TƏMİNATI
PROQRAM TƏMİNATI
PROQRAM TƏMİNATI

Videonu noutbukdan telefona yaymaq üçün Play mağazasından 'Remotr' adlı bir tətbiqdən istifadə etdim

2.1) REMOTR-

REMOTR tətbiqini kompüterinizə quraşdırın və hesab yaradın

İşdə link-

remotrapp.com/# endir

Smartfonunuza REMOTR tətbiqini quraşdırın

2.2) VİDEO AKIŞI

Əvvəlcə həm kompüterə, həm də eyni WiFi şəbəkəsinə qoşulun və hər iki cihazda REMOTR hesabınızı daxil edin

İndi proqramda yayımlamaq istədiyiniz oyunu əl ilə əlavə edin

İndi tətbiq kompüteri idarəçi olaraq göstərəcək və axına başlamaq üçün onu vurun

VR rejimində yayımlamaq üçün smartfonunuzda vr rejimini aktiv edin

Anlaya bilmirsinizsə ətraflı məlumat üçün bu linki yoxlayın

remotrapp.com/az/howto

Adım 4: ANA KOD

Bu layihənin kodu çətin və ya mürəkkəb deyil, uzun bir koddur

Budur, kodu kopyalayın və arduino sənədinizə yapışdırın

ARDUINO

LEONARDO siçanı-

Gabry295 -ə yenidən baxdım. Bu siçan kodu təlimatlandırılan Mouse başına əsaslanır

#daxil edin

#daxil edin

#daxil edin

#daxil edin

int aim_pin;

int shoot_pin;

MPU6050 mpu;

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

int vx, vy;

boş quraşdırma () {

Serial.begin (9600);

Mouse.begin ();

Wire.begin ();

mpu.initialize ();

if (! mpu.testConnection ()) {

isə (1);

}

pinMode (7, GİRİŞ);

pinMode (8, GİRİŞ);

}

boşluq döngəsi () {

shoot_pin = digitalRead (7);

aim_pin = digitalRead (8);

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

vx = (gx-300)/200; // Mpu6050 -in çeki hərəkət etdirməyəndə bu dəyərləri göstərdiyi üçün -300 və +490 qoydum

vy = -(gz+490)/200; // bu dəyərlər haqqında daha ətraflı məlumat üçün Gabry295 tərəfindən baş siçan kodunu yoxlayın

Mouse.move (vx, vy);

gecikmə (20);

while (shoot_pin == HIGH);

{

Mouse.click ();

}

while (aim_pin == HIGH);

{

Mouse.click ();

}

}

Leonardo klaviatura

#daxil edin

int Qumbara;

int silah_pin;

int reload_pin;

int hərəkəti1_pin;

int hərəkəti2_pin;

int duruş_pin;

char nightvision_pin;

boş quraşdırma ()

{

pinMode (7, GİRİŞ);

pinMode (8, GİRİŞ);

pinMode (9, GİRİŞ);

pinMode (10, GİRİŞ);

pinMode (11, GİRİŞ);

pinMode (12, GİRİŞ);

pinMode (A0, GİRİŞ);

pinMode (A1, GİRİŞ);

Keyboard.begin ();

}

boşluq döngəsi ()

{

Grenade_pin = digitalRead (8);

silah_pin = digitalRead (9);

motion1_pin = analogRead (A1);

motion2_pin = analogRead (A2);

posture_pin = analogOxu (A0);

reload_pin = digitalRead (12);

nightvision_pin = digitalRead (10);

əgər (qumbara == YÜKSƏK)

{

Keyboard.press ('g');

}

isə (silah_pin == YÜKSƏK)

{

Keyboard.press ('q');

}

isə (reload_pin == YÜKSƏK)

{

Keyboard.press ('r');

}

while (motion1_pin> 340 && motion1_pin <420)

{

Keyboard.press ('w');

}

isə (motion1_pin> 420)

{

Keyboard.press ('w');

Keyboard.press ('p');

}

isə (motion2_pin> 340 && motion2_pin <420)

{

Keyboard.press ('w');

}

isə (motion2_pin> 420)

{

Keyboard.press ('p');

Keyboard.press ('w');

}

isə (posture_pin> 340 && posture_pin <420)

{

Keyboard.press ('c');

}

isə (posture_pin> 420)

{

Keyboard.press ('l');

}

isə (duruş_pin <340)

{

Keyboard.press ('z');

}

isə (nightvision_pin == YÜKSƏK)

{

Keyboard.press ('n');

}

}

}

Addım 5: KODLARI TEST EDİN

İşdə əsas koddan funksiyaya görə bölünən bir neçə kod

Çəkiliş-

#daxil edin

int x;

boş quraşdırma () {

pinMode (8, GİRİŞ);

Mouse.begin ();

}

boşluq döngəsi () {

x = digitalRead (8);

əgər (x == YÜKSEK)

{

Mouse.click ('g');

}

}

MƏQSƏD-

#daxil edin

#daxil edin

#daxil edin

#daxil edin

MPU6050 mpu;

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

int vx, vy;

boş quraşdırma () {

Serial.begin (9600);

Mouse.begin ();

Wire.begin ();

mpu.initialize ();

if (! mpu.testConnection ()) {

isə (1);

}

}

boşluq döngəsi () {

shoot_pin = digitalRead (7);

aim_pin = digitalRead (8);

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

vx = (gx+300)/200; // "+300" çünki jiroskopun x oxu hərəkət etmədikdə təxminən -350 dəyər verir. TEST kodundan istifadə edərək fərqli bir şey əldə etsəniz, sıfırdan çox dəyərlər varsa, bu dəyəri dəyişdirin.

vy = -(gz_ -100)/200; // "-100" haqqında eyni

YENİDƏN

#daxil edin

int x;

boş quraşdırma () {

pinMode (8, GİRİŞ);

Keyboard.begin ();

}

boşluq döngəsi () {

x = digitalRead (8);

əgər (x == YÜKSEK)

{

Keyboard.press ('r');

}

başqa

{

Keyboard.release ('r');

}

}

GECƏ VİZYO #daxil edin

int x;

boş quraşdırma () {

pinMode (8, GİRİŞ);

Keyboard.begin ();

}

boşluq döngəsi () {

x = digitalRead (8);

əgər (x == YÜKSEK)

{

Keyboard.press ('g');

}

başqa

{

Keyboard.release ('g');

}

}

BAĞÇA VƏ PRONE-

#daxil edin

int y;

boş quraşdırma () {

pinMode (A0, GİRİŞ);

Serial.begin (9600);

}

boşluq döngəsi () {

y = analogOxu (A0);

əgər (y <260)

{

Keyboard.release ('c');

Keyboard.release ('p');

}

başqa halda (y> 260 && y <310)

{

Keyboard.press ('c');

}

başqa halda (y> 310)

{

Keyboard.press ('p');

}

}

Addım 6: OYUN NƏZARƏTLƏRİ

oyun nəzarətini aşağıdakı kimi dəyişdirin

əyilmək - x

meylli - l

silah dəyişikliyi - q

qaçış - s

dur/atla - z

gecə görmə - n

irəli hərəkət - w

qumbara - g

Addım 7: AYARLANMA

AYARLAMAQ
AYARLAMAQ
AYARLAMAQ
AYARLAMAQ
AYARLAMAQ
AYARLAMAQ

Nəhayət, arduino'yu qoyduğumuz son addıma gəldik

lövhələri bir qutuya qoyun və çantaya qoyun

İndi arduino mikro USB -ni dizüstü kompüterin USB portlarına qoşun, indi sensorları yuxarıda göstərildiyi kimi bağlayın

*Yuxarıdakı şəkillərdəki ox işarələri sensorun üz tutmalı olduğu istiqaməti əks etdirir

Şübhəniz varsa, şərh yazmaqdan çəkinməyin və təcrübənizi bölüşməyi unutmayın

Budur təşəkkür edirəm və

BAYE.

Tövsiyə: