Мазмұны:

Arduino көмегімен виртуалды шындық костюмі: 7 қадам (суреттермен)
Arduino көмегімен виртуалды шындық костюмі: 7 қадам (суреттермен)

Бейне: Arduino көмегімен виртуалды шындық костюмі: 7 қадам (суреттермен)

Бейне: Arduino көмегімен виртуалды шындық костюмі: 7 қадам (суреттермен)
Бейне: Виртуалды шындық Виртуальная реальность Virtual reality 2024, Қараша
Anonim
Arduino қолданатын виртуалды шындық костюмі
Arduino қолданатын виртуалды шындық костюмі

Мен бұл жобаны толық компьютерлік ойындарды толық VR режимінде ойнау үшін жасадым. Бұл жоба сіздің қозғалыстарыңызды пернетақта пернелерін басу немесе ұстап тұруға еліктейді

Мысал- алға жылжу кезінде 'w' пернесін басу әрекеті эмуляцияланады.

Мен Call of Duty 4: Modern Warfare ойынына еліктедім, бірақ түсіру кезінде шегінетін ойындарды таңдамаңыз, себебі ол тышқанның әдепкі орнын өзгертеді.

1 -қадам: талаптар

Талаптар-

Бұл костюмді жасау үшін қажет заттардың толық тізімі бар

Сенсорлық сенсорлар-5

Күш датчигі-1

GPU 6050-4

(немесе)

GPU 6050 - 2 және акселерометр - 2

Vr көзілдірігі

Vr қосылған телефон

ДК

WiFi нүктесі

Ойыншық мылтық

Компьютерлік ойын (мен Call of Duty- Modern Warfare 1 қолдандым)

Нан тақтасының сымдары (еркек-әйел)

ARDUINO LEONARDO-2

Автоматты қабық - 2

Қуат көзі (lipo)

Радуга сымдары

2 -қадам: ЖАБДЫҚ

ЖАБДЫҚ
ЖАБДЫҚ
ЖАБДЫҚ
ЖАБДЫҚ
ЖАБДЫҚ
ЖАБДЫҚ

*қайта жүктеу, түйреу, түйреуіш, гранатаның түйреуі, қаруды ауыстыру түйреуіші - сенсорлық сенсорлар. aim_pin - бұл күш сенсоры, ал тышқан MPU6050 арқылы эмуляцияланады, басқа датчиктер акселерометр (қалып, қозғалыс1 және 2)

1.1) Дәнекерлеу

SOLDER MPU 6050, акселерометр, сенсор және сымдармен күш сенсоры

1.2) Сымдар

MPU 6050 үшін

2-түйреуіш- SDA

3-түйреуіш- SCL

GND - GND

5в - PWR/VCC

Қозғалыс_тізбегі үшін 1-

A1- x осі

GND-GND

5в - PWR/VCC

Қозғалыс_тізбегі үшін 2-

A2- x осі

GND-GND

5в - PWR/VCC

Поза_қысқасы үшін-

A0- x осі

GND-GND

5в - PWR/VCC

қару_қысқыш үшін -

sig-5v

GND-GND

5в - PWR/VCC

Reload_pin үшін -

pin12 - 5v

GND-GND

5в - PWR/VCC

Nightvision_pin үшін -

түйреуіш 10 - 5в

GND-GND

5в - PWR/VCC

Shoot_pin үшін -

Pin7 - 5v

GND-GND

5в - PWR/VCC

Мақсат_түйреу үшін -

Түйреуіш 8 - 5в

5в - PWR/VCC

1.3) ПАЙДАЛАНУ СЫМДАРЫ

Нан тақтасының сымдарын кемпірқосақ сымымен дәнекерлеңіз

1.4) оқшаулау

Қысқа тұйықталуды болдырмау үшін сымдарды дәнекерленген жерге оқшаулағыш таспамен бекітіңіз

3 -қадам: БАҒДАРЛАМА

БАҒДАРЛАМА
БАҒДАРЛАМА
БАҒДАРЛАМА
БАҒДАРЛАМА

Мен ноутбуктен телефонға бейнені трансляциялау үшін Play дүкенінен 'Remotr' атты қосымшаны қолдандым

2.1) REMOTR-

REMOTR қосымшасын компьютерге орнатып, тіркелгі жасаңыз

Міне сілтеме-

remotrapp.com/#download

Смартфонға REMOTR қосымшасын орнатыңыз

2.2) БЕЙНЕЛІК СТРИМИНГ

Алдымен компьютерді де, Wi -Fi желісін де қосып, екі құрылғыға да REMOTR есептік жазбасын енгізіңіз

енді бағдарламалық қамтамасыз етуде ойнағыңыз келетін ойынды қолмен қосыңыз

енді қолданба компьютерді әкімші ретінде көрсетеді, ағынды бастау үшін оны басыңыз

VR режимінде трансляциялау үшін смартфондағы vr режимін қосыңыз

Егер сіз түсінбейтін болсаңыз, толық ақпарат алу үшін мына сілтемені қараңыз

remotrapp.com/kz/howto

4 -қадам: НЕГІЗГІ КОД

Бұл жобаның коды қатал немесе күрделі емес, ұзақ

Міне, кодты көшіріп, оны arduino файлына қойыңыз

ARDUINO

LEONARDO тышқан-

Мен Gabry295 -ті қайталадым. Бұл тышқан коды оның басына негізделген Тышқан нұсқаулы

#қосу

#қосу

#қосу

#қосу

int aim_pin;

int shoot_pin;

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

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

int vx, vy;

жарамсыз орнату () {

Serial.begin (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; // Мен -300 және +490 қойдым, себебі mpu6050 бұл мәндерді тексеруді жылжытпаған кезде көрсетеді

vy = -(gz+490)/200; // осы мәндер туралы қосымша ақпарат алу үшін Gabry295 бас тінтуірінің кодын тексеріңіз

Mouse.move (vx, vy);

кешіктіру (20);

while (shoot_pin == HIGH);

{

Mouse.click ();

}

while (aim_pin == HIGH);

{

Mouse.click ();

}

}

Леонардо пернетақтасы

#қосу

int граната;

int қару_көзі;

int reload_pin;

int motion1_pin;

int motion2_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);

gun_pin = 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');

}

while (reload_pin == HIGH)

{

Keyboard.press ('r');

}

while (motion1_pin> 340 && motion1_pin <420)

{

Keyboard.press ('w');

}

while (motion1_pin> 420)

{

Keyboard.press ('w');

Keyboard.press ('p');

}

while (motion2_pin> 340 && motion2_pin <420)

{

Keyboard.press ('w');

}

while (motion2_pin> 420)

{

Keyboard.press ('p');

Keyboard.press ('w');

}

while (posture_pin> 340 && posture_pin <420)

{

Keyboard.press ('c');

}

уақыт (posture_pin> 420)

{

Keyboard.press ('l');

}

уақыт (қалып_түйрегі <340)

{

Keyboard.press ('z');

}

while (nightvision_pin == HIGH)

{

Keyboard.press ('n');

}

}

}

5 -қадам: КОДТАРДЫ СЫНАУ

Міне, функцияға сәйкес негізгі кодтан бөлінген бірнеше кодтар

АТУ-

#қосу

int x;

жарамсыз орнату () {

pinMode (8, INPUT);

Тышқан.begin ();

}

void loop () {

x = digitalRead (8);

егер (x == жоғары)

{

Mouse.click ('g');

}

}

БАҒЫТ-

#қосу

#қосу

#қосу

#қосу

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

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

int vx, vy;

жарамсыз орнату () {

Serial.begin (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», себебі гироскоптың х осі қозғалмай тұрғанда шамамен -350 мән береді. Егер сіз TEST кодын қолданып, нөлден алыс мәндер бар болса, басқа нәрсені алсаңыз, бұл мәнді өзгертіңіз.

vy = -(gz_ -100)/200; // дәл осы жерде «-100» туралы

Қайта жүктеу-

#қосу

int x;

жарамсыз орнату () {

pinMode (8, INPUT);

Keyboard.begin ();

}

void loop () {

x = digitalRead (8);

егер (x == жоғары)

{

Keyboard.press ('r');

}

басқа

{

Keyboard.release ('r');

}

}

NIGHT VISIO #қосу

int x;

жарамсыз орнату () {

pinMode (8, INPUT);

Keyboard.begin ();

}

void loop () {

x = digitalRead (8);

егер (x == жоғары)

{

Keyboard.press ('g');

}

басқа

{

Keyboard.release ('g');

}

}

БАҚША ЖӘНЕ БАС

#қосу

int y;

жарамсыз орнату () {

pinMode (A0, INPUT);

Serial.begin (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

түнгі көру - Н.

алға жылжу - w

граната - г

7 -қадам: ОРНАТУ

ОРНАТУ
ОРНАТУ
ОРНАТУ
ОРНАТУ
РЕТТЕУ
РЕТТЕУ

Ақырында біз соңғы қадамға жеттік, енді arduino қойыңыз

тақталарды қорапқа салып, сөмкеге салыңыз

Енді arduino микро USB -ін ноутбуктің USB порттарына қосыңыз, енді сенсорларды жоғарыда көрсетілгендей қосыңыз

*жоғарыдағы суреттердегі көрсеткілер сенсорға қарауға тиіс бағытты көрсетеді

Егер сізде күмән болса, пікір қалдырудан тартынбаңыз және тәжірибеңізбен бөлісуді ұмытпаңыз

Міне, рахмет және

BYE.

Ұсынылған: