Sisällysluettelo:

Arduino Vr: 4 vaihetta
Arduino Vr: 4 vaihetta

Video: Arduino Vr: 4 vaihetta

Video: Arduino Vr: 4 vaihetta
Video: Как создать NAS из старых жестких дисков 2024, Heinäkuu
Anonim
Arduino Vr
Arduino Vr

Hei Nimeni on Christian ja olen 13 -vuotias. Rakastan arduinoa ja minulla on siihen lahjakkuutta, joten tässä on ohjeeni arduino vr: lle.

Tarvikkeet

Tarvikkeet:

1. Arduino -kortti Mega, Due, Uno tai Yun.

2. Uros -uros (vakiohyppyjohdot).

3. Pieni leipälauta

4. USB

5. GY-521 MPU-6050

Valinnainen:

6. 5,5 tuuman 2560*1440 2K LCD -näyttö HDMI - MIPI

7. Fresnel -linssin polttoväli 50 mm

8. 3D-tulostin tai 3D-tulostinpalvelu

Vaihe 1: Kokoa

Koota
Koota

Käytä kaaviota kootaksesi sen.

Vaihe 2: Kuinka asentaa kirjasto?

Katso Githubia: https://github.com/relativty/Relativ Voit joko asentaa sen Gitin avulla tai ladata suoraan.

Vaihe 3: Koodi

// tarvitaan i2cdevlib ja MPU6050:

// Suuret kiitokset hämmästyttävälle Jeff Rowbergille <3, käy tutustumassa hänen repoonsa saadaksesi lisätietoja MPU6050. // ================================================ ================================

// I2Cdev ja MPU6050 on asennettava kirjastoina, muuten kummankin luokan.cpp/.h -tiedostot // on sisällytettävä projektisi sisällytyspolkuun

#Sisällytä "Suhteellinen.h"

#include "I2Cdev.h"

#include "MPU6050_6Axis_MotionApps20.h"

#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE #sisältää "Wire.h" #endif

MPU6050 mpu; Suhteellinen suhteellinen;

#define INTERRUPT_PIN 2

// IMU -tila ja ohjaus: bool dmpReady = false; // totta, jos DMP -aloitus onnistui uint8_t mpuIntStatus; uint8_t devStatus; // 0 = onnistunut,! 0 = virhe uint16_t packetSize; uint16_t fifoCount; uint8_t fifoBuffer [64];

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

haihtuva bool mpuInterrupt = false; // osoittaa, onko MPU -keskeytysnasta mennyt korkeaksi void dmpDataReady () {mpuInterrupt = true; }

void setup () {#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin (); Wire.setClock (400000); // 400 kHz I2C -kello. Kommentoi tätä riviä, jos sinulla on kokoamisvaikeuksia #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire:: setup (400, true); #loppu Jos

relativ.startNative (); // "startNative" voidaan käyttää 32-bittisessä ARM-ytimen mikrokontrollerissa, jossa on Native USB, kuten Arduino DUE //, jota suositellaan. // Suhteellinen.start (); // "start" on NON-NATIVE USB -mikro-ohjaimelle, kuten Arduino MEGA, Arduino UNO.. // Ne ovat huomattavasti hitaampia. mpu.initialize (); pinMode (INTERRUPT_PIN, INPUT);

SerialUSB.println (mpu.testConnection ()? F ("MPU6050 -yhteys onnistui"): F ("MPU6050 -yhteys epäonnistui"));

// määritä DMP devStatus = mpu.dmpInitialize ();

// ==================================== // anna omat gyroskooppisiirrot täältä: // === =============================== mpu.setXGyroOffset (220); mpu.setYGyroOffset (76); mpu.setZGyroOffset (-85); mpu.setZAccelOffset (1788);

// devSTatus, jos kaikki toimi oikein, jos (devStatus == 0) {// kytke DMP päälle nyt, kun se on valmis mpu.setDMPEnabled (true);

// ota käyttöön Arduinon keskeytyksen tunnistus attachInterrupt (digitalPinToInterrupt (INTERRUPT_PIN), dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus ();

dmpReady = totta;

// saat odotetun DMP -paketin koon myöhempää vertailua varten packetSize = mpu.dmpGetFIFOPacketSize (); } muu {// VIRHE! }}

void loop () {// Älä tee mitään, jos DMP ei alusta oikein, jos (! dmpReady) palaa;

// odota, että MPU -keskeytys tai lisäpaketit ovat käytettävissä, kun (! mpuInterrupt && fifoCount <packetSize) {}

// nollaa keskeytyslippu ja hanki INT_STATUS -tavu mpuInterrupt = false; mpuIntStatus = mpu.getIntStatus ();

// hanki nykyinen FIFO -lukumäärä fifoCount = mpu.getFIFOCount ();

if ((mpuIntStatus & 0x10) || fifoCount == 1024) {mpu.resetFIFO (); } // tarkista keskeytys muut 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 "voidaan käyttää 32-bittisessä ARM-ydinkontrollerissa, jossa on Native USB, kuten Arduino DUE // jota suositellaan. //relativ.updateOrientation(qx, qy, qz, qw, 4); // Relativ.updateOrientation" on NON-NATIVE USB -mikro-ohjaimelle, kuten Arduino MEGA, Arduino UNO.. // Ne ovat huomattavasti hitaampia. }}

Vaihe 4: Pelaa

pienen leipälaudan siirtäminen missä tahansa VR -pelissä pitäisi kääntää kameraa

Suositeltava: