Мазмуну:

Virtual Reality Suit Arduino колдонуу: 7 кадам (сүрөттөр менен)
Virtual Reality Suit Arduino колдонуу: 7 кадам (сүрөттөр менен)

Video: Virtual Reality Suit Arduino колдонуу: 7 кадам (сүрөттөр менен)

Video: Virtual Reality Suit Arduino колдонуу: 7 кадам (сүрөттөр менен)
Video: Титаниктин сыры: кантип алар айсбергди байкабай калышты?! Эң деталдуу окуя! 2024, Июль
Anonim
Virtual Reality Suit Arduino колдонуу
Virtual Reality Suit 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 колдонгом)

Нан тактасынын зымдары (Эркек-Аял)

ARDUINO LEONARDO-2

Автотранспорт - 2

Кубат булагы (lipo)

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

2 -кадам: ЖАБДУУ

ЖАБДУУ
ЖАБДУУ
ЖАБДУУ
ЖАБДУУ
ЖАБДУУ
ЖАБДУУ

*reload_pin, shoot_pin, night vision_pin, granata_pin, курал өзгөртүү_пинси сенсордук сенсорлор. aim_pin - бул күч сенсору жана чычкан MPU6050 тарабынан эмуляцияланган, башка сенсорлор акселерометр (поза, кыймыл1 & 2)

1.1) СОТТОО

SOLDER MPU 6050, акселерометр, сенсор жана зымдары бар күч сенсору

1.2) СИМ

MPU 6050 үчүн

Pin 2- SDA

Pin 3- SCL

GND - GND

5v - PWR/VCC

Move_pin1- үчүн

Pin A1- x огу

GND-GND

5v - PWR/VCC

Move_pin2- үчүн

Pin A2- x огу

GND-GND

5v - PWR/VCC

Пост_пин үчүн-

Pin A0- x огу

GND-GND

5v - PWR/VCC

qurol_пин үчүн -

сиг-5v

GND-GND

5v - PWR/VCC

Reload_pin үчүн -

pin12 - 5v

GND-GND

5v - PWR/VCC

Nightvision_pin үчүн -

пин 10 - 5в

GND-GND

5v - PWR/VCC

Shoot_pin үчүн -

Pin7 - 5v

GND-GND

5v - PWR/VCC

Aim_pin үчүн -

Pin 8 - 5v

5v - PWR/VCC

1.3) ЛАЙКТООЧУ Сымдар

Нан тактасынын зымдарын көк желе зымдары менен ээрчиңиз

1.4) изоляция

Кыска туташууларды болтурбоо үчүн зымдарды изоляциялаган жерге скотч менен чаптаңыз

3 -кадам: ПРОГРАММА

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

Видеону ноутбуктан телефонго чыгаруу үчүн Play дүкөнүнөн 'Remotr' аттуу колдонмону колдондум

2.1) REMOTR-

Компьютериңизге REMOTR тиркемесин орнотуңуз жана каттоо эсебин түзүңүз

Мына шилтеме-

remotrapp.com/#download

Смартфонуңузга REMOTR колдонмосун орнотуңуз

2.2) ВИДЕО СТРИМИНГ

Адегенде компьютерди да, ошол эле WiFi тармагын да туташтырып, эки түзмөктө тең REMOTR эсебиңизди киргизиңиз

азыр программалык камсыздоону каалаган оюнду кол менен кошуңуз

Эми колдонмо компьютерди администратор катары көрсөтөт, ал агымды баштоо үчүн аны басыңыз

VR режиминде агылтуу үчүн смартфонуңуздагы vr режимин иштетиңиз

Эгерде сиз түшүнбөй жатсаңыз, толук маалымат алуу үчүн бул шилтемени караңыз

remotrapp.com/en/howto

4 -кадам: НЕГИЗГИ КОД

Бул долбоордун коду катаал же татаал эмес, бирок узун

Бул жерде кодду көчүрүп, arduino файлыңызга чаптаңыз

ARDUINO

LEONARDO чычкан-

Мен Gabry295ти кайталап койдум. Бул чычкан коду анын башына негизделген Mouse көрсөтмө

#кошуу

#кошуу

#кошуу

#кошуу

int aim_pin;

int shoot_pin;

MPU6050 мпу;

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

int vx, vy;

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

Serial.begin (9600);

Mouse.begin ();

Wire.begin ();

mpu.initialize ();

if (! mpu.testConnection ()) {

while (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 тарабынан баш чычкандын кодун текшериңиз

Mouse.move (vx, vy);

кечигүү (20);

while (shoot_pin == HIGH);

{

Mouse.click ();

}

while (aim_pin == HIGH);

{

Mouse.click ();

}

}

Леонардо клавиатурасы

#кошуу

int Граната;

int gun_pin;

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

weapon_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');

}

жатканда (qurol_пин == БИЙИК)

{

Keyboard.press ('q');

}

while (reload_pin == HIGH)

{

Keyboard.press ('r');

}

while (motion1_pin> 340 && motion1_pin <420)

{

Keyboard.press ('w');

}

жатканда (motion1_pin> 420)

{

Keyboard.press ('w');

Keyboard.press ('p');

}

while (motion2_pin> 340 && motion2_pin <420)

{

Keyboard.press ('w');

}

жатканда (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');

}

жатканда (posture_pin <340)

{

Keyboard.press ('z');

}

while (nightvision_pin == HIGH)

{

Keyboard.press ('n');

}

}

}

5 -кадам: ТЕСТТИН КОДУ

Бул жерде функцияга жараша негизги коддон бөлүнгөн бир нече коддор

АТУУ-

#кошуу

int x;

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

pinMode (8, INPUT);

Mouse.begin ();

}

void loop () {

x = digitalRead (8);

эгер (x == HIGH)

{

Mouse.click ('g');

}

}

Максат-

#кошуу

#кошуу

#кошуу

#кошуу

MPU6050 мпу;

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

int vx, vy;

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

Serial.begin (9600);

Mouse.begin ();

Wire.begin ();

mpu.initialize ();

if (! mpu.testConnection ()) {

while (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гө жакын маанилерди берет. Сыноо кодун колдонуп, нөлдөн алыс маанилер бар болсо чактап, башка нерсени алсаңыз, бул маанини өзгөртүңүз.

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 #include

int x;

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

pinMode (8, INPUT);

Keyboard.begin ();

}

void loop () {

x = digitalRead (8);

эгер (x == HIGH)

{

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 портуна туташтырыңыз, сенсорлорду жогоруда көрсөтүлгөндөй туташтырыңыз

*Жогорудагы сүрөттөрдөгү жебе белгилери сенсор туш болушу керек болгон багытты билдирет

Эгерде сизде кандайдыр бир шек болсо, комментарий калтыруудан тартынбаңыз жана тажрыйбаңыз менен бөлүшүүнү унутпаңыз

Ушуну менен рахмат жана

КОШ БОЛУҢУЗ.

Сунушталууда: