Բովանդակություն:

Arduino Vr: 4 քայլ
Arduino Vr: 4 քայլ

Video: Arduino Vr: 4 քայլ

Video: Arduino Vr: 4 քայլ
Video: Lesson 95: Using L293D 4 DC Motors Shield for Arduino UNO and Mega | Arduino Step By Step Course 2024, Նոյեմբեր
Anonim
Արդուինո Վր
Արդուինո Վր

Բարև Իմ անունը Քրիստիան է և ես 13 տարեկան եմ: Ես սիրում եմ arduino- ն և դրա տաղանդն ունեմ, ուստի ահա իմ հրահանգը arduino vr- ի համար:

Պարագաներ

Պարագաներ:

1. Arduino տախտակ Mega, Due, Uno կամ Yun:

2. Արականից արական (ստանդարտ jumper լարեր) լարեր:

3. Փոքր հացաթուղթ

4. USB

5. GY-521 MPU-6050

Լրացուցիչ:

6. 5,5 դյույմ 2560*1440 2K LCD էկրան HDMI դեպի MIPI

7. Ֆրենելի ոսպնյակ Ֆոկուսային երկարություն 50 մմ

8. 3D տպիչ կամ 3D տպիչի ծառայություն

Քայլ 1: Հավաքեք

Հավաքվել
Հավաքվել

Օգտագործեք սխեմատիկը `այն միասին հավաքելու համար:

Քայլ 2: Ինչպե՞ս տեղադրել գրադարանը:

Նայեք Github- ին ՝ https://github.com/relativty/Relativ Կարող եք տեղադրել այն Git- ի միջոցով կամ ուղղակի ներբեռնում:

Քայլ 3: Կոդ

// անհրաժեշտ են i2cdevlib և MPU6050 ՝

// Շնորհակալություն զարմանալի ffեֆ Ռոբերգին <3, գնացեք ստուգեք նրա ռեպոը ՝ ավելի շատ MPU6050 իմանալու համար: // ================================================ ==============================

// I2Cdev- ը և MPU6050- ը պետք է տեղադրվեն որպես գրադարաններ, հակառակ դեպքում.cpp/.h ֆայլերը // երկու դասերի համար պետք է լինեն ձեր նախագծի ներառման ուղու մեջ:

#ներառել «Relativ.h»

#ներառել «I2Cdev.h»

#ներառել "MPU6050_6Axis_MotionApps20.h"

#եթե I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE #ներառել "Wire.h" #endif

MPU6050 մպ; Հարաբերական հարաբերականություն;

#սահմանել INTERRUPT_PIN 2

// IMU կարգավիճակ և վերահսկում. Bool dmpReady = false; // ճշմարիտ, եթե DMP init- ը հաջող էր uint8_t mpuIntStatus; uint8_t devStatus; // 0 = հաջողություն,! 0 = սխալ uint16_t packetSize; uint16_t fifoCount; uint8_t fifoBuffer [64];

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

անկայուն bool mpuInterrupt = կեղծ; // ցույց է տալիս, արդյոք MPU- ի ընդհատման քորոցը բարձր է անվավեր dmpDataReady () {mpuInterrupt = true; }

void setup () { #եթե I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin (); Wire.setClock (400000); // 400kHz I2C ժամացույց: Մեկնաբանեք այս տողը, եթե կազմման դժվարություններ ունեք #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire:: setup (400, true); #էնդիֆ

relativ.startNative (); // «startNative»-ը կարող է օգտագործվել 32-բիթանոց ARM միջուկային միկրոկառավարիչի համար ՝ Arduino DUE- ի նման բնիկ USB- ով, ինչը խորհուրդ է տրվում: // Relativ.start (); // «սկիզբը» ոչ-USB USB միկրոկառավարիչի համար է, ինչպես Arduino MEGA- ն, Arduino UNO.. // Դրանք զգալիորեն ավելի դանդաղ են: mpu.initialize (); pinMode (INTERRUPT_PIN, INPUT);

SerialUSB.println (mpu.testConnection ()? F ("MPU6050 կապը հաջող է"). F ("MPU6050 կապը ձախողվեց"));

// կարգավորել DMP devStatus = mpu.dmpInitialize ();

// ================================== // // մատակարարեք ձեր սեփական գիրո -օֆսեթները այստեղ ՝ // === =============================== mpu.setXGyroOffset (220); mpu.setYGyroOffset (76); mpu.setZGyroOffset (-85); mpu.setZAccelOffset (1788);

// devSTatus, եթե ամեն ինչ ճիշտ է աշխատել, եթե (devStatus == 0) {// միացնել DMP- ը, այժմ, երբ այն պատրաստ է mpu.setDMPEnabled (true);

// միացնել Arduino- ի ընդհատումների հայտնաբերման attachInterrupt (digitalPinToInterrupt (INTERRUPT_PIN), dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus ();

dmpReady = ճշմարիտ;

// ստանալ սպասվող DMP փաթեթի չափը հետագայում համեմատվող packetSize = mpu.dmpGetFIFOPacketSize (); } այլ {// ՍԽԱԼ! }}

void loop () {// Ոչինչ մի արա, եթե DMP- ը ճիշտ չսկսի, եթե (! dmpReady) վերադառնա;

// սպասեք, մինչև MPU- ի ընդհատումը կամ լրացուցիչ փաթեթ (ները) հասանելի լինեն (! mpuInterrupt && fifoCount <packetSize) {}

// վերականգնել ընդհատման դրոշը և ստանալ INT_STATUS բայթ mpuInterrupt = false; mpuIntStatus = mpu.getIntStatus ();

// ստանալ ընթացիկ FIFO- ի հաշվարկը fifoCount = mpu.getFIFOCount ();

եթե ((mpuIntStatus & 0x10) || fifoCount == 1024) {mpu.resetFIFO (); } // ստուգեք, թե արդյոք այլևս (եթե mpu.getFIFOBytes (fifoBuffer, packetSize); fifoCount -= packetSize; mpu.dmpGetQuaternion (& q, fifoBuffer); relativ.updateOrientationNative (q.x, q.y, q.z, q.w, 4); // updateOrientationNative «կարող է օգտագործվել 32-բիթանոց ARM միջուկային միկրոկառավարիչի համար ՝ Arduino DUE- ի նման բնիկ USB- ով, որը խորհուրդ է տրվում: //relativ.updateOrientation(qx, qy, qz, qw, 4); // Relativ.updateOrientation" is ոչ բնիկ USB միկրոկառավարիչի համար, ինչպես Arduino MEGA- ն, Arduino UNO.. // Դրանք զգալիորեն ավելի դանդաղ են: }}

Քայլ 4: Խաղալ

Փոքր տախտակի տեղափոխումը ցանկացած vr խաղի վրա պետք է պտտել տեսախցիկը

Խորհուրդ ենք տալիս: