Arduino Vr: 4 кадам
Arduino Vr: 4 кадам
Arduino Vr
Arduino Vr

Саламатсызбы Менин атым Кристиан, мен 13 жаштамын. Мен ардуинону жакшы көрөм жана анын таланты бар, бул жерде менин arduino vr үчүн көрсөтмөм бар.

Жабдуулар

Берилиштер:

1. Arduino board Mega, Due, Uno же Yun.

2. Эркектен эркекке (стандарттуу секирүүчү зымдар) зымдар.

3. Кичинекей нан

4. USB

5. GY-521 MPU-6050

Кошумча:

6. 5.5 дюйм 2560*1440 2K ЖК Экран HDMI MIPIге

7. Френель линзасы Фокус аралыгы 50мм

8. 3-D принтер же 3d принтер кызматы

1 -кадам: чогултуу

Чогулт
Чогулт

Аны бириктирүү үчүн схеманы колдонуңуз.

2 -кадам: Китепкана кантип орнотулат?

Githubду карап көрүңүз: https://github.com/relativty/Relativ Сиз аны Git же түз жүктөө аркылуу орното аласыз.

3 -кадам: Код

// i2cdevlib жана MPU6050 керек:

// Укмуш Jeff Rowberg <3 үчүн чоң рахмат, MPU6050 жөнүндө көбүрөөк билүү үчүн анын репосун текшериңиз. // =============================================== =============================

// I2Cdev жана MPU6050 китепканалар катары орнотулушу керек, же болбосо.cpp/.h файлдары // эки класс үчүн долбооруңуздун кошуу жолунда болушу керек.

#"Relativ.h" кошуу

#"I2Cdev.h" кошуу

#кошуу "MPU6050_6Axis_MotionApps20.h"

#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE #incire "Wire.h" #endif

MPU6050 мпу; Relativ relativ;

#аныктоо INTERRUPT_PIN 2

// ӨИКтин абалы жана көзөмөлү: 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 = false; // MPU үзгүлтүк пини жогорку боштукка кеткенин көрсөтөт dmpDataReady () {mpuInterrupt = true; }

void setup () {#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin (); Wire.setClock (400000); // 400 кГц I2C сааты. Компиляцияда кыйынчылыктар болсо, бул сапка комментарий жазыңыз #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire:: setup (400, true); #endif

relativ.startNative (); // "startNative" сунушталат Arduino DUE // сыяктуу Native USB менен 32 биттик ARM негизги микроконтроллери үчүн колдонулушу мүмкүн. // Relativ.start (); // "баштоо" Arduino MEGA, Arduino UNO сыяктуу ТҮПКҮ эмес USB микроконтроллери үчүн.. // Булар кыйла жайыраак. 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 эгер баары туура иштесе if (devStatus == 0) {// DMPти күйгүзүңүз, азыр ал даяр mpu.setDMPEnabled (чыныгы);

// иштетүү Arduino үзүлүүнү аныктоо attachInterrupt (digitalPinToInterrupt (INTERRUPT_PIN), dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus ();

dmpReady = чын;

// кийинчерээк салыштыруу үчүн күтүлгөн DMP пакетинин өлчөмүн алуу packetSize = mpu.dmpGetFIFOPacketSize (); } башка {// КАТА! }}

void loop () {// (! dmpReady) кайтып келсе, DMP туура башталбаса эч нерсе кылбаңыз;

// 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 "сунушталган Arduino DUE // сыяктуу Native USB менен 32 биттик ARM негизги микроконтроллери үчүн колдонулушу мүмкүн. //relativ.updateOrientation(qx, qy, qz, qw, 4); // Relativ.updateOrientation" болуп саналат ТУУРА эмес USB микроконтроллери үчүн, Arduino MEGA, Arduino UNO.. // Булар кыйла жайыраак. }}

4 -кадам: Play

кичинекей нан тактасын каалаган vr оюнунда жылдыруу камераны бурушу керек

Сунушталууда: