Indholdsfortegnelse:

Arduino Vr: 4 trin
Arduino Vr: 4 trin

Video: Arduino Vr: 4 trin

Video: Arduino Vr: 4 trin
Video: Полезный умный дом цифрового кочевника на Arduino и Unity! VR 2024, Juli
Anonim
Arduino Vr
Arduino Vr

Hej Mit navn er Christian og jeg er 13 år. Jeg elsker arduino og har et talent for det, så her er min instruerbare til en arduino vr.

Forbrugsvarer

Tilbehør:

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

2. Mand til han (standard jumper wires) ledninger.

3. Lille brødbræt

4. USB

5. GY-521 MPU-6050

Valgfri:

6. 5,5 tommer 2560*1440 2K LCD -skærm HDMI til MIPI

7. Fresnel linse Brændvidde 50mm

8. 3D-printer eller 3d-printer service

Trin 1: Saml

Samle
Samle

Brug skematikken til at sammensætte den.

Trin 2: Sådan installeres bibliotek?

Tag et kig på Github: https://github.com/relativty/Relativ Du kan enten installere det ved hjælp af Git eller direkte download.

Trin 3: Kode

// i2cdevlib og MPU6050 er nødvendige:

// Stor tak til den fantastiske Jeff Rowberg <3, tjek hans repo for at lære mere MPU6050. // =================================================== =================================

// I2Cdev og MPU6050 skal installeres som biblioteker, ellers skal.cpp/.h -filerne // for begge klasser være i inkluderingsstien til dit projekt

#include "Relativ.h"

#include "I2Cdev.h"

#include "MPU6050_6Axis_MotionApps20.h"

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

MPU6050 mpu; Relativ relativ;

#define INTERRUPT_PIN 2

// IMU -status og kontrol: bool dmpReady = false; // sand hvis DMP init var vellykket uint8_t mpuIntStatus; uint8_t devStatus; // 0 = succes,! 0 = fejl uint16_t packetSize; uint16_t fifoCount; uint8_t fifoBuffer [64];

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

flygtig bool mpuInterrupt = falsk; // angiver, om MPU -afbrydelsesnål er gået højt tomrum dmpDataReady () {mpuInterrupt = true; }

ugyldig opsætning () {#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin (); Wire.setClock (400000); // 400kHz I2C ur. Kommenter denne linje, hvis du har problemer med kompilering #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire:: setup (400, true); #Afslut Hvis

relativ.startNative (); // "startNative" kan bruges til 32-bit ARM-kernemikrocontroller med Native USB som Arduino DUE // som anbefales. // Relativ.start (); // "start" er til NON-NATIVE USB mikrokontroller, som Arduino MEGA, Arduino UNO.. // De er betydeligt langsommere. mpu.initialize (); pinMode (INTERRUPT_PIN, INPUT);

SerialUSB.println (mpu.testConnection ()? F ("MPU6050 forbindelse lykkedes"): F ("MPU6050 forbindelse mislykkedes"));

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

// ================================== // angiv dine egne gyro -offsets her: // === ================================ mpu.setXGyroOffset (220); mpu.setYGyroOffset (76); mpu.setZGyroOffset (-85); mpu.setZAccelOffset (1788);

// devSTatus hvis alt fungerede korrekt hvis (devStatus == 0) {// tænde DMP, nu hvor den er klar mpu.setDMPEnabled (true);

// aktiver Arduino interrupt detection detect attachInterrupt (digitalPinToInterrupt (INTERRUPT_PIN), dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus ();

dmpReady = sand;

// få forventet DMP -pakkestørrelse til senere sammenligning packetSize = mpu.dmpGetFIFOPacketSize (); } andet {// FEJL! }}

void loop () {// Gør ingenting, hvis DMP ikke initialiseres korrekt, hvis (! dmpReady) returnerer;

// vent på, at MPU -afbrydelse eller ekstra pakker er tilgængelige, mens (! mpuInterrupt && fifoCount <packetSize) {}

// nulstil interrupt flag og få INT_STATUS byte mpuInterrupt = false; mpuIntStatus = mpu.getIntStatus ();

// få det aktuelle FIFO -tal fifoCount = mpu.getFIFOCount ();

hvis ((mpuIntStatus & 0x10) || fifoCount == 1024) {mpu.resetFIFO (); } // tjek for interrupt ellers hvis (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 bruges til 32-bit ARM-kernemikrocontroller med Native USB som Arduino DUE // som anbefales. //relativ.updateOrientation(qx, qy, qz, qw, 4); // Relativ.updateOrientation" er til NON-NATIVE USB mikrokontroller, som Arduino MEGA, Arduino UNO.. // De er betydeligt langsommere. }}

Trin 4: Spil

at flytte det lille brødbræt på et hvilket som helst vr -spil skal rotere kameraet

Anbefalede: