Мазмуну:

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

Video: Arduino Vr: 4 кадам

Video: Arduino Vr: 4 кадам
Video: DIY пульт управления на ардуино за $9 под Qczek LRS Payne RC 2024, Июль
Anonim
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 оюнунда жылдыруу камераны бурушу керек

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