Spisu treści:
Wideo: Arduino Vr: 4 kroki
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:28
Cześć Nazywam się Christian i mam 13 lat. Uwielbiam arduino i mam do tego talent, więc oto moja instrukcja dotycząca arduino vr.
Kieszonkowe dzieci
Kieszonkowe dzieci:
1. Płytka Arduino Mega, Due, Uno lub Yun.
2. Przewody męskie na męskie (standardowe przewody połączeniowe).
3. Mała płytka do krojenia chleba
4. USB
5. GY-521 MPU-6050
Opcjonalny:
6. Ekran LCD 5.5 cala 2560*1440 2 K HDMI do MIPI
7. Soczewka Fresnela Ogniskowa 50mm
8. Drukarka 3D lub usługa drukarki 3D
Krok 1: montaż
Użyj schematu, aby to złożyć.
Krok 2: Jak zainstalować bibliotekę?
Zajrzyj na Github: https://github.com/relativty/Relativ Możesz zainstalować go za pomocą Git lub bezpośrednio pobrać.
Krok 3: Kod
// potrzebne są i2cdevlib i MPU6050:
// Wielkie dzięki dla niesamowitego Jeffa Rowberga <3, sprawdź jego repozytorium, aby dowiedzieć się więcej MPU6050. //========================================================= ===============================
// I2Cdev i MPU6050 muszą być zainstalowane jako biblioteki, w przeciwnym razie pliki.cpp/.h // dla obu klas muszą znajdować się w ścieżce dołączania projektu
#include "Relativ.h"
#include "I2Cdev.h"
#include "MPU6050_6Axis_MotionApps20.h"
#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE #include "Wire.h" #endif
MPU6050 mpu; względny względny;
#define PRZERWANIE_PIN 2
// Status i kontrola IMU: bool dmpReady = false; // prawda, jeśli inicjowanie DMP powiodło się uint8_t mpuIntStatus; uint8_t devStatus; // 0 = sukces, !0 = błąd uint16_t rozmiar_pakietu; uint16_t fifoCount; uint8_t fifoBuffer[64];
Kwaternion q; // [w, x, y, z]
volatile bool mpuInterrupt = false; // wskazuje, czy pin przerwania MPU osiągnął stan wysoki void dmpDataReady() { mpuInterrupt = true; }
void setup() { #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin(); Wire.setClock(400000); // Zegar I2C 400kHz. Skomentuj tę linię, jeśli masz problemy z kompilacją #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire::setup(400, true); #endif
relativ.startNative(); // "startNative" może być używany z 32-bitowym mikrokontrolerem z rdzeniem ARM z natywnym USB, takim jak Arduino DUE // co jest zalecane. // Względny.start(); // "start" jest dla NON-NATYWNEGO mikrokontrolera USB, takiego jak Arduino MEGA, Arduino UNO.. // Są one znacznie wolniejsze. mpu.initialize(); pinMode(PRZERWANIE_PIN, WEJŚCIE);
SerialUSB.println(mpu.testConnection() ? F("Połączenie MPU6050 powiodło się"): F("Połączenie MPU6050 nie powiodło się"));
// skonfiguruj DMP devStatus = mpu.dmpInitialize();
// ================================== // podaj tutaj swoje własne przesunięcia żyroskopu: // === =============================== mpu.setXGyroOffset(220); mpu.setYGyroOffset(76); mpu.setZGyroOffset(-85); mpu.setZAccelOffset(1788);
// devSTAtus czy wszystko działało poprawnie if (devStatus == 0) { // włącz DMP, teraz gdy jest gotowe mpu.setDMPEnabled(true);
// włącz wykrywanie przerwań Arduino attachInterrupt(digitalPinToInterrupt(INTERRUPT_PIN), dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus();
dmpReady = prawda;
// uzyskaj oczekiwany rozmiar pakietu DMP do późniejszego porównania packSize = mpu.dmpGetFIFOPacketSize(); } else { // BŁĄD! } }
void loop() { // Nie rób nic, jeśli DMP nie zainicjuje się poprawnie if (!dmpReady) return;
// poczekaj na przerwanie MPU lub dodatkowe pakiety, gdy (!mpuInterrupt && fifoCount < packageSize) { }
// zresetuj flagę przerwania i uzyskaj INT_STATUS byte mpuInterrupt = false; mpuIntStatus = mpu.getIntStatus();
// pobierz aktualną liczbę FIFO fifoCount = mpu.getFIFOCount();
if ((mpuIntStatus & 0x10) || fifoCount == 1024) { mpu.resetFIFO(); } // sprawdź przerwanie else if (mpuIntStatus & 0x02) { while (fifoCount < wielkość_pakietu) fifoCount = mpu.getFIFOCount(); mpu.getFIFOBytes(fifoBuffer, rozmiar_pakietu); fifoCount -= rozmiarpakietu; mpu.dmpGetQuaternion(&q, fifoBuffer); relativ.updateOrientationNative(q.x, q.y, q.z, q.w, 4); // updateOrientationNative" może być używany dla 32-bitowego mikrokontrolera z rdzeniem ARM z natywnym USB, takim jak Arduino DUE // co jest zalecane. //relativ.updateOrientation(qx, qy, qz, qw, 4); // Relativ.updateOrientation" jest dla NON-NATIVE mikrokontrolera USB, jak Arduino MEGA, Arduino UNO.. // Są znacznie wolniejsze. } }
Krok 4: Graj
przesuwanie małej płytki prototypowej w dowolnej grze vr powinno obracać kamerę
Zalecana:
Pierwsze kroki z Digispark Attiny85 przy użyciu Arduino IDE: 4 kroki
Rozpoczęcie pracy z Digispark Attiny85 przy użyciu Arduino IDE: Digispark to oparta na Attiny85 płytka rozwojowa mikrokontrolera podobna do linii Arduino, tylko tańsza, mniejsza i nieco mniej wydajna. Z całą gamą osłon rozszerzających jego funkcjonalność i możliwością korzystania ze znanego identyfikatora Arduino
Pierwsze kroki z ESP32 - Instalowanie płytek ESP32 w Arduino IDE - Kod migania ESP32: 3 kroki
Pierwsze kroki z ESP32 | Instalowanie płytek ESP32 w Arduino IDE | ESP32 Blink Code: W tej instrukcji zobaczymy, jak rozpocząć pracę z esp32 i jak zainstalować płyty esp32 w Arduino IDE, a także zaprogramujemy esp 32 do uruchamiania kodu błyskowego za pomocą arduino ide
Pierwsze kroki z Stm32 przy użyciu Arduino IDE: 3 kroki
Pierwsze kroki z Stm32 przy użyciu Arduino IDE: STM32 to dość potężna i popularna płyta obsługiwana przez Arduino IDE. Aby z niej skorzystać, musisz zainstalować płyty dla stm32 w Arduino IDE, więc w tej instrukcji opowiem, jak zainstalować płyty stm32 i jak zaprogramować to
Pierwsze kroki z Esp 8266 Esp-01 z Arduino IDE - Instalowanie płytek Esp w Arduino Ide i programowanie Esp: 4 kroki
Pierwsze kroki z Esp 8266 Esp-01 z Arduino IDE | Instalowanie płyt Esp w Arduino Ide i programowanie Esp: W tej instrukcji dowiemy się, jak zainstalować płyty esp8266 w Arduino IDE oraz jak zaprogramować esp-01 i przesłać w nim kod. Ponieważ płyty esp są tak popularne, pomyślałem o naprawieniu instrukcji dla to i większość ludzi boryka się z problemem
Pierwsze kroki z Arduino: Co musisz wiedzieć: 4 kroki (ze zdjęciami)
Pierwsze kroki z Arduino: Co musisz wiedzieć: Pracuję z Arduino i elektroniką od wielu lat i wciąż się uczę. W tym stale rozwijającym się świecie mikrokontrolerów łatwo się zgubić i krążyć wokół siebie, próbując znaleźć informacje. W tej instrukcji