Cuprins:

Arduino Vr: 4 pași
Arduino Vr: 4 pași
Anonim
Arduino Vr
Arduino Vr

Bună Numele meu este Christian și am 13 ani. Îmi place arduino și am un talent pentru el, așa că iată instructivul meu pentru un vr arduino.

Provizii

Provizii:

1. Placa Arduino Mega, Due, Uno sau Yun.

2. Fir de la tată la tată (fire jumper standard).

3. Pană mică

4. USB

5. GY-521 MPU-6050

Opțional:

6. Ecran LCD de 2,5 inci 2560 * 1440 2K HDMI la MIPI

7. Obiectiv Fresnel Lungime focală 50mm

8. Serviciu de imprimantă 3D sau imprimantă 3D

Pasul 1: Asamblați

Asambla
Asambla

Utilizați schema pentru ao pune împreună.

Pasul 2: Cum se instalează biblioteca?

Aruncați o privire la Github: https://github.com/relativty/Relativ Puteți să-l instalați utilizând Git sau să descărcați direct.

Pasul 3: Cod

// sunt necesare i2cdevlib și MPU6050:

// Multe mulțumiri uimitorului Jeff Rowberg <3, mergeți să verificați repo pentru a afla mai multe despre MPU6050. // ================================================= ==============================

// I2Cdev și MPU6050 trebuie să fie instalate ca biblioteci sau altfel fișierele.cpp /.h // pentru ambele clase trebuie să fie în calea de includere a proiectului dvs.

#include „Relativ.h”

#include „I2Cdev.h”

#include "MPU6050_6Axis_MotionApps20.h"

#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE #includeți "Wire.h" #endif

MPU6050 mpu; Relativ relativ;

#define INTERRUPT_PIN 2

// Starea și controlul IMU: bool dmpReady = false; // adevărat dacă inițierea DMP a avut succes uint8_t mpuIntStatus; uint8_t devStatus; // 0 = succes,! 0 = eroare uint16_t pachet Dimensiune; uint16_t fifoCount; uint8_t fifoBuffer [64];

Cuaternion q; // [W x y z]

volatile bool mpuInterrupt = false; // indică dacă pinul de întrerupere a MPU a scăzut ridicat dmpDataReady () {mpuInterrupt = true; }

void setup () {#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin (); Wire.setClock (400000); // Ceas I2C 400kHz. Comentează această linie dacă ai dificultăți de compilare #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire:: setup (400, true); #endif

relativ.startNative (); // „startNative” poate fi utilizat pentru microcontrolerul ARM pe 32 de biți cu USB nativ precum Arduino DUE // care este recomandat. // Relativ.start (); // „start” este pentru microcontrolerul USB NATIV, precum Arduino MEGA, Arduino UNO.. // Acestea sunt semnificativ mai lente. mpu.initialize (); pinMode (INTERRUPT_PIN, INPUT);

SerialUSB.println (mpu.testConnection ()? F ("conexiunea MPU6050 reușită"): F ("conexiunea MPU6050 a eșuat"));

// configurați DMP devStatus = mpu.dmpInitialize ();

// =================================== // furnizați aici propriile dvs. compensări giroscopice: // === =============================== mpu.setXGyroOffset (220); mpu.setYGyroOffset (76); mpu.setZGyroOffset (-85); mpu.setZAccelOffset (1788);

// devSTatus dacă totul a funcționat corect dacă (devStatus == 0) {// porniți DMP, acum că este gata mpu.setDMPEnabled (adevărat);

// activează detectarea întreruperilor Arduino attachInterrupt (digitalPinToInterrupt (INTERRUPT_PIN), dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus ();

dmpReady = adevărat;

// obțineți dimensiunea așteptată a pachetului DMP pentru o comparație ulterioară packetSize = mpu.dmpGetFIFOPacketSize (); } altfel {// EROARE! }}

void loop () {// Nu faceți nimic dacă DMP nu inițializează corect dacă (! dmpReady) revine;

// așteptați ca întreruperea MPU sau pachetele suplimentare să fie disponibile în timp ce (! mpuInterrupt && fifoCount <packetSize) {}

// resetează steagul de întrerupere și obține INT_STATUS octet mpuInterrupt = false; mpuIntStatus = mpu.getIntStatus ();

// obțineți numărul FIFO curent fifoCount = mpu.getFIFOCount ();

if ((mpuIntStatus & 0x10) || fifoCount == 1024) {mpu.resetFIFO (); } // verificați dacă există întrerupere altfel dacă (mpuIntStatus & 0x02) {while (fifoCount <packetSize) fifoCount = mpu.getFIFOCount (); mpu.getFIFOBytes (fifoBuffer, pachet Dimensiune); fifoCount - = pachet Dimensiune; mpu.dmpGetQuaternion (& q, fifoBuffer); relativ.updateOrientationNative (q.x, q.y, q.z, q.w, 4); // updateOrientationNative "poate fi utilizat pentru microcontrolerul ARM pe 32 de biți cu USB nativ precum Arduino DUE // ceea ce este recomandat. //relativ.updateOrientation(qx, qy, qz, qw, 4); // Relativ.updateOrientation" este pentru microcontrolerul USB NATIV, cum ar fi Arduino MEGA, Arduino UNO.. // Acestea sunt semnificativ mai lente. }}

Pasul 4: Joacă

deplasarea micului panou de joc pe orice joc vr ar trebui să rotească camera

Recomandat: