সুচিপত্র:

ITTT Rolando Ritzen - মোশন কন্ট্রোল আর্কেড গ্লাভস: 5 টি ধাপ
ITTT Rolando Ritzen - মোশন কন্ট্রোল আর্কেড গ্লাভস: 5 টি ধাপ

ভিডিও: ITTT Rolando Ritzen - মোশন কন্ট্রোল আর্কেড গ্লাভস: 5 টি ধাপ

ভিডিও: ITTT Rolando Ritzen - মোশন কন্ট্রোল আর্কেড গ্লাভস: 5 টি ধাপ
ভিডিও: Soccer Super Star Gameplay 2024, জুলাই
Anonim
আইটিটিটি রোল্যান্ডো রিটজেন - মোশন কন্ট্রোল আর্কেড গ্লাভ
আইটিটিটি রোল্যান্ডো রিটজেন - মোশন কন্ট্রোল আর্কেড গ্লাভ

Een handschoen die je kan gebruiken als গতি নিয়ন্ত্রক voor on-rail shooters। De gimmick van dit project is dat alles motion control is, inclusief het schieten। (Je schiet door te "আঙ্গুল bangen")

ধাপ 1: Het Materiaal

হিট ম্যাটেরিয়াল ডেট জে গাট নোডিগ হেবেন হল বৃজ সিম্পল। Arduino Leonardo1x MPU6050 gyroscope এর 1x Arduino pro micro

4x কাবেল

ধাপ 2: ডি বেকাবেলিং

ডি বেকাবেলিং
ডি বেকাবেলিং

Zoals je in het schema in de afbeelding ziet is de bekabeling super simple। MPU VCC> Arduino VCCMPU ground> Arduino groundMPU SCL> Pin 3MPU SDA> Pin 2

ধাপ 3: লাইব্রেরি 1

লাইব্রেরি ১
লাইব্রেরি ১

Voor dit project heb je een paar custom libraries nodig van deze link:

"ক্লোন বা ডাউনলোড" এর মাধ্যমে জিপ ফাইল ডাউনলোড করুন knop rechts bovenaan।

ধাপ 4: লাইব্রেরি 2

লাইব্রেরি 2
লাইব্রেরি 2

জিপ ফাইল খুলুন এবং মানচিত্র "Arduino" খুলুন। En uit deze Arduino map wil je de mapjes "I2Cdev" en "MPU6050" pakken en in je Arduino লাইব্রেরি zetten (প্রোগ্রাম ফাইল> Arduino> লাইব্রেরি)

ধাপ 5: ডি কোড

#অন্তর্ভুক্ত

#অন্তর্ভুক্ত #অন্তর্ভুক্ত #অন্তর্ভুক্ত #অন্তর্ভুক্ত

MPU6050 mpu;

int16_t কুড়াল, ay, az, gx, gy, gz;

int16_t accx, accy, accz; int vx, vy; ভাসমান কোণ;

// ইনপুটিন্ট রিডইনডেক্স = 0 মসৃণ করার জন্য কোড; const int numReadings = 20; int angleReadings [numReadings]; int মোট = 0; ভাসমান গড় কোণ = 0.0;

int oldZ = 0;

int newZ = 0;

অকার্যকর সেটআপ () {Serial.begin (115200); Wire.begin (); মাউস। শুরু (); mpu.initialize (); যদি (! mpu.testConnection ()) {while (1); }

জন্য (int thisReading = 0; thisReading <numReadings; thisReading ++) {angleReadings [thisReading] = 0; }}

অকার্যকর লুপ () {

মোট = মোট - কোণ রিডিং [readIndex];

কোণ রিডিংস [readIndex] = কোণ; মোট = মোট + কোণ রিডিং [readIndex]; readIndex = readIndex + 1; যদি (readIndex> = numReadings) {readIndex = 0; }

যদি (gz> 30000) {Serial.println ("Bang"); মাউস.ক্লিক (); // বন্দুকটি পিছন দিকে আঙ্গুল দিয়ে গুলি করুন (আঙুল বাজানো)}

// accx, accy, accz;

mpu.getMotion6 (& ax, & ay, & az, & gx, & gy, & gz); mpu.getAcceleration (& accx, & accy, & accz); // সিরিয়াল.প্রিন্টলন (জি); // Serial.println (কোণ);

oldZ = newZ;

vx = (gx + 1000) / 150; vy = - (gz - 200) / 150; Mouse.move (vx, vy); বিলম্ব (20);

Dit stukje কোড heeft een beetje uitleg nodig omdat je het waarschijnlijk een klein beetje moet aanpassen।

Wat er waarschijnlijk gaat gebeuren is dat je cursor uit zichzelf over je scherm gaat bewegen (van rechts naar links, van boven naar onder onder diagonaal) en dit stukje code zorgt er voor dat je curor stil blijft staan als je geen input gft। Je moet de values in "gx + 1000" en "gz - 200" aanpassen totdat je het resultat krijgt dat je wil en ik denk dat de values die wil nodig hebt afhankelijk zijn van je scherm resolutie। Als de cursor uit zichzelf van rechts naar links beweegd wil je "gx + x" aanpassen. Als de cursor uit zichzelf van boven naar onder beweegd wil je de "gz - x" aan passen। Als het diagonaal beweegd, dan kies je een van de twee values om aan te passen totdat hij nog maar over een as beweegd en dan pas je de andere aan।

সিরিয়াল.প্রিন্ট ("gx =");

Serial.print (gx); সিরিয়াল.প্রিন্ট ("| gz ="); Serial.print (gz); সিরিয়াল.প্রিন্ট ("| gy ="); Serial.println (gy); যদি (gx> 32000) {Serial.println ("Flick Right"); // ডান কীবোর্ডে বন্দুক ঝাঁকানোর সময় পুনরায় লোড করুন ('r'); বিলম্ব (250); } সিরিয়াল.প্রিন্ট ("accx ="); Serial.print (accx); সিরিয়াল.প্রিন্ট ("| accy ="); Serial.print (accy); সিরিয়াল.প্রিন্ট ("| accz ="); Serial.println (accz); // কাজ // কোণ = atan2 ((float) (ay - 16384), (float) (ax - 16384)) * (180.0 /PI) * -1; কোণ = atan2 ((float) ay, (float) ~ ax) * (180.0 / PI); // float angle = atan2 ((float) ay, (float) -ax) * (180.0 /PI); //Serial.println(averageAngle); }

প্রস্তাবিত: