Innehållsförteckning:

Arduino Vr: 4 steg
Arduino Vr: 4 steg

Video: Arduino Vr: 4 steg

Video: Arduino Vr: 4 steg
Video: Amazing arduino project 2024, Juli
Anonim
Arduino Vr
Arduino Vr

Hej Jag heter Christian och är 13 år. Jag älskar arduino och har en talang för det så här är min instruerbara för en arduino vr.

Tillbehör

Tillbehör:

1. Arduino board Mega, Due, Uno eller Yun.

2. Man till han (standard jumper trådar).

3. Liten brödbräda

4. USB

5. GY-521 MPU-6050

Frivillig:

6. 5,5 tum 2560*1440 2K LCD -skärm HDMI till MIPI

7. Fresnel -objektiv Brännvidd 50 mm

8. 3D-skrivare eller 3d-skrivartjänst

Steg 1: Montera

Montera
Montera

Använd schemat för att sätta ihop det.

Steg 2: Hur installerar jag biblioteket?

Ta en titt på Github: https://github.com/relativty/Relativ Du kan antingen installera den med Git eller direktnedladdning.

Steg 3: Kod

// i2cdevlib och MPU6050 behövs:

// Stort tack till den fantastiska Jeff Rowberg <3, kolla in hans repo för att lära dig mer MPU6050. // =================================================== =================================

// I2Cdev och MPU6050 måste installeras som bibliotek, annars måste.cpp/.h -filerna // för båda klasserna finnas i inkluderingsvägen för ditt projekt

#inkludera "Relativ.h"

#inkludera "I2Cdev.h"

#inkludera "MPU6050_6Axis_MotionApps20.h"

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

MPU6050 mpu; Relativ relativ;

#define INTERRUPT_PIN 2

// IMU -status och kontroll: bool dmpReady = false; // true om DMP init lyckades uint8_t mpuIntStatus; uint8_t devStatus; // 0 = framgång,! 0 = fel uint16_t packetSize; uint16_t fifoCount; uint8_t fifoBuffer [64];

Kvarternion q; // [W x y z]

flyktig bool mpuInterrupt = false; // anger om MPU -avbrottsstiftet har gått högt tomrum dmpDataReady () {mpuInterrupt = true; }

void setup () {#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin (); Wire.setClock (400000); // 400kHz I2C klocka. Kommentera den här raden om du har problem med sammanställning #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire:: setup (400, true); #endif

relativ.startNative (); // "startNative" kan användas för 32-bitars ARM-mikrokontroller med Native USB som Arduino DUE // vilket rekommenderas. // Relativ.start (); // "start" är för NON-NATIVE USB-mikrokontroller, som Arduino MEGA, Arduino UNO.. // De är betydligt långsammare. mpu.initialize (); pinMode (INTERRUPT_PIN, INPUT);

SerialUSB.println (mpu.testConnection ()? F ("MPU6050 -anslutningen lyckades"): F ("MPU6050 -anslutningen misslyckades"));

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

// ================================== // ange dina egna gyrokompensationer här: // === ================================ mpu.setXGyroOffset (220); mpu.setYGyroOffset (76); mpu.setZGyroOffset (-85); mpu.setZAccelOffset (1788);

// devSTatus om allt fungerade korrekt om (devStatus == 0) {// slå på DMP, nu när det är klart mpu.setDMPEnabled (true);

// aktivera Arduino interrupt -detektering attachInterrupt (digitalPinToInterrupt (INTERRUPT_PIN), dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus ();

dmpReady = true;

// få förväntad DMP -paketstorlek för senare jämförelse packetSize = mpu.dmpGetFIFOPacketSize (); } annat {// FEL! }}

void loop () {// Gör ingenting om DMP inte initieras korrekt om (! dmpReady) returnerar;

// vänta tills MPU -avbrott eller extra paket (er) är tillgängliga medan (! mpuInterrupt && fifoCount <packetSize) {}

// återställ avbrottsflagga och få INT_STATUS byte mpuInterrupt = false; mpuIntStatus = mpu.getIntStatus ();

// få aktuell FIFO -räkning fifoCount = mpu.getFIFOCount ();

if ((mpuIntStatus & 0x10) || fifoCount == 1024) {mpu.resetFIFO (); } // kolla efter avbrott annars om (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 "kan användas för 32-bitars ARM-kärnmikrocontroller med Native USB som Arduino DUE // vilket rekommenderas. //relativ.updateOrientation(qx, qy, qz, qw, 4); // Relativ.updateOrientation" är för NON-NATIVE USB-mikrokontroller, som Arduino MEGA, Arduino UNO.. // De är betydligt långsammare. }}

Steg 4: Spela

flytta den lilla brödbrädan på alla vr -spel bör rotera kameran

Rekommenderad: