Სარჩევი:

Arduino Vr: 4 ნაბიჯი
Arduino Vr: 4 ნაბიჯი

ვიდეო: Arduino Vr: 4 ნაბიჯი

ვიდეო: Arduino Vr: 4 ნაბიჯი
ვიდეო: How to use 4 channel Relay to control AC load with Arduino code 2024, ნოემბერი
Anonim
არდუინო ვრ
არდუინო ვრ

გამარჯობა მე მქვია ქრისტიანი და მე ვარ 13 წლის. მე მიყვარს არდუინო და მაქვს მისი ნიჭი, ასე რომ, აქ არის ჩემი ინსტრუქცია არდუინოს წინააღმდეგ.

მარაგები

მასალები:

1. Arduino დაფა Mega, Due, Uno, ან Yun.

2. მამაკაცი მამრობითი (სტანდარტული მხტუნავი მავთულები) მავთულები.

3. მცირე ზომის დაფა

4. USB

5. GY-521 MPU-6050

სურვილისამებრ:

6. 5.5 დიუმიანი 2560*1440 2K LCD ეკრანი HDMI to MIPI

7. ფრესელის ობიექტივი ფოკალური სიგრძე 50 მმ

8. 3D პრინტერი ან 3D პრინტერის მომსახურება

ნაბიჯი 1: შეკრება

შეკრება
შეკრება

გამოიყენეთ სქემატური შედგენა.

ნაბიჯი 2: როგორ დავაყენოთ ბიბლიოთეკა?

გადახედეთ Github– ს: https://github.com/relativty/Relativ შეგიძლიათ დააინსტალიროთ ის Git– ის გამოყენებით ან პირდაპირი გადმოტვირთვით.

ნაბიჯი 3: კოდი

// i2cdevlib და MPU6050 საჭიროა:

// დიდი მადლობა საოცარი ჯეფ როუბერგის <3, გადადით შეამოწმეთ მისი რეპო, რომ გაიგოთ მეტი MPU6050. // ================================================ ==============================

// I2Cdev და MPU6050 უნდა იყოს დაინსტალირებული როგორც ბიბლიოთეკა, ან სხვაგვარად.cpp/.h ფაილები // ორივე კლასისთვის უნდა იყოს თქვენი პროექტის ჩართვის გზაზე

#მოიცავს "Relativ.h"

#მოიცავს "I2Cdev.h"

#მოიცავს "MPU6050_6Axis_MotionApps20.h"

#თუ I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE #მოიცავს "Wire.h" #endif

MPU6050 mpu; ნათესავი ნათესავი;

#განსაზღვრეთ 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]

არასტაბილური ბოლი mpuInterrupt = ყალბი; // მიუთითებს თუ არა MPU შეწყვეტის პინზე მაღალი void 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 ბირთვიანი მიკროკონტროლერისათვის მშობლიურ USB- სთან ერთად, როგორიცაა Arduino DUE // რაც რეკომენდირებულია. // Relativ.start (); // "დაწყება" განკუთვნილია არა-ნაციონალური USB მიკროკონტროლისთვის, როგორიცაა Arduino MEGA, Arduino UNO.. // ეს მნიშვნელოვნად ნელია. mpu. ინიციალიზაცია (); 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 (ჭეშმარიტი);

// ჩართვა 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 ();

if ((mpuIntStatus & 0x10) || fifoCount == 1024) {mpu.resetFIFO (); } // შემოწმება სხვა შეწყვეტისთვის თუ (mpuIntStatus & 0x02) {while (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 "შეიძლება გამოყენებულ იქნას 32-ბიტიანი ARM ბირთვიანი მიკროკონტროლერისთვის USB- ით Arduino DUE // რაც რეკომენდირებულია. //relativ.updateOrientation(qx, qy, qz, qw, 4); // Relativ.updateOrientation" არის არა-ნაციონალური USB მიკროკონტროლერისთვის, როგორიცაა Arduino MEGA, Arduino UNO.. // ეს მნიშვნელოვნად ნელია. }}

ნაბიჯი 4: თამაში

პატარა პურის დაფის ნებისმიერ vr თამაშზე გადატანამ უნდა შეაბრუნოს კამერა

გირჩევთ: