Arduino Vr: 4 soļi
Arduino Vr: 4 soļi
Arduino Vr
Arduino Vr

Sveiki, mani sauc Kristians un man ir 13 gadu. Es mīlu arduino un man ir talants, tāpēc šeit ir mana pamācība arduino vr.

Piegādes

Piegādes:

1. Arduino dēlis Mega, Due, Uno vai Yun.

2. Vadi no vīrieša uz vīrieti (standarta džemperu vadi).

3. Neliels maizes dēlis

4. USB

5. GY-521 MPU-6050

Neobligāti:

6. 5,5 collu 2560*1440 2K LCD ekrāns no HDMI līdz MIPI

7. Fresnel objektīvs Fokālais garums 50mm

8. 3-D printera vai 3D printera pakalpojums

1. darbība: salieciet

Salieciet
Salieciet

Izmantojiet shēmu, lai to saliktu kopā.

2. darbība. Kā instalēt bibliotēku?

Apskatiet Github: https://github.com/relativty/Relativ Jūs varat to instalēt, izmantojot Git, vai tieši lejupielādēt.

3. darbība: kods

// ir nepieciešami i2cdevlib un MPU6050:

// Liels paldies pārsteidzošajam Džefam Roubergam <3, dodieties pārbaudīt viņa repo, lai uzzinātu vairāk MPU6050. // ================================================ ================================

// I2Cdev un MPU6050 ir jāinstalē kā bibliotēkas, vai arī.cpp/.h failiem // abām klasēm jābūt projekta iekļaušanas ceļā

#ietver "Relativ.h"

#include "I2Cdev.h"

#include "MPU6050_6Axis_MotionApps20.h"

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

MPU6050 mpu; Relativ relativ;

#define INTERRUPT_PIN 2

// IMU statuss un vadība: bool dmpReady = false; // true, ja DMP init bija veiksmīgs uint8_t mpuIntStatus; uint8_t devStatus; // 0 = panākumi,! 0 = kļūda uint16_t packetSize; uint16_t fifoCount; uint8_t fifoBuffer [64];

Kvartērijs q; // [w, x, y, z]

gaistošs bool mpuInterrupt = false; // norāda, vai MPU pārtraukšanas pin ir kļuvis liels void dmpDataReady () {mpuInterrupt = true; }

void setup () {#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin (); Wire.setClock (400000); // 400 kHz I2C pulkstenis. Komentējiet šo rindiņu, ja rodas apkopošanas grūtības #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire:: setup (400, true); #endif

relativ.startNative (); // "startNative" var izmantot 32 bitu ARM kodola mikrokontrolleram ar vietējo USB, piemēram, Arduino DUE // kas ir ieteicams. // Relativ.start (); // "starts" ir paredzēts NENATĪVAM USB mikrokontrolleram, piemēram, Arduino MEGA, Arduino UNO.. // Tie ir ievērojami lēnāki. mpu.initialize (); pinMode (INTERRUPT_PIN, INPUT);

SerialUSB.println (mpu.testConnection ()? F ("MPU6050 savienojums izdevies"): F ("MPU6050 savienojums neizdevās"));

// konfigurēt DMP devStatus = mpu.dmpInitialize ();

// ================================== // sniedz savus žiroskopu nobīdes šeit: // === =============================== mpu.setXGyroOffset (220); mpu.setYGyroOffset (76); mpu.setZGyroOffset (-85); mpu.setZAccelOffset (1788);

// devSTatus, ja viss darbojās pareizi, ja (devStatus == 0) {// ieslēdziet DMP tagad, kad tas ir gatavs mpu.setDMPEnabled (true);

// iespējot Arduino pārtraukšanas noteikšanu attachInterrupt (digitalPinToInterrupt (INTERRUPT_PIN), dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus ();

dmpReady = true;

// iegūt paredzamo DMP paketes izmēru vēlākai salīdzināšanai packetSize = mpu.dmpGetFIFOPacketSize (); } cits {// KĻŪDA! }}

void loop () {// Nedariet neko, ja DMP netiek pareizi inicializēts, ja (! dmpReady) atgriežas;

// gaidiet, kamēr būs pieejams MPU pārtraukums vai papildu pakete (-s), kamēr (! mpuInterrupt && fifoCount <packetSize) {}

// atiestatīt pārtraukuma karodziņu un iegūt INT_STATUS baitu mpuInterrupt = false; mpuIntStatus = mpu.getIntStatus ();

// iegūt pašreizējo FIFO skaitu fifoCount = mpu.getFIFOCount ();

if ((mpuIntStatus & 0x10) || fifoCount == 1024) {mpu.resetFIFO (); } // pārbaudiet, vai nav pārtraukuma 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 "var izmantot 32 bitu ARM kodola mikrokontrolleram ar vietējo USB, piemēram, Arduino DUE // kas ir ieteicams. //relativ.updateOrientation(qx, qy, qz, qw, 4); // Relativ.updateOrientation" ir NENATĪVAM USB mikrokontrolleram, piemēram, Arduino MEGA, Arduino UNO.. // Tie ir ievērojami lēnāki. }}

4. solis: spēlējiet

pārvietojot mazo maizes dēli jebkurā VR spēlē, vajadzētu pagriezt kameru

Ieteicams: