Përmbajtje:

Arduino Vr: 4 hapa
Arduino Vr: 4 hapa

Video: Arduino Vr: 4 hapa

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

Përshëndetje Emri im është Christian dhe unë jam 13 vjeç. Unë e dua arduino dhe kam një talent për të, kështu që këtu është udhëzimi im për një arduino vr.

Furnizimet

Furnizimet:

1. Arduino bord Mega, Due, Uno, ose Yun.

2. Tela meshkuj në meshkuj (tela standarde të kërcyesit).

3. Dërrasë e vogël buke

4. USB

5. GY-521 MPU-6050

Opsionale:

6. 5.5 inç 2560*1440 Ekran LCD 2K HDMI në MIPI

7. Lente Fresnel Gjatësia Fokale 50mm

8. Printeri 3-D ose shërbimi i printerit 3d

Hapi 1: Mblidhni

Mbledh
Mbledh

Përdorni skemën për ta bashkuar atë.

Hapi 2: Si të instaloni Bibliotekën?

Hidhini një sy Github: https://github.com/relativty/Relativ Mund ta instaloni ose duke përdorur Git ose Shkarkim direkt.

Hapi 3: Kodi

// i2cdevlib dhe MPU6050 nevojiten:

// Faleminderit të madh për Jeff Rowberg -in e mahnitshëm <3, shkoni të kontrolloni repon e tij për të mësuar më shumë MPU6050. // ================================================ ==============================

// I2Cdev dhe MPU6050 duhet të instalohen si biblioteka, ose përndryshe skedarët.cpp/.h // për të dy klasat duhet të jenë në rrugën e përfshirjes së projektit tuaj

#përfshi "Relativ.h"

#përfshi "I2Cdev.h"

#përfshi "MPU6050_6Axis_MotionApps20.h"

#Nëse I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE #përfshi "Wire.h" #endif

MPU6050 mpu; Relativ relativ;

#përcaktoni INTERRUPT_PIN 2

// Statusi dhe kontrolli i IMU: bool dmpReady = false; // e vërtetë nëse DMP init ishte i suksesshëm uint8_t mpuIntStatus; uint8_t devStatus; // 0 = sukses,! 0 = gabim uint16_t packetSize; uint16_t fifoCount; uint8_t fifoBuffer [64];

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

bool i paqëndrueshëm mpuInterrupt = false; // tregon nëse kunja e ndërprerjes MPU ka shkuar shumë lart void dmpDataReady () {mpuInterrupt = true; }

void setup () {#nëse I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin (); Wire.setClock (400000); // Ora 400kHz I2C. Komentoni këtë rresht nëse keni vështirësi në përpilim #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire:: konfigurimi (400, e vërtetë); #endif

relativ.startNative (); // "startNative" mund të përdoret për mikrokontrollues bazë 32-bit ARM me USB Native si Arduino DUE // e cila rekomandohet. // Relativ.start (); // "start" është për mikrokontrollues USB JO-NATYVE, si Arduino MEGA, Arduino UNO.. // Ato janë dukshëm më të ngadalta. mpu.initialize (); pinMode (INTERRUPT_PIN, INPUT);

SerialUSB.println (mpu.testConnection ()? F ("Lidhja MPU6050 e suksesshme"): F ("Lidhja MPU6050 dështoi"));

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

// ================================= // furnizoni kompensimet tuaja xhiro këtu: // === ============================== mpu.setXGyroOffset (220); mpu.setYGyroOffset (76); mpu.setZGyroOffset (-85); mpu.setZAccelOffset (1788);

// devSTatus nëse gjithçka funksionon siç duhet nëse (devStatus == 0) {// aktivizoni DMP, tani që është gati mpu.setDMPE aktivizohet (e vërtetë);

// aktivizoni Arduino zbulimin e ndërprerjes attachInterrupt (digitalPinToInterrupt (INTERRUPT_PIN), dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus ();

dmpReady = e vërtetë;

// merrni madhësinë e pritshme të paketës DMP për pakot e krahasimit të mëvonshëmSize = mpu.dmpGetFIFOPacketSize (); } tjetër {// GABIM! }}

void loop () {// Mos bëni asgjë nëse DMP nuk inicializon saktë nëse (! dmpReady) kthehet;

// prisni që ndërprerja e MPU ose paketat shtesë të jenë në dispozicion derisa (! mpuInterrupt && fifoCount <packetSize) {}

// rivendos flamurin e ndërprerjes dhe merr INT_STATUS bajt mpuInterrupt = false; mpuIntStatus = mpu.getIntStatus ();

// merrni numrin aktual të FIFO fifoCount = mpu.getFIFOCount ();

if ((mpuIntStatus & 0x10) || fifoCount == 1024) {mpu.resetFIFO (); } // kontrolloni për ndërprerje tjetër nëse (mpuIntStatus & 0x02) {ndërsa (fifoCount <packetSize) fifoCount = mpu.getFIFOCount (); mpu.getFIFOBytes (fifoBuffer, packetSize); fifoCount -= PaketaSize; mpu.dmpGetQuaternion (& q, fifoBuffer); relativ.updateOrientationNative (q.x, q.y, q.z, q.w, 4); // updateOrientationNative "mund të përdoret për mikrokontrollues bazë 32-bit ARM me USB Native si Arduino DUE // e cila rekomandohet. //relativ.updateOrientation(qx, qy, qz, qw, 4); // Relativ.updateOrientimi" është për mikrokontrollues USB JO-NATYVE, si Arduino MEGA, Arduino UNO.. // Ato janë dukshëm më të ngadalta. }}

Hapi 4: Luaj

lëvizja e tabelës së vogël të bukës në çdo lojë vr duhet të rrotullojë kamerën

Recommended: