Kazalo:

Arduino Vr: 4 koraki
Arduino Vr: 4 koraki

Video: Arduino Vr: 4 koraki

Video: Arduino Vr: 4 koraki
Video: Makeblock mBlock - prvi koraki 2024, Julij
Anonim
Arduino Vr
Arduino Vr

Živjo Moje ime je Christian in star sem 13 let. Obožujem arduino in imam talent za to, zato je tukaj moj pouk za arduino vr.

Zaloge

Zaloge:

1. Arduino plošča Mega, Due, Uno ali Yun.

2. Moški na moške (standardne mostične žice) žice.

3. Majhna plošča

4. USB

5. GY-521 MPU-6050

Neobvezno:

6. 5,5 -palčni 2560*1440 2K LCD zaslon HDMI v MIPI

7. Fresnelova leča Goriščna razdalja 50 mm

8. Storitev 3D tiskalnika ali 3D tiskalnika

1. korak: Sestavite

Sestavite
Sestavite

Uporabite shemo, da jo sestavite.

2. korak: Kako namestiti knjižnico?

Oglejte si Github: https://github.com/relativty/Relativ Namestite ga lahko z Gitom ali neposredno prenesete.

3. korak: Koda

// Potrebna sta i2cdevlib in MPU6050:

// Najlepša hvala neverjetnemu Jeffu Rowbergu <3, pojdite preveriti njegov repo, če želite izvedeti več MPU6050. // ================================================ ==============================

// I2Cdev in MPU6050 morata biti nameščena kot knjižnici, sicer pa morata biti datoteki.cpp/.h // za oba razreda v poti vključevanja vašega projekta

#include "Relativ.h"

#include "I2Cdev.h"

#include "MPU6050_6Axis_MotionApps20.h"

#če I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE #vključi "Wire.h" #endif

MPU6050 mpu; Relativ relativ;

#define INTERRUPT_PIN 2

// stanje in nadzor IMU: bool dmpReady = false; // res, če je bil init DMP uspešen uint8_t mpuIntStatus; uint8_t devStatus; // 0 = uspeh,! 0 = napaka uint16_t packetSize; uint16_t fifoCount; uint8_t fifoBuffer [64];

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

hlapna bool mpuInterrupt = false; // označuje, ali je prekinitveni pin MPU previsok. dmpDataReady () {mpuInterrupt = true; }

void setup () {#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin (); Wire.setClock (400000); // Ura I2C 400kHz. Komentirajte to vrstico, če imate težave pri sestavljanju #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire:: setup (400, res); #endif

relativ.startNative (); // "startNative" se lahko uporablja za 32-bitni jedrni mikrokrmilnik ARM z Native USB, kot je Arduino DUE //, kar priporočamo. // Relativ.start (); // "zagon" je za NIČNI USB mikrokrmilnik, kot sta Arduino MEGA, Arduino UNO.. // Ti so bistveno počasnejši. mpu.initialize (); pinMode (INTERRUPT_PIN, INPUT);

SerialUSB.println (mpu.testConnection ()? F ("Povezava MPU6050 uspešna"): F ("Povezava MPU6050 ni uspela"));

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

// ================================ // tukaj vnesite lastne odmike žiroskopa: // === =============================== mpu.setXGyroOffset (220); mpu.setYGyroOffset (76); mpu.setZGyroOffset (-85); mpu.setZAccelOffset (1788);

// devSTatus, če je vse delovalo pravilno, če (devStatus == 0) {// vklopite DMP, zdaj ko je pripravljeno mpu.setDMPEnabled (true);

// omogočimo zaznavanje prekinitev Arduino attachInterrupt (digitalPinToInterrupt (INTERRUPT_PIN), dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus ();

dmpReady = res;

// dobimo pričakovano velikost paketa DMP za kasnejšo primerjavo packetSize = mpu.dmpGetFIFOPacketSize (); } else {// NAPAKA! }}

void loop () {// Ne naredite nič, če se DMP ne inicializira pravilno, če se vrne (! dmpReady);

// počakajte, da bo na voljo prekinitev MPU ali dodatni paketi (! mpuInterrupt && fifoCount <packetSize) {}

// ponastavimo zastavico prekinitve in dobimo INT_STATUS bajt mpuInterrupt = false; mpuIntStatus = mpu.getIntStatus ();

// dobimo trenutno število FIFO fifoCount = mpu.getFIFOCount ();

if ((mpuIntStatus & 0x10) || fifoCount == 1024) {mpu.resetFIFO (); } // preveri prekinitev else if (mpuIntStatus & 0x02) {while (fifoCount <packetSize) fifoCount = mpu.getFIFOCount (); mpu.getFIFOBytes (fifoBuffer, packetSize); fifoCount -= velikost paketa; mpu.dmpGetQuaternion (& q, fifoBuffer); relativ.updateOrientationNative (q.x, q.y, q.z, q.w, 4); // updateOrientationNative "se lahko uporablja za 32-bitni jedrni mikrokrmilnik ARM z Native USB, kot je Arduino DUE // kar je priporočljivo. //relativ.updateOrientation(qx, qy, qz, qw, 4); // Relativ.updateOrientation" je za NI-NATIVE USB mikrokrmilnik, kot sta Arduino MEGA, Arduino UNO.. // Ti so bistveno počasnejši. }}

4. korak: Igrajte se

premikanje majhne plošče na kateri koli igri vr mora zavrtiti kamero

Priporočena: