Talaan ng mga Nilalaman:

Arduino Vr: 4 Mga Hakbang
Arduino Vr: 4 Mga Hakbang

Video: Arduino Vr: 4 Mga Hakbang

Video: Arduino Vr: 4 Mga Hakbang
Video: Arduino Drum Sequencer: 8 tracks, 16 steps per measure, 8 measures per pattern 2024, Hulyo
Anonim
Arduino Vr
Arduino Vr

Kumusta Ang pangalan ko ay Christian at ako ay 13 taong gulang. Gustung-gusto ko ang arduino at may talento para dito kaya narito ang aking itinuturo para sa isang arduino vr.

Mga gamit

Mga Pantustos:

1. Arduino board Mega, Dahil, Uno, o Yun.

2. Mga lalaki hanggang lalaki (karaniwang mga jumper wires) na mga wire.

3. Maliit na pisara

4. USB

5. GY-521 MPU-6050

Opsyonal:

6. 5.5 pulgada 2560 * 1440 2K LCD Screen HDMI sa MIPI

7. Fresnel lens haba ng pagtuon 50mm

8. Serbisyo ng 3-D printer o 3d printer

Hakbang 1: Magtipon

Magtipun-tipon
Magtipun-tipon

Gamitin ang eskematiko upang pagsamahin ito.

Hakbang 2: Paano Mag-install ng Library?

Tingnan ang Github: https://github.com/relativty/Relativ Maaari mong i-install ito gamit ang Git o direktang Pag-download.

Hakbang 3: Code

// i2cdevlib at MPU6050 ay kinakailangan:

// Malaking salamat sa kamangha-manghang Jeff Rowberg <3, tingnan ang kanyang repo upang malaman ang higit pa MPU6050. // =_ ====

// I2Cdev at MPU6050 ay dapat na mai-install bilang mga aklatan, o kung hindi man ang.cpp /.h file // para sa parehong klase ay dapat na kasama ang path ng iyong proyekto

# isama ang "Relativ.h"

# isama ang "I2Cdev.h"

# isama ang "MPU6050_6Axis_MotionApps20.h"

#kung I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE # isama ang "Wire.h" #endif

MPU6050 mpu; Relativ relativ;

# tukuyin ang INTERRUPT_PIN 2

// IMU status and control: bool dmpReady = false; // true kung matagumpay ang DMP init uint8_t mpuIntStatus; uint8_t devStatus; // 0 = tagumpay,! 0 = error uint16_t packetSize; uint16_t fifoCount; uint8_t fifoBuffer [64];

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

pabagu-bago ng isip bool mpuInterrupt = false; // nagpapahiwatig kung MPU makagambala pin ay naging mataas na walang bisa dmpDataReady () {mpuInterrupt = true; }

void setup () {#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin (); Wire.setClock (400000); // 400kHz I2C na orasan. Komento sa linyang ito kung nagkakaroon ng mga paghihirap sa pagtitipon #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire:: setup (400, true); #tapusin kung

relativ.startNative (); // "startNative" ay maaaring magamit para sa 32-bit ARM core microcontroller na may Native USB tulad ng Arduino DUE // na inirerekumenda. // Relativ.start (); // "start" ay para sa NON-NATIVE USB microcontroller, tulad ng Arduino MEGA, Arduino UNO.. // Iyon ay makabagal nang mabagal. mpu.initialize (); pinMode (INTERRUPT_PIN, INPUT);

SerialUSB.println (mpu.testConnection ()? F ("Matagumpay ang koneksyon sa MPU6050"): F ("Nabigo ang koneksyon sa MPU6050"));

// configure the DMP devStatus = mpu.dmpInitialize ();

// ================================== // magbigay ng iyong sariling mga gyro offset dito: // === =_ mpu.setXGyroOffset (220); mpu.setYGyroOffset (76); mpu.setZGyroOffset (-85); mpu.setZAccelOffset (1788);

// devSTatus kung ang lahat ay gumana nang maayos kung (devStatus == 0) {// i-on ang DMP, ngayong handa na itong mpu.setDMPEn pinagana (totoo);

// paganahin ang Arduino makagambala ng pagtuklas attachInterrupt (digitalPinToInterrupt (INTERRUPT_PIN), dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus ();

dmpReady = totoo;

// makakuha ng inaasahang laki ng packet ng DMP para sa paglaon sa paghahambing packetSize = mpu.dmpGetFIFOPacketSize (); } iba pa {// ERROR! }}

void loop () {// Huwag gumawa kung ang DMP ay hindi paunang nagpasimula kung (! dmpReady) bumalik;

// hintayin ang MPU makagambala o labis na (mga) packet na magagamit habang (! mpuInterrupt && fifoCount <packetSize) {}

// reset interrupt flag and get INT_STATUS byte mpuInterrupt = false; mpuIntStatus = mpu.getIntStatus ();

// get current FIFO count fifoCount = mpu.getFIFOCount ();

kung ((mpuIntStatus & 0x10) || fifoCount == 1024) {mpu.resetFIFO (); } // suriin kung makagambala pa kung (mpuIntStatus & 0x02) {habang (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 "ay maaaring magamit para sa 32-bit ARM core microcontroller na may Native USB tulad ng Arduino DUE // na inirerekumenda. //relativ.updateOrientation(qx, qy, qz, qw, 4); // Relativ.updateOrientation" ay para sa NON-NATIVE USB microcontroller, tulad ng Arduino MEGA, Arduino UNO.. // Iyon ay mas mabagal. }}

Hakbang 4: Maglaro

ang paglipat ng maliit na breadboard sa anumang vr game ay dapat na paikutin ang camera

Inirerekumendang: