תוכן עניינים:

חליפת מציאות מדומה באמצעות Arduino: 7 שלבים (עם תמונות)
חליפת מציאות מדומה באמצעות Arduino: 7 שלבים (עם תמונות)

וִידֵאוֹ: חליפת מציאות מדומה באמצעות Arduino: 7 שלבים (עם תמונות)

וִידֵאוֹ: חליפת מציאות מדומה באמצעות Arduino: 7 שלבים (עם תמונות)
וִידֵאוֹ: מרכז חופש: טיפול בילד עם אוטיזם באמצעות מציאות מדומה 2024, נוֹבֶמבֶּר
Anonim
חליפת מציאות מדומה באמצעות Arduino
חליפת מציאות מדומה באמצעות Arduino

יצרתי את הפרויקט הזה למשחקי מחשב רגילים במציאות VR מלאה. פרויקט זה מחקה את התנועות שלך ללחיצה או לחיצה על מקשי המקלדת

דוגמא- כאשר אתה מתקדם קדימה הפעולה של לחיצה על המקש 'w' נחקה.

חיקתי את המשחק Call of Duty 4: Modern Warfare אבל אל תבחר משחקים שיש להם רתיעה בזמן הירי כי זה ישנה את מיקום ברירת המחדל של העכבר

שלב 1: דרישות

הדרישות הן-

יש רשימה מלאה של דברים שאתה צריך כדי להפוך את החליפה הזו

חיישני מגע -5

חיישן כוח -1

GPU 6050 - 4

(אוֹ)

GPU 6050 - 2 ומד תאוצה - 2

משקפיים Vr

טלפון מאופשר Vr

מחשב

נקודת אינטרנט אלחוטי

אקדח צעצוע

משחק מחשב (השתמשתי ב- Call of Duty- Modern Warfare 1)

חוטי לוח לחם (זכר-נקבה)

ARDUINO LEONARDO-2

אוטון שילד - 2

מקור חשמל (ליפו)

חוטי קשת

שלב 2: חומרה

חוּמרָה
חוּמרָה
חוּמרָה
חוּמרָה
חוּמרָה
חוּמרָה

*reload_pin, shoot_pin, pin night vision_pin, granate_pin, pin -change_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

עבור movement_pin2-

ציר A2- x

GND-GND

5v - PWR/VCC

עבור posture_pin-

ציר A0- x

GND-GND

5v - PWR/VCC

עבור נשק_סיכה -

sig-5v

GND-GND

5v - PWR/VCC

עבור Reload_pin -

pin12 - 5v

GND-GND

5v - PWR/VCC

עבור Nightvision_pin -

סיכה 10 - 5v

GND-GND

5v - PWR/VCC

עבור shoot_pin -

Pin7 - 5v

GND-GND

5v - PWR/VCC

עבור aim_pin -

סיכה 8 - 5v

5v - PWR/VCC

1.3) חוטי מכירה

הלחם את חוטי לוח הלחם בעזרת חוטי הקשת

1.4) בידוד

הדביקו את החוטים בעזרת סרט הבידוד במקום בו הלחמתם כדי להימנע מקצרים

שלב 3: תוכנה

תוֹכנָה
תוֹכנָה
תוֹכנָה
תוֹכנָה

השתמשתי באפליקציה בשם 'Remotr' מחנות Play כדי להעביר את הסרטון מהמחשב הנייד לטלפון

2.1) מרחוק-

התקן את יישום REMOTR במחשב שלך וצור חשבון

הנה הקישור-

remotrapp.com/#download

התקן את אפליקציית REMOTR בסמארטפון שלך

2.2) זרימת וידיאו

תחילה חבר את המחשב ואת אותה רשת WiFi והזן את חשבון REMOTR בשני המכשירים

כעת הוסף ידנית את המשחק שברצונך להזרים בתוכנה

כעת האפליקציה תציג את המחשב כמנהל לחץ עליו כדי להתחיל להזרים

כדי להזרים ב- VR אפשר מצב VR בסמארטפון שלך

אם אינך יכול להבין בדוק קישור זה למידע מפורט

remotrapp.com/en/howto

שלב 4: קוד עיקרי

הקוד לפרויקט זה אינו קשה או מורכב אלא ארוך

הנה הקוד פשוט העתק אותו והדבק אותו בקובץ הארדואינו שלך

ארדואינו

עכבר LEONARDO-

הפניתי את Gabry295. קוד עכבר זה מבוסס על ראשו העכבר ניתן להדרכה

#לִכלוֹל

#לִכלוֹל

#לִכלוֹל

#לִכלוֹל

int aim_pin;

int shoot_pin;

MPU6050 mpu;

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

int vx, vy;

הגדרת בטל () {

Serial.begin (9600);

Mouse.begin ();

Wire.begin ();

mpu.initialize ();

אם (! mpu.testConnection ()) {

בעוד (1);

}

pinMode (7, INPUT);

pinMode (8, INPUT);

}

לולאת חלל () {

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

{

לחיצת עכבר();

}

בעוד (aim_pin == HIGH);

{

לחיצת עכבר();

}

}

מקלדת לאונרדו

#לִכלוֹל

int רימון;

int weapon_pin;

int reload_pin;

int movement1_pin;

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

}

לולאת חלל ()

{

Granade_pin = digitalRead (8);

weapon_pin = digitalRead (9);

movement1_pin = analogRead (A1);

movement2_pin = analogRead (A2);

posture_pin = analogRead (A0);

reload_pin = digitalRead (12);

nightvision_pin = digitalRead (10);

אם (רימון == HIGH)

{

Keyboard.press ('g');

}

בעוד (נשק_סיכה == גבוה)

{

Keyboard.press ('q');

}

בעוד (reload_pin == HIGH)

{

Keyboard.press ('r');

}

while (movement1_pin> 340 && movement1_pin <420)

{

Keyboard.press ('w');

}

while (movement1_pin> 420)

{

Keyboard.press ('w');

Keyboard.press ('p');

}

while (movement2_pin> 340 && movement2_pin <420)

{

Keyboard.press ('w');

}

בעוד (movement2_pin> 420)

{

Keyboard.press ('p');

Keyboard.press ('w');

}

בעוד (posture_pin> 340 && posture_pin <420)

{

Keyboard.press ('c');

}

בעוד (posture_pin> 420)

{

Keyboard.press ('l');

}

בעוד (posture_pin <340)

{

Keyboard.press ('z');

}

בעוד (nightvision_pin == HIGH)

{

Keyboard.press ('n');

}

}

}

שלב 5: בדיקת קודים

להלן מספר הקודים המחולקים מהקוד הראשי בהתאם לתפקוד

צילומים-

#לִכלוֹל

int x;

הגדרת בטל () {

pinMode (8, INPUT);

Mouse.begin ();

}

לולאת חלל () {

x = digitalRead (8);

אם (x == HIGH)

{

עכבר.קליק ('g');

}

}

מכוון-

#לִכלוֹל

#לִכלוֹל

#לִכלוֹל

#לִכלוֹל

MPU6050 mpu;

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

int vx, vy;

הגדרת בטל () {

Serial.begin (9600);

Mouse.begin ();

Wire.begin ();

mpu.initialize ();

אם (! mpu.testConnection ()) {

בעוד (1);

}

}

לולאת חלל () {

shoot_pin = digitalRead (7);

aim_pin = digitalRead (8);

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

vx = (gx+300)/200; // "+300" מכיוון שציר ה- x של הג'ירוסקופ נותן ערכים בערך -350 בזמן שהוא לא זז. שנה את הערך הזה אם אתה מקבל משהו אחר באמצעות קוד TEST, ונחבט אם יש ערכים רחוקים מאפס.

vy = -(gz_ -100)/200; // אותו הדבר כאן בערך "-100"

טעינה מחדש-

#לִכלוֹל

int x;

הגדרת בטל () {

pinMode (8, INPUT);

Keyboard.begin ();

}

לולאת חלל () {

x = digitalRead (8);

אם (x == HIGH)

{

Keyboard.press ('r');

}

אַחֵר

{

Keyboard.release ('r');

}

}

לילה ויזה #כלול

int x;

הגדרת בטל () {

pinMode (8, INPUT);

Keyboard.begin ();

}

לולאת חלל () {

x = digitalRead (8);

אם (x == HIGH)

{

Keyboard.press ('g');

}

אַחֵר

{

Keyboard.release ('g');

}

}

CROUCH ו נוטה-

#לִכלוֹל

int y;

הגדרת בטל () {

pinMode (A0, INPUT);

Serial.begin (9600);

}

לולאת חלל () {

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

נוטה - l

החלפת נשק - ש

ספרינט - עמ '

לעמוד/לקפוץ - ז

ראיית לילה - נ

תנועה קדימה - w

רימון - ז

שלב 7: הגדרה

מגדיר
מגדיר
מגדיר
מגדיר
מגדיר
מגדיר

לבסוף הגענו לשלב האחרון עכשיו לשים את הארדואינו

לוחות בקופסה והחליקו לתוך התיק

עכשיו חבר את המיקרו USB של הארדואינו ליציאות ה- USB של המחשב הנייד חבר כעת את החיישנים לפי ההנחיות למעלה

*סימני החץ בתמונות לעיל מייצגים את הכיוון שאליו חייבים החיישן לפנות

אם יש לך ספקות אל תהסס להשאיר תגובה ואל תשכח לשתף את החוויה שלך

זהו תודה ו

ביי.

מוּמלָץ: