Tartalomjegyzék:

Arduino Vr: 4 lépés
Arduino Vr: 4 lépés

Videó: Arduino Vr: 4 lépés

Videó: Arduino Vr: 4 lépés
Videó: удаление неизвестного объекта 2024, November
Anonim
Arduino Vr
Arduino Vr

Sziasztok A nevem Christian és 13 éves vagyok. Imádom az arduino -t, és van hozzá tehetségem, így itt az én utasításom egy arduino vr -hez.

Kellékek

Kellékek:

1. Arduino tábla Mega, Due, Uno vagy Yun.

2. Kábel -férfi (szabványos áthidaló vezetékek) vezetékek.

3. Kis kenyérpad

4. USB

5. GY-521 MPU-6050

Választható:

6. 5,5 hüvelykes 2560*1440 2K LCD képernyő HDMI -MIPI

7. Fresnel lencse Fókusztávolság 50 mm

8. 3D nyomtató vagy 3D nyomtató szolgáltatás

1. lépés: Szerelje össze

Összeszerelni
Összeszerelni

Használja a vázlatot az összeállításához.

2. lépés: Hogyan telepítsük a könyvtárat?

Nézze meg a Githubot: https://github.com/relativty/Relativ Telepítheti a Git használatával, vagy közvetlenül letöltheti.

3. lépés: Kód

// i2cdevlib és MPU6050 szükséges:

// Nagy köszönet a csodálatos Jeff Rowbergnek <3, nézze meg repóját, hogy többet megtudjon az MPU6050 -ről. // ================================================ ================================

// Az I2Cdev -t és az MPU6050 -t könyvtárként kell telepíteni, különben a.cpp/.h fájlokat // mindkét osztálynak tartalmaznia kell a projekt beillesztési útvonalában

#include "Relativ.h"

#include "I2Cdev.h"

#include "MPU6050_6Axis_MotionApps20.h"

#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE #include "Wire.h" #endif

MPU6050 mpu; Relativ relativ;

#define INTERRUPT_PIN 2

// IMU állapot és vezérlés: bool dmpReady = false; // igaz, ha a DMP init sikeres volt uint8_t mpuIntStatus; uint8_t devStatus; // 0 = siker,! 0 = hiba uint16_t packetSize; uint16_t fifoCount; uint8_t fifoBuffer [64];

Kvaternion q; // [w, x, y, z]

illékony bool mpuInterrupt = hamis; // azt jelzi, hogy az MPU megszakítási gombja elérte -e void dmpDataReady () {mpuInterrupt = true; }

void setup () {#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin (); Wire.setClock (400000); // 400 kHz -es I2C órajel. Kommentelje ezt a sort, ha fordítási nehézségei vannak #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire:: setup (400, igaz); #endif

relativ.startNative (); // A "startNative" használható 32 bites ARM mag mikrokontrollerhez natív USB-vel, például Arduino DUE // ami ajánlott. // Relativ.start (); // a "start" a NON-NATIVE USB mikrokontrollerre vonatkozik, mint az Arduino MEGA, Arduino UNO.. // Ezek lényegesen lassabbak. mpu.initialize (); pinMode (INTERRUPT_PIN, INPUT);

SerialUSB.println (mpu.testConnection ()? F ("Az MPU6050 kapcsolat sikeres"): F ("Az MPU6050 kapcsolat sikertelen"));

// a DMP konfigurálása devStatus = mpu.dmpInitialize ();

// =================================== // itt adja meg saját giroszkóp -eltolásait: // === =============================== mpu.setXGyroOffset (220); mpu.setYGyroOffset (76); mpu.setZGyroOffset (-85); mpu.setZAccelOffset (1788);

// devSTatus, ha minden megfelelően működött, ha (devStatus == 0) {// kapcsolja be a DMP -t, most, hogy készen áll mpu.setDMPEnabled (true);

// engedélyezze az Arduino megszakítás észlelését attachInterrupt (digitalPinToInterrupt (INTERRUPT_PIN), dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus ();

dmpReady = igaz;

// a várható DMP csomagméret beszerzése a későbbi összehasonlításhoz packetSize = mpu.dmpGetFIFOPacketSize (); } else {// HIBA! }}

void loop () {// Ne tegyen semmit, ha a DMP nem inicializálja helyesen, ha (! dmpReady) visszatér;

// várja meg, amíg az MPU megszakítása vagy további csomag (ok) elérhetők lesznek (! mpuInterrupt && fifoCount <packetSize) {}

// alaphelyzetbe állítja a megszakítás jelzőt és INT_STATUS bájtot kap mpuInterrupt = false; mpuIntStatus = mpu.getIntStatus ();

// aktuális FIFO szám lekérése fifoCount = mpu.getFIFOCount ();

if ((mpuIntStatus & 0x10) || fifoCount == 1024) {mpu.resetFIFO (); } // ellenőrizze, hogy nincs -e megszakítás else if (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 "használható 32 bites ARM mag mikrokontrollerhez natív USB-vel, például Arduino DUE // ami ajánlott. //relativ.updateOrientation(qx, qy, qz, qw, 4); // Relativ.updateOrientation" NON-NATIVE USB mikrovezérlőhöz, például Arduino MEGA, Arduino UNO.. // Ezek lényegesen lassabbak. }}

4. lépés: Játssz

a kis kenyérsütő mozgatása bármely vr játékban forgassa el a kamerát

Ajánlott: