INHOUDSOPGAWE:

Arduino Vr: 4 stappe
Arduino Vr: 4 stappe

Video: Arduino Vr: 4 stappe

Video: Arduino Vr: 4 stappe
Video: Драм-секвенсор Arduino: 8 дорожек, 16 шагов на такт, 8 тактов на паттерн 2024, November
Anonim
Arduino Vr
Arduino Vr

Hi My naam is Christian en ek is 13 jaar oud. Ek is mal oor arduino en het 'n talent daarvoor, so hier is my instruksies vir 'n arduino vr.

Voorrade

Benodighede:

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

2. Man tot man (standaard springdrade) drade.

3. Klein broodbord

4. USB

5. GY-521 MPU-6050

Opsioneel:

6. 5.5 duim 2560*1440 2K LCD -skerm HDMI na MIPI

7. Fresnel -lens Brandpuntsafstand 50 mm

8. 3D-drukker of 3D-drukker diens

Stap 1: Monteer

Versamel
Versamel

Gebruik die skematiese om dit saam te stel.

Stap 2: Hoe om die biblioteek te installeer?

Kyk na die Github: https://github.com/relativty/Relativ U kan dit óf met Git installeer óf direk aflaai.

Stap 3: Kodeer

// i2cdevlib en MPU6050 is nodig:

// Baie dankie aan die wonderlike Jeff Rowberg <3, gaan kyk na sy repo vir meer inligting oor MPU6050. // ===================================================== =================================

// I2Cdev en MPU6050 moet as biblioteke geïnstalleer word, anders moet die.cpp/.h lêers // vir beide klasse in die insluit -pad van u projek wees

#sluit "Relativ.h" in

#sluit "I2Cdev.h" in

#sluit "MPU6050_6Axis_MotionApps20.h" in

#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE #sluit "Wire.h" #endif in

MPU6050 mpu; Relatief relatief;

#definieer INTERRUPT_PIN 2

// IMU status en beheer: bool dmpReady = false; // waar as DMP init suksesvol was uint8_t mpuIntStatus; uint8_t devStatus; // 0 = sukses,! 0 = fout uint16_t packetSize; uint16_t fifoCount; uint8_t fifoBuffer [64];

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

vlugtige bool mpuInterrupt = vals; // dui aan of MPU -onderbrekingspen hoog geraak het dmpDataReady () {mpuInterrupt = true; }

ongeldige opstelling () {#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin (); Wire.setClock (400000); // 400kHz I2C klok. Lewer kommentaar op hierdie reël as u probleme met die opstel het #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire:: setup (400, true); #endif

relatief.startNative (); // "startNative" kan gebruik word vir 'n 32-bis ARM-kern-mikrobeheerder met 'n oorspronklike USB, soos Arduino DUE //, wat aanbeveel word. // Relatief.start (); // "begin" is vir NIE-NATIVE USB-mikrobeheerder, soos Arduino MEGA, Arduino UNO.. // Dit is aansienlik stadiger. mpu.initialize (); pinMode (INTERRUPT_PIN, INPUT);

SerialUSB.println (mpu.testConnection ()? F ("MPU6050 verbinding suksesvol"): F ("MPU6050 verbinding misluk"));

// stel die DMP devStatus = mpu.dmpInitialize () op;

// ================================== // voorsien u eie gyro -offset hier: // === ================================ mpu.setXGyroOffset (220); mpu.setYGyroOffset (76); mpu.setZGyroOffset (-85); mpu.setZAccelOffset (1788);

// devSTatus as alles reg werk as (devStatus == 0) {// skakel die DMP aan, noudat dit gereed is mpu.setDMPEnabled (true);

// aktiveer Arduino interrupt -opsporing attachInterrupt (digitalPinToInterrupt (INTERRUPT_PIN), dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus ();

dmpReady = waar;

// kry verwagte DMP -pakkiegrootte vir latere vergelyking packetSize = mpu.dmpGetFIFOPacketSize (); } anders {// FOUT! }}

void loop () {// Doen niks as DMP nie korrek begin nie as (! dmpReady) terugkeer;

// wag totdat MPU -onderbreking of ekstra pakkies beskikbaar is terwyl (! mpuInterrupt && fifoCount <packetSize) {}

// herstel onderbrekingsvlag en kry INT_STATUS byte mpuInterrupt = vals; mpuIntStatus = mpu.getIntStatus ();

// kry die huidige FIFO -telling fifoCount = mpu.getFIFOCount ();

as ((mpuIntStatus & 0x10) || fifoCount == 1024) {mpu.resetFIFO (); } // kyk vir onderbrekings anders as (mpuIntStatus & 0x02) {terwyl (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 gebruik word vir 32-bis ARM-kernkontroleur met Native USB soos Arduino DUE // wat aanbeveel word. //relativ.updateOrientation(qx, qy, qz, qw, 4); // Relativ.updateOrientation" is vir NIE-NATIVE USB-mikrobeheerder, soos Arduino MEGA, Arduino UNO.. // Dit is aansienlik stadiger. }}

Stap 4: Speel

As u die klein broodbord op enige vr -speletjie skuif, moet die kamera draai

Aanbeveel: