Satura rādītājs:

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

Video: Arduino Vr: 4 soļi

Video: Arduino Vr: 4 soļi
Video: Amazing arduino project 2024, Novembris
Anonim
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: