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

Arduino Vr: 4 שלבים
Arduino Vr: 4 שלבים

וִידֵאוֹ: Arduino Vr: 4 שלבים

וִידֵאוֹ: Arduino Vr: 4 שלבים
וִידֵאוֹ: Output DC or AC Voltage using MCP4725 DAC with LCD and PWM to Voltage Converter with Arduino 2024, נוֹבֶמבֶּר
Anonim
Arduino Vr
Arduino Vr

היי שמי כריסטיאן ואני בן 13. אני אוהב ארדואינו ויש לי כישרון לזה אז הנה ההנחיה שלי עבור ארדואינו VR.

אספקה

אספקה:

1. לוח Arduino מגה, דו, אונו או יון.

2. חוטי זכר לזכר (חוטי מגשר סטנדרטיים).

3. קרש לחם קטן

4. USB

5. GY-521 MPU-6050

אופציונאלי:

6. 5.5 אינץ '2560*1440 מסך LCD 2K HDMI ל- MIPI

7. עדשת פרנל אורך מוקד 50 מ מ

8. שירות מדפסת תלת מימד או מדפסת תלת מימד

שלב 1: הרכבה

להרכיב
להרכיב

השתמש בסכימה כדי להרכיב אותו.

שלב 2: כיצד להתקין את הספרייה?

תסתכל על Github: https://github.com/relativty/Relativ תוכל להתקין אותו באמצעות Git או להוריד ישירות.

שלב 3: קוד

// יש צורך ב- i2cdevlib ו- MPU6050:

// תודה רבה לג'ף רווברג המדהים <3, לכו לבדוק את המאגר שלו כדי ללמוד עוד MPU6050. // ================================================= ==============================

// I2Cdev ו- MPU6050 חייבים להיות מותקנים כספריות, או שקבצי.cpp/.h // עבור שני המחלקות חייבים להיות בנתיב הכלול של הפרויקט שלך

#כלול "Relativ.h"

#כלול "I2Cdev.h"

#כלול "MPU6050_6Axis_MotionApps20.h"

#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE #כלול "Wire.h" #endif

MPU6050 mpu; יחסית יחסית;

#הגדר INTERRUPT_PIN 2

// סטטוס ובקרה של IMU: bool dmpReady = false; // נכון אם DMP init הצליח uint8_t mpuIntStatus; uint8_t devStatus; // 0 = הצלחה,! 0 = שגיאה uint16_t packetSize; uint16_t fifoCount; uint8_t fifoBuffer [64];

Quaternion q; // [W X Y Z]

בול נדיף mpuInterrupt = false; // מציין אם סיכת ההפרעה של MPU הפכה לחלל חלל dmpDataReady () {mpuInterrupt = true; }

הגדרת בטל () {#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin (); Wire.setClock (400000); // שעון I2C של 400kHz. הגיבו על שורה זו אם יש לכם קשיי הידור #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire:: setup (400, true); #endif

relativ.startNative (); // ניתן להשתמש ב- "startNative" עבור מיקרו-בקר ARM 32 סיביות עם Native USB כמו Arduino DUE // וזה מומלץ. // Relativ.start (); // "התחל" מיועד לבקר מיקרו USB מסוג NON-NATIVE, כמו Arduino MEGA, Arduino UNO.. // אלה הם איטיים יותר באופן משמעותי. mpu.initialize (); pinMode (INTERRUPT_PIN, INPUT);

SerialUSB.println (mpu.testConnection ()? F ("חיבור MPU6050 מוצלח"): F ("חיבור MPU6050 נכשל"));

// להגדיר את DMP devStatus = mpu.dmpInitialize ();

// ================================= // ספק קיזוזים משלך כאן: // === =============================== mpu.setXGyroOffset (220); mpu.setYGyroOffset (76); mpu.setZGyroOffset (-85); mpu.setZAccelOffset (1788);

// devSTatus אם הכל עבד כראוי אם (devStatus == 0) {// הפעל את ה- DMP, כעת כשהוא מוכן mpu.setDMPEnabled (true);

// הפעל את זיהוי הפרעות Arduino attachInterrupt (digitalPinToInterrupt (INTERRUPT_PIN), dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus ();

dmpReady = true;

// קבל את גודל חבילת DMP הצפויה להשוואה מאוחר יותר packetSize = mpu.dmpGetFIFOPacketSize (); } אחר {// שגיאה! }}

לולאת void () {// אל תעשה כלום אם DMP לא יאתחל כראוי אם (! dmpReady) החזרה;

// המתן עד ש- MPU interrupt או חבילות נוספות יהיו זמינות בזמן (! mpuInterrupt && fifoCount <packetSize) {}

// אפס את דגל הפרעה וקבל INT_STATUS בייט mpuInterrupt = false; mpuIntStatus = mpu.getIntStatus ();

// קבל את ספירת FIFO הנוכחית fifoCount = mpu.getFIFOCount ();

if ((mpuIntStatus & 0x10) || fifoCount == 1024) {mpu.resetFIFO (); } // בדוק אם יש הפרעה אחרת אם (mpuIntStatus & 0x02) {while (fifoCount <packetSize) fifoCount = mpu.getFIFOCount (); mpu.getFIFOBytes (fifoBuffer, packetSize); fifoCount -= packetSize; mpu.dmpGetQuaternion (& q, fifoBuffer); relativ.updateOrientationNative (q.x, q.y, q.z, q.w, 4); // updateOrientationNative "יכול לשמש עבור מיקרו-בקר ARM 32 סיביות עם Native USB כמו Arduino DUE // שמומלץ. //relativ.updateOrientation(qx, qy, qz, qw, 4); // Relativ.updateOrientation" הוא לבקר מיקרו USB מסוג NON-NATIVE, כמו Arduino MEGA, Arduino UNO.. // אלה איטיים יותר באופן משמעותי. }}

שלב 4: שחק

הזזת לוח הלחם הקטן בכל משחק VR צריכה לסובב את המצלמה

מוּמלָץ: