Inhoudsopgave:

Arduino Vr: 4 stappen
Arduino Vr: 4 stappen

Video: Arduino Vr: 4 stappen

Video: Arduino Vr: 4 stappen
Video: Do you have a bad stepper motor? How to easily test. 2024, November
Anonim
Arduino Vr
Arduino Vr

Hallo, mijn naam is Christian en ik ben 13 jaar oud. Ik hou van arduino en heb er talent voor, dus hier is mijn instructable voor een arduino vr.

Benodigdheden

Benodigdheden:

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

2. Mannelijke naar mannelijke (standaard jumperdraden) draden.

3. Klein breadboard

4. USB

5. GY-521 MPU-6050

Optioneel:

6. 5.5 inch 2560 * 1440 2K LCD-scherm HDMI naar MIPI;

7. Fresnel-lens Brandpuntsafstand 50 mm

8. 3D-printer of 3D-printerservice

Stap 1: monteren

Monteren
Monteren

Gebruik het schema om het samen te stellen.

Stap 2: Hoe bibliotheek te installeren?

Bekijk de Github: https://github.com/relativty/Relativ Je kunt het installeren met Git of direct downloaden.

Stap 3: Coderen

// i2cdevlib en MPU6050 zijn nodig:

// Grote dank aan de geweldige Jeff Rowberg <3, ga naar zijn repo om meer te leren MPU6050. //================================================ =============================

// I2Cdev en MPU6050 moeten als bibliotheken worden geïnstalleerd, anders moeten de.cpp/.h-bestanden // voor beide klassen in het include-pad van uw project staan

#include "Relativ.h"

#include "I2Cdev.h"

#include "MPU6050_6Axis_MotionApps20.h"

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

MPU6050mpu; relatief relatief;

#define INTERRUPT_PIN 2

// IMU-status en controle: bool dmpReady = false; // true als DMP init succesvol was uint8_t mpuIntStatus; uint8_t devStatus; // 0 = succes, !0 = fout uint16_t packetSize; uint16_t fifoCount; uint8_t fifoBuffer[64];

Quaternion q; // [W x Y Z]

vluchtige bool mpuInterrupt = false; // geeft aan of de MPU-interrupt-pin high is geworden void dmpDataReady() { mpuInterrupt = true; }

void setup() { #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin(); Draad.setClock(400000); // 400 kHz I2C-klok. Geef commentaar op deze regel als u compilatieproblemen heeft #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire::setup(400, true); #stop als

relativ.startNative(); // "startNative" kan worden gebruikt voor 32-bits ARM-kernmicrocontrollers met native USB zoals Arduino DUE // wat wordt aanbevolen. // Relatief.start(); // "start" is voor NON-NATIVE USB-microcontrollers, zoals Arduino MEGA, Arduino UNO.. // Die zijn aanzienlijk langzamer. mpu.initialiseren(); pinMode (INTERRUPT_PIN, INPUT);

SerialUSB.println(mpu.testConnection() ? F("MPU6050 verbinding succesvol"): F("MPU6050 verbinding mislukt"));

// configureer de DMP devStatus = mpu.dmpInitialize();

// ================================== // geef hier je eigen gyro-offsets aan: // === =============================== mpu.setXGyroOffset(220); mpu.setYGyroOffset(76); mpu.setZGyroOffset(-85); mpu.setZAccelOffset (1788);

// devSTatus als alles goed werkte if (devStatus == 0) { // zet de DMP aan, nu het klaar is mpu.setDMPEnabled(true);

// schakel Arduino-interruptdetectie in, attachInterrupt (digitalPinToInterrupt (INTERRUPT_PIN), dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus();

dmpReady = waar;

// haal de verwachte DMP-pakketgrootte op voor latere vergelijking packetSize = mpu.dmpGetFIFOPacketSize(); } anders { // FOUT! } }

void loop() { // Doe niets als DMP niet correct initialiseert als (!dmpReady) terugkeert;

// wacht tot MPU-interrupt of extra pakket(ten) beschikbaar zijn terwijl (!mpuInterrupt && fifoCount < packetSize) { }

// reset de interruptvlag en krijg INT_STATUS byte mpuInterrupt = false; mpuIntStatus = mpu.getIntStatus();

// haal de huidige FIFO-telling op fifoCount = mpu.getFIFOCount ();

if ((mpuIntStatus & 0x10) || fifoCount == 1024) { mpu.resetFIFO(); } // controleer op interrupt else if (mpuIntStatus & 0x02) { while (fifoCount < packetSize) fifoCount = mpu.getFIFOCount (); mpu.getFIFOBytes(fifoBuffer, pakketgrootte); fifoCount -= pakketgrootte; mpu.dmpGetQuaternion(&q, fifoBuffer); relativ.updateOrientationNative(q.x, q.y, q.z, q.w, 4); // updateOrientationNative" kan worden gebruikt voor 32-bits ARM-kernmicrocontrollers met native USB zoals Arduino DUE // wat wordt aanbevolen. //relativ.updateOrientation(qx, qy, qz, qw, 4); // Relativ.updateOrientation" is voor NON-NATIVE USB-microcontrollers, zoals Arduino MEGA, Arduino UNO.. // Die zijn aanzienlijk langzamer. } }

Stap 4: Speel

het verplaatsen van het kleine breadboard op een vr-game zou de camera moeten draaien

Aanbevolen: