ዝርዝር ሁኔታ:

Arduino Vr: 4 ደረጃዎች
Arduino Vr: 4 ደረጃዎች

ቪዲዮ: Arduino Vr: 4 ደረጃዎች

ቪዲዮ: Arduino Vr: 4 ደረጃዎች
ቪዲዮ: 2023 Tesla MODEL Y Performance ⚠️ BUT Did You See… 🤤😘 #Shorts #Short #Tesla #teslamodely 2024, ሀምሌ
Anonim
አርዱዲኖ ቁ
አርዱዲኖ ቁ

ሰላም ስሜ ክርስቲያን ነው እና 13 ዓመቴ ነው። አርዱዲኖን እወዳለሁ እና ለእሱ ተሰጥኦ አለኝ ስለዚህ እዚህ ለአርዱዲኖ ቁ.

አቅርቦቶች

አቅርቦቶች

1. የአርዱዲኖ ቦርድ ሜጋ ፣ ዱን ፣ ኡኖ ወይም ዩን።

2. ከወንድ ወደ ወንድ (መደበኛ ዝላይ ሽቦዎች) ሽቦዎች።

3. አነስተኛ የዳቦ ሰሌዳ

4. ዩኤስቢ

5. ጂአይ -521 MPU-6050

አማራጭ

6. 5.5 ኢንች 2560*1440 2 ኬ ኤልሲዲ ማያ ገጽ ኤችዲኤምአይ ወደ MIPI

7. Fresnel ሌንስ የትኩረት ርዝመት 50 ሚሜ

8. 3-ዲ አታሚ ወይም 3 ዲ አታሚ አገልግሎት

ደረጃ 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; Relativ relativ;

#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; // [ወ ፣ x ፣ y ፣ z]

ተለዋዋጭ bool mpuInterrupt = ሐሰት; // የሚያመለክተው የ MPU ማቋረጫ ፒን ከፍ ያለ ባዶ መሆኑን dmpDataReady () {mpuInterrupt = true; }

ባዶነት ማዋቀር () { #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin (); Wire.setClock (400000); // 400kHz I2C ሰዓት። የማጠናቀር ችግሮች ካጋጠሙዎት ይህንን መስመር አስተያየት ይስጡ #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire:: ማዋቀር (400 ፣ እውነት) ፤ #ኤንዲፍ

relativ.startNative (); // “startNative” እንደ አርዱዲኖ DUE // የሚመከር እንደ ቤተኛ ዩኤስቢ ባለ 32 ቢት አርኤም ኮር ማይክሮ መቆጣጠሪያን ሊያገለግል ይችላል። // Relativ.start (); // “ጅምር” ልክ እንደ አርዱዲኖ ሜጋ ፣ አርዱዲኖ UNO ላልሆኑት የዩኤስቢ ማይክሮ መቆጣጠሪያ ነው። // እነዚያ በከፍተኛ ሁኔታ ቀርፋፋ ናቸው። mpu.initialize (); pinMode (INTERRUPT_PIN ፣ ማስገቢያ);

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 (እውነት) ፤

// የአርዲኖ ማቋረጫ ማወቂያ ዓባሪን ያንቁ መስተጓጎል (digitalPinToInterrupt (INTERRUPT_PIN) ፣ dmpDataReady ፣ RISING); mpuIntStatus = mpu.getIntStatus ();

dmpReady = እውነት;

// በኋላ ላይ ለማነጻጸር packetSize = mpu.dmpGetFIFOPacketSize () የሚጠበቀውን የ DMP ጥቅል መጠን ያግኙ። } ሌላ {// ስህተት! }}

ባዶነት loop () {// (! dmpReady) ከተመለሰ DMP በትክክል ካልጀመረ ምንም ነገር አያድርጉ ፤

// (! mpuInterrupt && fifoCount <packetSize) {} በሚገኝበት ጊዜ የ MPU ማቋረጫ ወይም ተጨማሪ ፓኬት (ዎች) እስኪገኙ ድረስ ይጠብቁ።

// የተቋረጠውን ባንዲራ ዳግም ያስጀምሩ እና INT_STATUS ባይት mpuInterrupt = ሐሰት ያግኙ። mpuIntStatus = mpu.getIntStatus ();

// የአሁኑን FIFO ቆጠራ fifoCount = mpu.getFIFOCount ();

ከሆነ ((mpuIntStatus & 0x10) || fifoCount == 1024) {mpu.resetFIFO (); } // ሌላ ለማቋረጥ ያረጋግጡ (mpuIntStatus & 0x02) {እያለ (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 “የሚመከር እንደ አርዱዲኖ DUE // ቤተኛ ዩኤስቢ ለ 32 ቢት አርኤም ኮር ማይክሮ መቆጣጠሪያ ሊውል ይችላል። // relativ.updateOrientation(qx ፣ qy ፣ qz ፣ qw ፣ 4); እንደ አርዱዲኖ ሜጋ ፣ አርዱዲኖ UNO ላሉት ላልሆኑ የዩኤስቢ ማይክሮ መቆጣጠሪያ ፣ // እነዚያ በከፍተኛ ሁኔታ ቀርፋፋ ናቸው። }}

ደረጃ 4: ይጫወቱ

በማንኛውም የ vr ጨዋታ ላይ ትንሹን የዳቦ ሰሌዳ ማንቀሳቀስ ካሜራውን ማሽከርከር አለበት

የሚመከር: