Mục lục:

Arduino Vr: 4 bước
Arduino Vr: 4 bước

Video: Arduino Vr: 4 bước

Video: Arduino Vr: 4 bước
Video: Arduino | Điều Khiển Động Cơ Bước Cơ Bản | STEPPER BASIC 2024, Tháng bảy
Anonim
Arduino Vr
Arduino Vr

Xin chào Tên tôi là Christian và tôi 13 tuổi. Tôi yêu arduino và có năng khiếu về nó nên đây là tài liệu hướng dẫn của tôi về arduino vr.

Quân nhu

Quân nhu:

1. Bảng Arduino Mega, Due, Uno, hoặc Yun.

2. Dây nam sang nam (dây jumper tiêu chuẩn).

3. breadboard nhỏ

4. USB

5. GY-521 MPU-6050

Không bắt buộc:

6. Màn hình LCD 5.5 inch 2560 * 1440 2K HDMI to MIPI

7. Ống kính Fresnel Tiêu cự 50mm

8. Dịch vụ máy in 3-D hoặc máy in 3d

Bước 1: Lắp ráp

Tập hợp
Tập hợp

Sử dụng giản đồ để ghép chúng lại với nhau.

Bước 2: Làm thế nào để cài đặt Thư viện?

Hãy xem Github: https://github.com/relativty/Relativ Bạn có thể cài đặt nó bằng Git hoặc Tải xuống trực tiếp.

Bước 3: Mã

// i2cdevlib và MPU6050 là cần thiết:

// Cảm ơn Jeff Rowberg tuyệt vời <3, hãy xem repo của anh ấy để tìm hiểu thêm MPU6050. // ================================================ =============================

// I2Cdev và MPU6050 phải được cài đặt dưới dạng thư viện, nếu không các tệp.cpp /.h // cho cả hai lớp phải nằm trong đường dẫn bao gồm của dự án của bạn

#include "Relativ.h"

#include "I2Cdev.h"

#include "MPU6050_6Axis_MotionApps20.h"

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

MPU6050 mpu; Relativ Relativ;

#define INTERRUPT_PIN 2

// Trạng thái và điều khiển IMU: bool dmpReady = false; // true nếu DMP init thành công uint8_t mpuIntStatus; uint8_t devStatus; // 0 = thành công,! 0 = lỗi uint16_t packetSize; uint16_t FifoCount; uint8_t FifoBuffer [64];

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

bool dễ bay hơi mpuInterrupt = false; // cho biết chân ngắt MPU có tăng cao hay không void dmpDataReady () {mpuInterrupt = true; }

void setup () {#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin (); Wire.setClock (400000); // Đồng hồ I2C 400kHz. Nhận xét dòng này nếu gặp khó khăn khi biên dịch #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire:: setup (400, true); #endif

relativ.startNative (); // "startNative" có thể được sử dụng cho vi điều khiển lõi ARM 32-bit với USB gốc như Arduino DUE // được khuyến nghị. // Relativ.start (); // "start" dành cho vi điều khiển USB KHÔNG NATIVE, như Arduino MEGA, Arduino UNO.. // Những vi điều khiển này chậm hơn đáng kể. mpu.initialize (); pinMode (INTERRUPT_PIN, INPUT);

SerialUSB.println (mpu.testConnection ()? F ("Kết nối MPU6050 thành công"): F ("Kết nối MPU6050 không thành công"));

// cấu hình DMP devStatus = mpu.dmpInitialize ();

// ================================== // cung cấp hiệu số con quay hồi chuyển của riêng bạn tại đây: // === =============================== mpu.setXGyroOffset (220); mpu.setYGyroOffset (76); mpu.setZGyroOffset (-85); mpu.setZAccelOffset (1788);

// devSTatus nếu mọi thứ hoạt động bình thường if (devStatus == 0) {// bật DMP, bây giờ nó đã sẵn sàng mpu.setDMPEnabled (true);

// kích hoạt tính năng phát hiện ngắt Arduino attachmentInterrupt (digitalPinToInterrupt (INTERRUPT_PIN), dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus ();

dmpReady = true;

// lấy kích thước gói DMP dự kiến để so sánh sau đó packetSize = mpu.dmpGetFIFOPacketSize (); } else {// LỖI! }}

void loop () {// Không làm gì nếu DMP không khởi tạo chính xác if (! dmpReady) return;

// đợi ngắt MPU hoặc (các) gói bổ sung khả dụng trong khi (! mpuInterrupt && FifoCount <packetSize) {}

// đặt lại cờ ngắt và nhận INT_STATUS byte mpuInterrupt = false; mpuIntStatus = mpu.getIntStatus ();

// lấy số FIFO hiện tại là FifoCount = mpu.getFIFOCount ();

if ((mpuIntStatus & 0x10) || FifoCount == 1024) {mpu.resetFIFO (); } // kiểm tra ngắt else if (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 "có thể được sử dụng cho vi điều khiển lõi ARM 32-bit với USB gốc như Arduino DUE // được khuyến nghị. //relativ.updateOrientation(qx, qy, qz, qw, 4); // Relativ.updateOrientation" là đối với vi điều khiển USB NON-NATIVE, như Arduino MEGA, Arduino UNO.. // Chúng chậm hơn đáng kể. }}

Bước 4: Chơi

di chuyển breadboard nhỏ trên bất kỳ trò chơi vr nào sẽ xoay máy ảnh

Đề xuất: