„Arduino Vr“: 4 žingsniai
„Arduino Vr“: 4 žingsniai
Anonim
Arduino Vr
Arduino Vr

Sveiki, mano vardas Kristianas ir man 13 metu. Aš myliu arduino ir turiu tam talentą, todėl čia yra mano pamokymas arduino vr.

Prekės

Priedai:

1. „Arduino“lenta „Mega“, „Due“, „Uno“arba „Yun“.

2. Vyrų ir vyrų (standartiniai jungiamieji laidai) laidai.

3. Maža duonos lenta

4. USB

5. GY-521 MPU-6050

Neprivaloma:

6. 5,5 colio 2560*1440 2K LCD ekranas nuo HDMI iki MIPI

7. Fresnelio objektyvas židinio nuotolis 50 mm

8. 3D spausdintuvo arba 3D spausdintuvo paslauga

1 žingsnis: Surinkite

Surinkti
Surinkti

Norėdami tai padaryti, naudokite schemą.

2 veiksmas: kaip įdiegti biblioteką?

Pažvelkite į „Github“: https://github.com/relativty/Relativ Galite jį įdiegti naudodami „Git“arba tiesiogiai atsisiųsti.

3 žingsnis: kodas

// reikalingi „i2cdevlib“ir „MPU6050“:

// Didelis ačiū nuostabiam Jeffui Rowbergui <3, eikite patikrinti jo repo ir sužinokite daugiau MPU6050. // ================================================ ================================

// „I2Cdev“ir „MPU6050“turi būti įdiegti kaip bibliotekos, kitaip abiejų klasių.cpp/.h failai // turi būti jūsų projekto įtraukimo kelyje

#įtraukti „Santykinis.h“

#include "I2Cdev.h"

#include "MPU6050_6Axis_MotionApps20.h"

#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE #įtraukti „Wire.h“#endif

MPU6050 mpu; Santykinis santykinis;

#define INTERRUPT_PIN 2

// IMU būsena ir valdymas: bool dmpReady = false; // tiesa, jei DMP iniciatyva buvo sėkminga uint8_t mpuIntStatus; uint8_t devStatus; // 0 = sėkmė,! 0 = klaida uint16_t packetSize; uint16_t fifoCount; uint8_t fifoBuffer [64];

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

nepastovus bool mpuInterrupt = false; // nurodo, ar MPU pertraukimo smeigtukas tapo labai tuščias dmpDataReady () {mpuInterrupt = true; }

void setup () {#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin (); Wire.setClock (400000); // 400 kHz I2C laikrodis. Komentuokite šią eilutę, jei turite kompiliavimo sunkumų #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire:: setup (400, tiesa); #endif

relativ.startNative (); // „startNative“gali būti naudojamas 32 bitų ARM pagrindiniam mikrovaldikliui su „Native USB“, pvz., „Arduino DUE //“. // Santykinis.start (); // „start“skirtas NEMATYVIUI USB mikrovaldikliui, pvz., „Arduino MEGA“, „Arduino UNO“. // Jie yra žymiai lėtesni. mpu.initialize (); pinMode (INTERRUPT_PIN, INPUT);

SerialUSB.println (mpu.testConnection ()? F ("MPU6050 ryšys sėkmingas"): F ("MPU6050 ryšys nepavyko"));

// konfigūruoti DMP devStatus = mpu.dmpInitialize ();

// ================================== // pateik savo giroskopo kompensavimą čia: // === =============================== mpu.setXGyroOffset (220); mpu.setYGyroOffset (76); mpu.setZGyroOffset (-85); mpu.setZAccelOffset (1788);

// devSTatus, jei viskas veikė tinkamai, jei (devStatus == 0) {// įjunkite DMP dabar, kai jis paruoštas mpu.setDMPEnabled (true);

// įgalinti „Arduino“pertraukimo aptikimą attachInterrupt (digitalPinToInterrupt (INTERRUPT_PIN), dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus ();

dmpReady = tiesa;

// gauti laukiamą DMP paketo dydį vėlesniam palyginimui packetSize = mpu.dmpGetFIFOPacketSize (); } else {// KLAIDA! }}

void loop () {// Nieko nedarykite, jei DMP nepradės tinkamai inicijuoti, jei (! dmpReady) grįš;

// laukti, kol bus pasiektas MPU pertraukimas arba papildomas paketas (-ai), kol (! mpuInterrupt && fifoCount <packetSize) {}

// iš naujo nustatyti pertraukimo vėliavą ir gauti INT_STATUS baitą mpuInterrupt = false; mpuIntStatus = mpu.getIntStatus ();

// gauti dabartinį FIFO skaičių fifoCount = mpu.getFIFOCount ();

if ((mpuIntStatus & 0x10) || fifoCount == 1024) {mpu.resetFIFO (); } // patikrinkite, ar nėra pertraukos 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 "gali būti naudojamas 32 bitų ARM pagrindiniam mikrovaldikliui su vietiniu USB, pvz., Arduino DUE // kuris yra rekomenduojamas. //relativ.updateOrientation(qx, qy, qz, qw, 4); // Relativ.updateOrientation" NEMATYVU USB mikrovaldikliui, pvz., „Arduino MEGA“, „Arduino UNO..“// Jie yra žymiai lėtesni. }}

4 žingsnis: žaiskite

perkeliant mažą duonos lentą į bet kurį VR žaidimą, fotoaparatas turi būti pasuktas

Rekomenduojamas: