Sisukord:

Arduino Vr: 4 sammu
Arduino Vr: 4 sammu

Video: Arduino Vr: 4 sammu

Video: Arduino Vr: 4 sammu
Video: Самодельный Руль из принтера с обратной отдачей (FFB) 900 градусов Arduino leonardo Atmega 32u4 2024, November
Anonim
Arduino Vr
Arduino Vr

Tere Minu nimi on Christian ja olen 13 -aastane. Ma armastan arduinot ja mul on selleks annet, nii et siin on minu juhendatav arduino vr.

Tarvikud

Tarvikud:

1. Arduino pardal Mega, Due, Uno või Yun.

2. Juhtmed isast -isani (tavalised hüppajajuhtmed).

3. Väike leivalaud

4. USB

5. GY-521 MPU-6050

Valikuline:

6. 5,5 -tolline 2560*1440 2K LCD -ekraan HDMI kuni MIPI

7. Fresneli läätse fookuskaugus 50mm

8. 3-D printeri või 3D printeriteenus

Samm: pange kokku

Pange kokku
Pange kokku

Kasutage skeemi selle kokkupanemiseks.

Samm: kuidas raamatukogu installida?

Vaadake Githubi: https://github.com/relativty/Relativ Saate selle installida Giti abil või otse alla laadida.

3. samm: kood

// Vaja on i2cdevlib ja MPU6050:

// Suur tänu hämmastavale Jeff Rowbergile <3, vaadake tema repot, et saada lisateavet MPU6050 kohta. // ================================================ ================================

// I2Cdev ja MPU6050 tuleb installida raamatukogudena, vastasel juhul peavad mõlema klassi.cpp/.h failid // olema teie projekti kaasamisteel

#include "Suhteline.h"

#include "I2Cdev.h"

#include "MPU6050_6Axis_MotionApps20.h"

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

MPU6050 mpu; Suhteline relativ;

#define INTERRUPT_PIN 2

// IMU olek ja juhtimine: bool dmpReady = false; // tõsi, kui DMP init õnnestus uint8_t mpuIntStatus; uint8_t devStatus; // 0 = edu,! 0 = viga uint16_t packetSize; uint16_t fifoCount; uint8_t fifoBuffer [64];

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

lenduv bool mpuInterrupt = false; // näitab, kas MPU katkestusnõel on läinud tühjaks dmpDataReady () {mpuInterrupt = true; }

void setup () {#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin (); Wire.setClock (400000); // 400 kHz I2C kell. Kommenteerige seda rida, kui teil on koostamisraskusi #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire:: setup (400, true); #endif

relativ.startNative (); // "startNative" saab kasutada 32-bitise ARM-põhilise mikrokontrolleri jaoks, millel on natiivne USB, näiteks Arduino DUE // mis on soovitatav. // Suhteline.start (); // "start" on mõeldud MITTE-NATIVE USB mikrokontrollerile, nagu Arduino MEGA, Arduino UNO.. // Need on oluliselt aeglasemad. mpu.initialize (); pinMode (INTERRUPT_PIN, INPUT);

SerialUSB.println (mpu.testConnection ()? F ("MPU6050 ühendus õnnestus"): F ("MPU6050 ühendus nurjus"));

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

// ================================== // esita oma güroskoopide nihked siin: // === =============================== mpu.setXGyroOffset (220); mpu.setYGyroOffset (76); mpu.setZGyroOffset (-85); mpu.setZAccelOffset (1788);

// devSTatus, kui kõik töötas korralikult, kui (devStatus == 0) {// lülitage DMP sisse, nüüd kui see on valmis mpu.setDMPEnabled (true);

// lubage Arduino katkestuste tuvastamine attachInterrupt (digitalPinToInterrupt (INTERRUPT_PIN), dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus ();

dmpReady = tõsi;

// saada oodatud DMP paketi suurus hilisemaks võrdluseks packetSize = mpu.dmpGetFIFOPacketSize (); } muu {// VIGA! }}

void loop () {// Ära tee midagi, kui DMP ei käivitu õigesti, kui (! dmpReady) tagastab;

// oodake, kuni MPU katkestus või lisapakett (id) on saadaval (! mpuInterrupt && fifoCount <packetSize) {}

// lähtestage katkestuse lipp ja hankige INT_STATUS bait mpuInterrupt = false; mpuIntStatus = mpu.getIntStatus ();

// saada praegune FIFO loend fifoCount = mpu.getFIFOCount ();

if ((mpuIntStatus & 0x10) || fifoCount == 1024) {mpu.resetFIFO (); } // kontrollige katkestust 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 "saab kasutada 32-bitise ARM-põhilise mikrokontrolleri jaoks, millel on Native USB, näiteks Arduino DUE // mis on soovitatav. //relativ.updateOrientation(qx, qy, qz, qw, 4); // Relativ.updateOrientation" on MITTE-NATIVE USB mikrokontrolleri jaoks, nagu Arduino MEGA, Arduino UNO.. // Need on oluliselt aeglasemad. }}

4. samm: mängige

väikese leivalaua liigutamine mis tahes vr -mängus peaks kaamerat pöörama

Soovitan: