Orodha ya maudhui:

Arduino Vr: Hatua 4
Arduino Vr: Hatua 4

Video: Arduino Vr: Hatua 4

Video: Arduino Vr: Hatua 4
Video: Как измерить любое напряжение постоянного тока с Arduino ARDVC-01 2024, Julai
Anonim
Arduino Vr
Arduino Vr

Hi Jina langu ni Mkristo na nina umri wa miaka 13. Ninampenda arduino na nina talanta ya hiyo kwa hivyo hapa ninaweza kufundishwa kwa vr arduino.

Vifaa

Ugavi:

1. Bodi ya Arduino Mega, Kutokana, Uno, au Yun.

2. waya wa kiume hadi wa kiume (waya wa kawaida wa kuruka).

3. Bodi ndogo ya mkate

4. USB

5. GY-521 MPU-6050

Hiari:

6. 5.5 inchi 2560 * 1440 2K LCD Screen HDMI kwa MIPI

7. Lens ya Fresnel Focal Length 50mm

Mchapishaji wa 3-D au huduma ya 3d ya printa

Hatua ya 1: Kusanyika

Kusanyika
Kusanyika

Tumia skimu kuiweka pamoja.

Hatua ya 2: Jinsi ya Kufunga Maktaba?

Angalia Github: https://github.com/relativty/Relativ Unaweza kuiweka kwa kutumia Git au kupakua moja kwa moja.

Hatua ya 3: Kanuni

// i2cdevlib na MPU6050 zinahitajika:

// Shukrani kubwa kwa kushangaza Jeff Rowberg <3, nenda kaangalie repo yake ili ujifunze zaidi MPU6050. // ============================================== =============================

// I2Cdev na MPU6050 lazima zisakinishwe kama maktaba, au sivyo faili za.cpp /.h // kwa madarasa yote lazima ziwe kwenye njia ya mradi wako

# pamoja na "Relativ.h"

# pamoja na "I2Cdev.h"

# pamoja na "MPU6050_6Axis_MotionApps20.h"

# ikiwa I2CDEV_ UTEKELEZAJI == I2CDEV_ARDUINO_WIRE # pamoja na "Wire.h" # endif

MPU6050 mpu; Relativ relativ;

#fafanua INTERRUPT_PIN 2

// hadhi na udhibiti wa IMU: bool dmpReady = false; // kweli ikiwa init ya DMP ilifanikiwa uint8_t mpuIntStatus; uint8_t devStatus; // 0 = mafanikio,! 0 = kosa uint16_t packetSize; uint16_t fifoCount; uint8_t fifoBuffer [64];

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

bool tete mpuInterrupt = uongo; // inaonyesha ikiwa pini ya kukatiza ya MPU imepita batili dmpDataReady () {mpuInterrupt = kweli; }

kuanzisha batili () {#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin (); Wire.setClock (400000); // saa ya I2C ya 400kHz. Toa maoni kwenye mstari huu ikiwa na shida ya mkusanyiko #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire:: kuanzisha (400, kweli); # mwisho

mwanzo relativ. Native (); // "startNative" inaweza kutumika kwa mdhibiti mdogo wa ARM 32-bit na USB Asili kama Arduino DUE // ambayo inashauriwa. // Relativ. Kuanza (); // "kuanza" ni kwa mdhibiti mdogo wa NON-NATIVE USB, kama Arduino MEGA, Arduino UNO.. // Hizo ni polepole sana. mpu kuanzisha (); pinMode (INTERRUPT_PIN, INPUT);

SerialUSB.println (mpu.testConnection ()? F ("unganisho la MPU6050 limefanikiwa"): F ("unganisho la MPU6050 limeshindwa"));

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

// =========================== =============================== mpu.setXGyroOffset (220); mpu.setYGyroOffset (76); mpu.setZGyroOffset (-85); mpu.setZAccelOffset (1788);

// devSTatus ikiwa kila kitu kilifanya kazi vizuri ikiwa (devStatus == 0) {// washa DMP, sasa ikiwa tayari mpu.setDMPEnabled (kweli);

// kuwezesha Arduino kukatiza kugundua ambatishaInterrupt (digitalPinToInterrupt (INTERRUPT_PIN), dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus ();

dmpReady = kweli;

// pata ukubwa wa pakiti ya DMP inayotarajiwa kwa pakiti ya kulinganisha baadayeSize = mpu.dmpGetFIFOPacketSize (); } mwingine {// KOSA! }}

kitanzi batili () {// Usifanye chochote ikiwa DMP haitaanza kwa usahihi ikiwa (! dmpReady) inarudi;

// subiri usumbufu wa MPU au pakiti (za) zaidi zipatikane wakati (! mpuInterrupt && fifoCount <packetSize) {}

// kuweka upya usumbue bendera na upate INT_STATUS byte mpuInterrupt = uwongo; mpuIntStatus = mpu.getIntStatus ();

// pata sasa hesabu ya FIFO fifoCount = mpu.getFIFOCount ();

ikiwa ((mpuIntStatus & 0x10) || fifoCount == 1024) {mpu.resetFIFO (); } // angalia usumbufu mwingine ikiwa (mpuIntStatus & 0x02) {wakati (fifoCount <packetSize) fifoCount = mpu.getFIFOCount (); mpu.getFIFOBytes (fifoBuffer, packetSize); fifoCount - = pakitiSize; mpu.dmpGetQuaternion (& q, fifoBuffer); relativ.updateOrientationNative (q.x, q.y, q.z, q.w, 4); // updateOrientationNative "inaweza kutumika kwa mdhibiti mdogo wa ARM 32-bit na USB Asili kama Arduino DUE // ambayo inashauriwa. //relativ.updateOrientation(qx, qy, qz, qw, 4); // Relativ.updateOrientation" kwa microcontroller isiyo ya asili ya USB, kama Arduino MEGA, Arduino UNO.. // Hizo ni polepole sana. }}

Hatua ya 4: Cheza

kusogeza ubao mdogo wa mkate kwenye mchezo wowote wa vr unapaswa kuzungusha kamera

Ilipendekeza: