Innholdsfortegnelse:

Arduino Vr: 4 trinn
Arduino Vr: 4 trinn

Video: Arduino Vr: 4 trinn

Video: Arduino Vr: 4 trinn
Video: Плата которая нужна всем! Автоматическое управление вентилятором. 2024, November
Anonim
Arduino Vr
Arduino Vr

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

Rekvisita

Rekvisita:

1. Arduino -bord Mega, Due, Uno eller Yun.

2. Mann til mann (standard jumper ledninger) ledninger.

3. Lite brødbrett

4. USB

5. GY-521 MPU-6050

Valgfri:

6. 5,5 tommer 2560*1440 2K LCD -skjerm HDMI til MIPI

7. Fresnel -objektiv Brennvidde 50 mm

8. 3D-skriver eller 3d-skrivertjeneste

Trinn 1: Monter

Montere
Montere

Bruk skjematikken til å sette den sammen.

Trinn 2: Hvordan installere bibliotek?

Ta en titt på Github: https://github.com/relativty/Relativ Du kan enten installere den ved hjelp av Git eller direkte nedlasting.

Trinn 3: Kode

// i2cdevlib og MPU6050 er nødvendig:

// Stor takk til den fantastiske Jeff Rowberg <3, sjekk repoen hans for å lære mer MPU6050. // =================================================== ================================

// I2Cdev og MPU6050 må installeres som biblioteker, ellers må.cpp/.h -filene // for begge klasser være i inkluderingsbanen til prosjektet ditt

#include "Relativ.h"

#include "I2Cdev.h"

#include "MPU6050_6Axis_MotionApps20.h"

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

MPU6050 mpu; Relativ relativ;

#define INTERRUPT_PIN 2

// IMU -status og kontroll: bool dmpReady = false; // true hvis DMP init var vellykket uint8_t mpuIntStatus; uint8_t devStatus; // 0 = suksess,! 0 = feil uint16_t packetSize; uint16_t fifoCount; uint8_t fifoBuffer [64];

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

flyktig bool mpuInterrupt = false; // angir om MPU -avbruddsnålen har gått høyt tomrom dmpDataReady () {mpuInterrupt = true; }

ugyldig oppsett () {#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin (); Wire.setClock (400000); // 400kHz I2C klokke. Kommenter denne linjen hvis du har problemer med kompilering #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire:: setup (400, true); #slutt om

relativ.startNative (); // "startNative" kan brukes til 32-biters ARM-kjernemikrokontroller med Native USB som Arduino DUE // som anbefales. // Relativ.start (); // "start" er for NON-NATIVE USB mikrokontroller, som Arduino MEGA, Arduino UNO.. // De er betydelig tregere. mpu.initialize (); pinMode (INTERRUPT_PIN, INPUT);

SerialUSB.println (mpu.testConnection ()? F ("MPU6050 tilkobling vellykket"): F ("MPU6050 tilkobling mislyktes"));

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

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

// devSTatus hvis alt fungerte som det skal (devStatus == 0) {// slå på DMP, nå som den er klar mpu.setDMPEnabled (true);

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

dmpReady = true;

// få forventet DMP -pakkestørrelse for senere sammenligning packetSize = mpu.dmpGetFIFOPacketSize (); } annet {// FEIL! }}

void loop () {// Gjør ingenting hvis DMP ikke initialiseres riktig hvis (! dmpReady) returnerer;

// vent på at MPU -avbrudd eller ekstra pakke (r) er tilgjengelig mens (! mpuInterrupt && fifoCount <packetSize) {}

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

// få gjeldende FIFO -telling fifoCount = mpu.getFIFOCount ();

if ((mpuIntStatus & 0x10) || fifoCount == 1024) {mpu.resetFIFO (); } // sjekk for avbrudd 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 brukes til 32-biters ARM-kjernemikrokontroller med Native USB som Arduino DUE // som anbefales. //relativ.updateOrientation(qx, qy, qz, qw, 4); // Relativ.updateOrientation" er for NON-NATIVE USB mikrokontroller, som Arduino MEGA, Arduino UNO.. // De er betydelig tregere. }}

Trinn 4: Spill

å flytte det lille brødbrettet på et hvilket som helst vr -spill, bør rotere kameraet

Anbefalt: