Sadržaj:

Arduino Vr: 4 koraka
Arduino Vr: 4 koraka

Video: Arduino Vr: 4 koraka

Video: Arduino Vr: 4 koraka
Video: Виды трекинга для виртуальной реальности и симуляторов. Как сделать Freetrack, Opentrack, Facetrack. 2024, Srpanj
Anonim
Arduino Vr
Arduino Vr

Bok Moje ime je Christian i imam 13 godina. Volim arduino i imam talenta za to pa evo mojih instrukcija za arduino vr.

Pribor

Pribor:

1. Arduino ploča Mega, Due, Uno ili Yun.

2. Muške do muške (standardne kratkospojne žice) žice.

3. Mala ploča

4. USB

5. GY-521 MPU-6050

Izborno:

6. 5,5 inčni 2560*1440 2K LCD ekran HDMI na MIPI

7. Fresnelova leća Žarišna duljina 50 mm

8. Usluga 3-D pisača ili 3d pisača

Korak 1: Sastavite

Sastavite
Sastavite

Upotrijebite shemu da biste je sastavili.

Korak 2: Kako instalirati biblioteku?

Pogledajte Github: https://github.com/relativty/Relativ Možete ga instalirati pomoću Gita ili izravnim preuzimanjem.

Korak 3: Kodirajte

// potrebni su i2cdevlib i MPU6050:

// Veliko hvala nevjerojatnom Jeffu Rowbergu <3, provjerite njegov repo kako biste saznali više o MPU6050. // ================================================ =============================

// I2Cdev i MPU6050 moraju biti instalirani kao knjižnice ili datoteke.cpp/.h // za obje klase moraju biti na uključenoj stazi vašeg projekta

#uključuje "Relativ.h"

#include "I2Cdev.h"

#include "MPU6050_6Axis_MotionApps20.h"

#ako je I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE #uključite "Wire.h" #endif

MPU6050 mpu; Relativ relativ;

#define INTERRUPT_PIN 2

// IMU status i kontrola: bool dmpReady = false; // istina ako je DMP init bio uspješan uint8_t mpuIntStatus; uint8_t devStatus; // 0 = uspjeh,! 0 = pogreška uint16_t packetSize; uint16_t fifoCount; uint8_t fifoBuffer [64];

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

volatile bool mpuInterrupt = false; // označava je li pin za prekid MPU -a otišao visoko void dmpDataReady () {mpuInterrupt = true; }

void setup () {#ako je I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin (); Wire.setClock (400000); // 400 kHz I2C sat. Komentirajte ovaj redak ako imate poteškoća s sastavljanjem #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire:: setup (400, istina); #završi ako

relativ.startNative (); // "startNative" se može koristiti za 32-bitni ARM jezgreni mikrokontroler s izvornim USB-om poput Arduino DUE // što se preporučuje. // Relativ.start (); // "start" je za NERIČNI USB mikrokontroler, poput Arduino MEGA, Arduino UNO.. // Oni su znatno sporiji. mpu.initialize (); pinMode (INTERRUPT_PIN, INPUT);

SerialUSB.println (mpu.testConnection ()? F ("Veza MPU6050 uspješna"): F ("Veza MPU6050 nije uspjela"));

// konfiguriramo DMP devStatus = mpu.dmpInitialize ();

// ================================ // ovdje unesite vlastite pomake žiroaparata: // === =============================== mpu.setXGyroOffset (220); mpu.setYGyroOffset (76); mpu.setZGyroOffset (-85); mpu.setZAccelOffset (1788);

// devSTatus ako je sve radilo ispravno if (devStatus == 0) {// uključite DMP, sada kada je spreman mpu.setDMPEnabled (true);

// omogućiti Arduino otkrivanje prekida attachInterrupt (digitalPinToInterrupt (INTERRUPT_PIN), dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus ();

dmpReady = istina;

// dobiti očekivanu veličinu paketa DMP za kasniju usporedbu packetSize = mpu.dmpGetFIFOPacketSize (); } else {// GREŠKA! }}

void loop () {// Ne činite ništa ako se DMP ne inicijalizira ispravno if (! dmpReady) return;

// pričekajte dok MPU prekid ili dodatni paketi budu dostupni dok (! mpuInterrupt && fifoCount <packetSize) {}

// resetiranje zastavice prekida i dobivanje INT_STATUS bajta mpuInterrupt = false; mpuIntStatus = mpu.getIntStatus ();

// dobiti trenutni broj FIFO fifoCount = mpu.getFIFOCount ();

if ((mpuIntStatus & 0x10) || fifoCount == 1024) {mpu.resetFIFO (); } // provjeravamo ima li prekida u suprotnom if (mpuIntStatus & 0x02) {while (fifoCount <packetSize) fifoCount = mpu.getFIFOCount (); mpu.getFIFOBytes (fifoBuffer, packetSize); fifoCount -= veličina paketa; mpu.dmpGetQuaternion (& q, fifoBuffer); relativ.updateOrientationNative (q.x, q.y, q.z, q.w, 4); // updateOrientationNative "može se koristiti za 32-bitni ARM jezgreni mikrokontroler s izvornim USB-om poput Arduino DUE // što se preporučuje. //relativ.updateOrientation(qx, qy, qz, qw, 4); // Relativ.updateOrientation" je za NON-NATIVE USB mikrokontroler, poput Arduino MEGA, Arduino UNO.. // Oni su znatno sporiji. }}

Korak 4: Igrajte se

premještanje male ploče na bilo kojoj vr igri trebalo bi okrenuti kameru

Preporučeni: