İçindekiler:

Arduino Kullanan Sanal Gerçeklik Suiti: 7 Adım (Resimlerle)
Arduino Kullanan Sanal Gerçeklik Suiti: 7 Adım (Resimlerle)

Video: Arduino Kullanan Sanal Gerçeklik Suiti: 7 Adım (Resimlerle)

Video: Arduino Kullanan Sanal Gerçeklik Suiti: 7 Adım (Resimlerle)
Video: Adım at para kazan hîlesi ( Arapların taktiği 😅 ) 2024, Temmuz
Anonim
Arduino Kullanan Sanal Gerçeklik Takımı
Arduino Kullanan Sanal Gerçeklik Takımı

Bu projeyi normal bilgisayar oyunlarını tam VR'de oynamak için oluşturdum. Bu proje, klavyenizin tuşlarına basmak veya basılı tutmak için hareketlerinizi taklit eder.

Örnek- ileriye doğru hareket ettiğinizde 'w' tuşuna basma eylemi taklit edilir.

Call of Duty 4: Modern Warfare oyununu taklit ettim ancak çekim sırasında geri tepme olan oyunları seçmeyin çünkü bu, farenin varsayılan konumunu değiştirecektir.

Adım 1: Gereksinimler

Gereksinimler-

Bu kıyafeti yapmak için ihtiyacınız olan şeylerle dolu bir liste var.

Dokunmatik sensörler-5

Kuvvet sensörü-1

GPU 6050 - 4

(veya)

GPU 6050 - 2 ve İvmeölçer - 2

vr gözlük

VR özellikli telefon

bilgisayar

Kablosuz bağlantı noktası

oyuncak tabanca

Bir bilgisayar oyunu (Call of Duty Modern Warfare 1 kullandım)

Ekmek tahtası telleri (Erkek-Dişi)

ARDUINO LEONARDO-2

Oton kalkanı - 2

Güç kaynağı (lipo)

Gökkuşağı telleri

2. Adım: DONANIM

DONANIM
DONANIM
DONANIM
DONANIM
DONANIM
DONANIM

*reload_pin, shoot_pin, night vision_pin, grenade_pin, silah change_pin dokunmatik sensörlerdir. aim_pin kuvvet sensörüdür ve fare MPU6050 tarafından taklit edilir diğer sensörler ivmeölçerdir(duruş, hareket1&2)

1.1) LEHİM

SOLDER MPU 6050, İvmeölçer, Dokunma Sensörü ve teller ile kuvvet sensörü

1.2) KABLOLAMA

MPU 6050- için

Pin 2- SDA

Pin 3- SCL

GND - GND

5v - PWR/VCC

motion_pin1- için

Pim A1- x ekseni

GND-GND

5v - PWR/VCC

motion_pin2- için

Pim A2- x ekseni

GND-GND

5v - PWR/VCC

Duruş_pin- için

Pin A0- x ekseni

GND-GND

5v - PWR/VCC

silah_pin için -

sig-5v

GND-GND

5v - PWR/VCC

Reload_pin için –

pin12 – 5v

GND-GND

5v - PWR/VCC

Nightvision_pin için –

pin 10 – 5v

GND-GND

5v - PWR/VCC

shoot_pin için –

Pin7 – 5v

GND-GND

5v - PWR/VCC

aim_pin için -

Pin 8 – 5v

5v - PWR/VCC

1.3)LEHİM TELLERİ

Ekmek tahtası tellerini gökkuşağı telleriyle lehimleyin

1.4) YALITIM

Kısa devreleri önlemek için telleri lehimlediğiniz yere yalıtım bandı ile bantlayın.

3. Adım: YAZILIM

YAZILIM
YAZILIM
YAZILIM
YAZILIM

Videoyu dizüstü bilgisayardan telefona aktarmak için Play Store'dan 'Remotr' adlı bir uygulama kullandım

2.1) UZAKTAN-

REMOTR uygulamasını bilgisayarınıza kurun ve bir hesap oluşturun

Bağlantı burada-

remottrap.com/#download

Akıllı telefonunuza REMOTR uygulamasını yükleyin

2.2) VİDEO AKIŞI

Önce hem bilgisayarı hem de aynı WiFi ağını bağlayın ve her iki cihaza da REMOTR hesabınızı girin

şimdi yayınlamak istediğiniz oyunu yazılıma manuel olarak ekleyin

şimdi uygulama bilgisayarı yönetici olarak gösterecek, akışı başlatmak için tıklayın

VR'de akış yapmak için akıllı telefonunuzda vr modunu etkinleştirin

Anlayamıyorsanız Ayrıntılı bilgi için bu bağlantıyı kontrol edin

remottrap.com/en/howto

Adım 4: ANA KOD

Bu projenin kodu zor veya karmaşık değil, uzun bir kod

İşte kod sadece kopyalayın ve arduino dosyanıza yapıştırın

arduino

LEONARDO Fare-

Gabry295'i tavsiye ettim. Bu fare kodu, fare talimatına göre kafasına dayanmaktadır.

#Dahil etmek

#Dahil etmek

#Dahil etmek

#Dahil etmek

int amaç_pin;

int shoot_pin;

MPU6050 mpu;

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

int vx, vy;

geçersiz kurulum() {

Seri.başla(9600);

fare.başla();

Wire.begin();

mpu.initialize();

if (!mpu.testConnection()) {

iken (1);

}

pinMode(7, GİRİŞ);

pinMode(8, GİRİŞ);

}

boşluk döngüsü () {

shoot_pin = digitalRead(7);

aim_pin = digitalRead(8);

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

vx = (gx-300)/200; // mpu6050 cihazım çeki hareket ettirmiyorken bu değerleri gösterdiği için -300 ve +490 koydum

vy = -(gz+490)/200; // Bu değerler hakkında daha fazla ayrıntı için Gabry295'in baş fare kodunu kontrol edin

Mouse.move(vx, vy);

gecikme(20);

while(shoot_pin == YÜKSEK);

{

Fare tıklaması();

}

while(aim_pin == YÜKSEK);

{

Fare tıklaması();

}

}

Leonardo Klavye

#Dahil etmek

int El bombası;

int silah_pin;

int reload_pin;

int hareket1_pin;

int hareket2_pin;

int duruş_pin;

char nightvision_pin;

geçersiz kurulum()

{

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İŞ);

klavye.başla();

}

boşluk döngüsü()

{

Grenade_pin=digitalRead(8);

silah_pin = digitalRead(9);

motion1_pin = analogRead(A1);

motion2_pin = analogRead(A2);

postür_pin = analogRead(A0);

reload_pin = digitalRead(12);

nightvision_pin = digitalRead(10);

if(el bombası==YÜKSEK)

{

klavye.press('g');

}

while (weapon_pin == YÜKSEK)

{

klavye.press('q');

}

while(reload_pin == YÜKSEK)

{

klavye.press('r');

}

while (hareket1_pin>340&&hareket1_pin<420)

{

klavye.press('w');

}

while (hareket1_pin>420)

{

klavye.press('w');

klavye.press('p');

}

while (movement2_pin>340&&movement2_pin<420)

{

klavye.press('w');

}

while (hareket2_pin>420)

{

klavye.press('p');

klavye.press('w');

}

while (posture_pin>340&&posture_pin<420)

{

klavye.press('c');

}

while (posture_pin>420)

{

klavye.press('l');

}

while (posture_pin<340)

{

klavye.press('z');

}

while (nightvision_pin==YÜKSEK)

{

klavye.press('n');

}

}

}

Adım 5: TEST KODLARI

İşte fonksiyona göre ana koddan ayrılan birkaç kod

ÇEKİM-

#Dahil etmek

int x;

geçersiz kurulum() {

pinMode(8, GİRİŞ);

fare.başla();

}

boşluk döngüsü () {

x=dijitalOku(8);

if(x==YÜKSEK)

{

Mouse.click('g');

}

}

HEDEFLEME-

#Dahil etmek

#Dahil etmek

#Dahil etmek

#Dahil etmek

MPU6050 mpu;

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

int vx, vy;

geçersiz kurulum() {

Seri.başla(9600);

fare.başla();

Wire.begin();

mpu.initialize();

if (!mpu.testConnection()) {

iken (1);

}

}

boşluk döngüsü () {

shoot_pin = digitalRead(7);

aim_pin = digitalRead(8);

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

vx = (gx+300)/200; // "+300" çünkü jiroskopun x ekseni hareket etmiyorken -350 civarında değerler verir. TEST kodunu kullanarak farklı bir şey alırsanız, sıfırdan uzak değerler varsa bu değeri değiştirin.

vy = -(gz_-100)/200; // burada "-100" ile aynı

YENİDEN YÜKLENİYOR-

#Dahil etmek

int x;

geçersiz kurulum() {

pinMode(8, GİRİŞ);

klavye.başla();

}

boşluk döngüsü () {

x=dijitalOku(8);

if(x==YÜKSEK)

{

klavye.press('r');

}

Başka

{

Keyboard.release('r');

}

}

GECE GÖRÜŞÜ #include

int x;

geçersiz kurulum() {

pinMode(8, GİRİŞ);

klavye.başla();

}

boşluk döngüsü () {

x=dijitalOku(8);

if(x==YÜKSEK)

{

klavye.press('g');

}

Başka

{

Keyboard.release('g');

}

}

çömelme ve eğilme-

#Dahil etmek

int y;

geçersiz kurulum() {

pinMode(A0, GİRİŞ);

Seri.başla(9600);

}

boşluk döngüsü () {

y=analogOku(A0);

eğer(y<260)

{

Keyboard.release('c');

Keyboard.release('p');

}

else if(y>260&&y<310)

{

klavye.press('c');

}

aksi takdirde(y>310)

{

klavye.press('p');

}

}

6. Adım: OYUN KONTROLLERİ

oyun kontrollerini aşağıdaki gibi değiştirin

çömelmek - x

eğilimli - l

silah değişikliği - q

sürat koşusu - p

dur/zıpla - z

gece görüşü - n

ileri hareket - w

el bombası - g

7. Adım: KURULUM

KURULUM
KURULUM
KURULUM
KURULUM
KURULUM
KURULUM

Sonunda son adıma geldik şimdi arduinoyu koy

bir kutuda tahtalar ve çantaya kaydırın

Şimdi arduino'nun mikro USB'sini dizüstü bilgisayarın USB bağlantı noktalarına bağlayın, şimdi sensörleri yukarıda belirtildiği gibi bağlayın

*Yukarıdaki resimlerdeki ok işaretleri, sensörün bakması gereken yönü temsil eder.

Herhangi bir şüpheniz varsa, yorum bırakmaktan çekinmeyin ve deneyiminizi paylaşmayı unutmayın.

işte bu teşekkür ederim ve

HOŞÇAKAL.

Önerilen: