Turinys:

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

Video: „Arduino Vr“: 4 žingsniai

Video: „Arduino Vr“: 4 žingsniai
Video: Arduino pirmi zingsniai(pirma programa) 2024, Lapkritis
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: