Obsah:

Arduino Vr: 4 kroky
Arduino Vr: 4 kroky

Video: Arduino Vr: 4 kroky

Video: Arduino Vr: 4 kroky
Video: 😵 Первый полёт на FPV дроне после 100 часов в симуляторе 2024, Listopad
Anonim
Arduino Vr
Arduino Vr

Ahoj, jmenuji se Christian a je mi 13 let. Miluji arduino a mám na něj talent, takže zde je můj návod pro arduino vr.

Zásoby

Zásoby:

1. Deska Arduino Mega, Due, Uno nebo Yun.

2. Vodiče typu male to male (standardní propojovací vodiče).

3. Malé prkénko

4. USB

5. GY-521 MPU-6050

Volitelný:

6. 5,5 palcový 2560*1440 2K LCD displej HDMI na MIPI

7. Fresnelova čočka Ohnisková vzdálenost 50 mm

8. Služba 3D tiskárny nebo 3D tiskárny

Krok 1: Sestavte

Shromáždit
Shromáždit

Sestavte to pomocí schématu.

Krok 2: Jak nainstalovat knihovnu?

Podívejte se na Github: https://github.com/relativty/Relativ Můžete jej nainstalovat buď pomocí Gitu, nebo přímým stažením.

Krok 3: Kód

// i2cdevlib a MPU6050 jsou potřeba:

// Velké díky úžasnému Jeffu Rowbergovi <3, jděte se podívat na jeho repo, abyste se dozvěděli více o MPU6050. // ===================================================================== ==================================

// I2Cdev a MPU6050 musí být nainstalovány jako knihovny, jinak soubory.cpp/.h // pro obě třídy musí být v cestě zahrnutí vašeho projektu

#include "Relativ.h"

#include "I2Cdev.h"

#include "MPU6050_6Axis_MotionApps20.h"

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

MPU6050 mpu; Relativní relativní;

#define INTERRUPT_PIN 2

// Stav a ovládání IMU: bool dmpReady = false; // true, pokud byla inicializace DMP úspěšná uint8_t mpuIntStatus; uint8_t devStatus; // 0 = úspěch,! 0 = chyba uint16_t packetSize; uint16_t fifoCount; uint8_t fifoBuffer [64];

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

volatile bool mpuInterrupt = false; // indikuje, zda pin přerušení MPU dosáhl vysoké hodnoty neplatné dmpDataReady () {mpuInterrupt = true; }

neplatné nastavení () {#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin (); Wire.setClock (400000); // 400kHz I2C hodiny. Komentujte tento řádek, pokud máte potíže s kompilací #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire:: setup (400, true); #endif

relativ.startNative (); // „startNative“lze použít pro 32bitový mikrokontrolér ARM s nativním USB, jako je Arduino DUE //, což se doporučuje. // Relativ.start (); // "start" je pro NORATIVNÍ USB mikrokontrolér, jako Arduino MEGA, Arduino UNO.. // Ty jsou výrazně pomalejší. mpu.initialize (); pinMode (INTERRUPT_PIN, INPUT);

SerialUSB.println (mpu.testConnection ()? F ("Připojení MPU6050 úspěšné"): F ("Připojení MPU6050 se nezdařilo"));

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

// ====================================== // zde zadejte své vlastní gyroskopy: // === ================================= mpu.setXGyroOffset (220); mpu.setYGyroOffset (76); mpu.setZGyroOffset (-85); mpu.setZAccelOffset (1788);

// devSTatus pokud vše fungovalo správně if (devStatus == 0) {// zapněte DMP, když je připraven mpu.setDMPEnabled (true);

// povolit detekci přerušení Arduino attachInterrupt (digitalPinToInterrupt (INTERRUPT_PIN), dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus ();

dmpReady = true;

// získat očekávanou velikost DMP paketu pro pozdější srovnání packetSize = mpu.dmpGetFIFOPacketSize (); } else {// CHYBA! }}

void loop () {// Nedělejte nic, pokud se DMP správně neinicializuje, pokud (! dmpReady) return;

// počkejte na přerušení MPU nebo další pakety, dokud (! mpuInterrupt && fifoCount <packetSize) {}

// reset vlajky přerušení a získání INT_STATUS bajtu mpuInterrupt = false; mpuIntStatus = mpu.getIntStatus ();

// získat aktuální počet FIFO fifoCount = mpu.getFIFOCount ();

if ((mpuIntStatus & 0x10) || fifoCount == 1024) {mpu.resetFIFO (); } // kontrola přerušení else if (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 "lze použít pro 32bitový mikrokontrolér ARM s nativním USB jako Arduino DUE // což se doporučuje. //relativ.updateOrientation(qx, qy, qz, qw, 4); // Relativ.updateOrientation" je pro NORATIVNÍ USB mikrokontrolér, jako Arduino MEGA, Arduino UNO.. // Ty jsou výrazně pomalejší. }}

Krok 4: Hrajte

Pohyb malého prkénka na jakékoli hře VR by měl fotoaparát otočit

Doporučuje: