Агуулгын хүснэгт:

Arduino Vr: 4 алхам
Arduino Vr: 4 алхам

Видео: Arduino Vr: 4 алхам

Видео: Arduino Vr: 4 алхам
Видео: Montaje del robot Icebot v0.1. Paso 4: Colocar la Icezum Alhambra 2024, Арваннэгдүгээр
Anonim
Arduino Vr
Arduino Vr

Сайн уу Намайг Христчин гэдэг, би 13 настай. Би arduino -д дуртай, түүнд авьяастай болохоор эндээс arduino vr -д сургах зүйл байна.

Хангамж

Хангамж:

1. Arduino board Mega, Due, Uno, or Yun.

2. Эрэгтэй эрэгтэй (стандарт холбогч утас) утас.

3. Жижиг талхны хавтан

4. USB

5. GY-521 MPU-6050

Нэмэлт:

6. 5.5 инчийн 2560*1440 2K LCD дэлгэцтэй MIPI HDMI

7. Fresnel линз Фокусын урт 50мм

8. 3-D принтер эсвэл 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" -ийг оруулна уу.

#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE #"Wire.h" -ийг оруулна уу #endif

MPU6050 мегапиксел; Харьцангуй харьцангуй;

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]

дэгдэмхий bool 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, үнэн); #endif

relativ.startNative (); // "startNative" -ийг Arduino DUE // гэх мэт уугуул 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 хэрэв бүх зүйл зөв ажиллаж байсан бол (devStatus == 0) {// DMP -ийг асаахад бэлэн болсон тул mpu.setDMPEnabled (үнэн);

// Arduino тасалдлыг илрүүлэх attachInterrupt (digitalPinToInterrupt (INTERRUPT_PIN), dmpDataReady, RISING) -ийг идэвхжүүлэх; mpuIntStatus = mpu.getIntStatus ();

dmpReady = үнэн;

// хожим харьцуулахын тулд хүлээгдэж буй DMP пакетийн хэмжээг авах packetSize = mpu.dmpGetFIFOPacketSize (); } өөр {// АЛДАА! }}

void loop () {// (! dmpReady) буцах тохиолдолд DMP зөв эхлүүлээгүй бол юу ч хийхгүй байх;

// (! mpuInterrupt && fifoCount <packetSize) {} үед MPU тасалдал эсвэл нэмэлт пакет бэлэн байхыг хүлээнэ үү.

// тасалдлын тугийг анхны байдалд нь оруулж 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 // гэх мэт уугуул USB-тэй 32 битийн ARM цөмийн микроконтроллерт ашиглаж болно. //relativ.updateOrientation(qx, qy, qz, qw, 4); // Relativ.updateOrientation" нь Arduino MEGA, Arduino UNO зэрэг NON-NATIVE USB микроконтроллерын хувьд.. // Эдгээр нь хамаагүй удаан байдаг. }}

Алхам 4: Тоглох

Жижиг талхны самбарыг ямар ч vr тоглоом дээр шилжүүлэх нь камерыг эргүүлэх ёстой

Зөвлөмж болгож буй: