সুচিপত্র:

Arduino Vr: 4 ধাপ
Arduino Vr: 4 ধাপ

ভিডিও: Arduino Vr: 4 ধাপ

ভিডিও: Arduino Vr: 4 ধাপ
ভিডিও: Arduino Tutorial 4: Understanding Arduino Variables 2024, নভেম্বর
Anonim
আরডুইনো ভিআর
আরডুইনো ভিআর

হাই আমার নাম খ্রিস্টান এবং আমার বয়স 13 বছর। আমি arduino ভালবাসি এবং এর জন্য একটি প্রতিভা আছে তাই এখানে একটি arduino vr জন্য আমার নির্দেশযোগ্য।

সরবরাহ

সরবরাহ:

1. Arduino বোর্ড মেগা, ডিউ, ইউনো, বা ইউন।

2. পুরুষ থেকে পুরুষ (স্ট্যান্ডার্ড জাম্পার তার) তারের।

3. ছোট রুটিবোর্ড

4. ইউএসবি

5. GY-521 MPU-6050

চ্ছিক:

6. 5.5 ইঞ্চি 2560*1440 2K LCD স্ক্রিন HDMI থেকে MIPI

7. Fresnel লেন্স ফোকাল দৈর্ঘ্য 50mm

8. 3-ডি প্রিন্টার বা 3 ডি প্রিন্টার পরিষেবা

ধাপ 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"

#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE #অন্তর্ভুক্ত "Wire.h" #endif

MPU6050 mpu; আপেক্ষিক আপেক্ষিক;

#INTERRUPT_PIN নির্ধারণ করুন 2

// আইএমইউ অবস্থা এবং নিয়ন্ত্রণ: বুল dmpReady = মিথ্যা; // সত্য যদি DMP init সফল হয় uint8_t mpuIntStatus; uint8_t devStatus; // 0 = সাফল্য,! 0 = ত্রুটি uint16_t প্যাকেট সাইজ; uint16_t fifoCount; uint8_t fifoBuffer [64];

Quaternion q; // [ইংরেজি বর্ণমালার শেষ চারটি বর্ণ]

volatile bool mpuInterrupt = মিথ্যা; // নির্দেশ করে যে এমপিইউ ইন্টারাপ্ট পিন উচ্চ অকার্যকর হয়েছে কিনা dmpDataReady () {mpuInterrupt = true; }

অকার্যকর সেটআপ () {#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin (); Wire.setClock (400000); // 400kHz I2C ঘড়ি। সংকলন করতে সমস্যা হলে এই লাইনে মন্তব্য করুন #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire:: setup (400, true); #যদি শেষ

রিলেটিভ স্টার্ট নেটিভ (); // "startNative" 32-বিট এআরএম কোর মাইক্রোকন্ট্রোলারের জন্য ব্যবহার করা যেতে পারে যার সাথে নেটিভ ইউএসবি যেমন Arduino DUE // যা সুপারিশ করা হয়। // Relativ.start (); // "শুরু" হল নন-নেটিভ ইউএসবি মাইক্রোকন্ট্রোলারের জন্য, যেমন 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 ইন্টারাপ্ট ডিটেকশন অ্যাটাচ ইন্টেরাপ্ট (ডিজিটাল পিন্টোইনট্রাপ্ট (INTERRUPT_PIN), dmpDataReady, RISING) সক্ষম করুন; mpuIntStatus = mpu.getIntStatus ();

dmpReady = সত্য;

// পরবর্তী তুলনা প্যাকেটের জন্য প্রত্যাশিত DMP প্যাকেটের আকার পান সাইজ = mpu.dmpGetFIFOPacketSize (); } অন্যথায় {// ভুল! }}

অকার্যকর লুপ () {// যদি ডিএমপি সঠিকভাবে শুরু না হয় তবে কিছু করবেন না যদি (! dmpReady) ফিরে আসে;

// এমপিইউ বাধা বা অতিরিক্ত প্যাকেট উপলব্ধ হওয়ার জন্য অপেক্ষা করুন (! mpuInterrupt && fifoCount <packetSize) {}

// বাধা পতাকা পুনরায় সেট করুন এবং INT_STATUS বাইট mpuInterrupt = মিথ্যা পান; mpuIntStatus = mpu.getIntStatus ();

// বর্তমান FIFO গণনা পান fifoCount = mpu.getFIFOCount ();

যদি ((mpuIntStatus & 0x10) || fifoCount == 1024) {mpu.resetFIFO (); } // অন্যত্র বাধা পরীক্ষা করুন যদি (mpuIntStatus & 0x02) {while (fifoCount <packetSize) fifoCount = mpu.getFIFOCount (); mpu.getFIFOBytes (fifoBuffer, packetSize); fifoCount -= packetSize; mpu.dmpGetQuaternion (& q, fifoBuffer); আপেক্ষিক আপডেটঅরিয়েন্টেশন নেটিভ // updateOrientationNative "32-বিট ARM কোর মাইক্রোকন্ট্রোলারের জন্য ব্যবহার করা যেতে পারে নেটিভ ইউএসবি যেমন Arduino DUE // যা প্রস্তাবিত। //relativ.updateOrientation(qx, qy, qz, qw, 4); // Relativ.updateOrientation" হল নন-নেটিভ ইউএসবি মাইক্রোকন্ট্রোলারের জন্য, যেমন Arduino MEGA, Arduino UNO.. // সেগুলি উল্লেখযোগ্যভাবে ধীর। }}

ধাপ 4: খেলুন

যে কোনও ভিআর গেমের ছোট রুটিবোর্ডটি সরানো ক্যামেরাটি ঘোরানো উচিত

প্রস্তাবিত: