Isi kandungan:

Gyro Sensor Controlled Platform for Maze Puzzle: 3 Langkah
Gyro Sensor Controlled Platform for Maze Puzzle: 3 Langkah

Video: Gyro Sensor Controlled Platform for Maze Puzzle: 3 Langkah

Video: Gyro Sensor Controlled Platform for Maze Puzzle: 3 Langkah
Video: Arduino Maze Controlled with gyroscope DIY - instructables 2024, Julai
Anonim
Gyro Sensor Controlled Platform untuk Maze Puzzle
Gyro Sensor Controlled Platform untuk Maze Puzzle

Instruksional ini dibuat untuk memenuhi keperluan projek kursus Make di University of South Florida (www.makecourse.com)"

Projek sederhana ini diilhamkan oleh platform self-balancing yang mengambil maklum balas dari sensor accelerometer. Lihat jika anda belum melakukannya.

Projek ini menggunakan Arduino UNO - Mudah digunakan mikrokontroler yang anda dapat dari laman web membeli-belah dalam talian! Dalam arahan ini, saya akan menunjukkan bagaimana anda boleh membuat platform miring sendiri yang dapat diprogramkan - dari proses reka bentuk hingga bahagian sumber, fail percetakan 3D, pemasangan, dan pengaturcaraan. Ikutilah dan terus maju!

Langkah 1: Komponen yang Diperlukan dan Bahagian Bercetak 3D

Komponen yang Diperlukan dan Bahagian Bercetak 3D
Komponen yang Diperlukan dan Bahagian Bercetak 3D
Komponen yang Diperlukan dan Bahagian Bercetak 3D
Komponen yang Diperlukan dan Bahagian Bercetak 3D
Komponen yang Diperlukan dan Bahagian Bercetak 3D
Komponen yang Diperlukan dan Bahagian Bercetak 3D

Senarai komponen yang digunakan untuk projek:

1. Arduino UNO Mikrokontroler.

2. Papan roti dengan wayar pelompat.

3. Kotak.

4. Platform pekeliling

5. Maze.

6. Pautan - 3 No

7. Pangkalan untuk memasang tiga servo.

8. Sensor Gyro / Accelerometer. (MPU6050)

Wayar 9.1sq mm (500cm) - 4 No

10. Bola keluli 3mm dia.

Sebilangan besar bahagian yang digunakan untuk projek ini dicetak 3D dan saya telah melampirkan stl. fail siap dicetak.

Pasang semua bahagian seperti yang ditunjukkan dalam gambar. Labirin terpaku panas ke pelataran bulat untuk kelihatan seperti dalam gambar. Ketiga-tiga servo harus dilekatkan panas pada pangkalan cetak 3D yang dipasang di penutup kotak. Kotak itu mengandungi Arduino UNO dan Breadboard yang dipasang seperti yang ditunjukkan dalam gambar. Penyediaan papan roti akan dibincangkan pada langkah seterusnya.

Selepas pemasangan, prototaip akhir akan kelihatan seperti pada gambar terakhir.

Langkah 2: Persediaan Papan Roti

Penyediaan Papan Roti
Penyediaan Papan Roti
Penyediaan Papan Roti
Penyediaan Papan Roti
Penyediaan Papan Roti
Penyediaan Papan Roti

Selepas pemasangan, Arduino, sensor Accelerometer, servo disambungkan seperti yang dijelaskan dalam berikut.

Rel positif dan negatif di papan roti masing-masing dihubungkan ke 5V dan GND Arduino. Sensor disambungkan ke Arduino menggunakan kabel setengah meter yang akan disolder ke sensor sehingga pin VCC dan GND sensor disambungkan ke rel + ve dan -ve di papan roti masing-masing. Pin SCL dan SDA sensor akan disambungkan ke pin analog A5 dan A4 Arduino. Pin PWM dari ketiga servo masing-masing disambungkan ke 2, 3, 4 pin Arduino dan pin + ve dan -ve dari semua servo disambungkan ke rel + ve dan -ve papan roti. dengan ini, hubungan kita selesai.

Langkah 3: Kod untuk Projek

anda boleh memuat turun perpustakaan MPU6050 dan Servo dari internet dan menggunakannya untuk projek. Kumpulkan dan muat naik kod berikut ke Arduino dan projeknya sudah siap. Miringkan sensor dan anda dapat melihat labirin condong ke arah yang sama! Ia memerlukan sedikit masa untuk menyelesaikan teka-teki kerana agak mencabar tetapi menyeronokkan untuk bermain dengannya.

#sertakan

#sertakan

#sertakan

Servo Servo1;

Servo Servo2;

Servo Servo3;

Sensor MPU6050;

int servoPos1 = 90;

int servoPos2 = 90;

int servoPos3 = 90;

int16_t ax, ay, az;

int16_t gx, gy, gz;

persediaan tidak sah ()

{

Servo1.attach (2);

Servo2.attach (3);

Servo3.attach (4);

Wire.begin ();

Serial.begin (9600);

}

gelung kosong ()

{

sensor.getMotion6 (& ax, & ay, & az, & gx, & gy, & gz);

ax = peta (ax, -17000, 17000, 0, 180);

ay = peta (ay, -17000, 17000, 0, 180);

Serial.print ("ax =");

Serial.print (kapak);

Serial.print ("ay =");

Serial.println (ay);

jika (ax <80 && ay <80) {

Servo1.write (servoPos1 ++);

Servo2.write (servoPos2--);

Servo3.write (servoPos3--); }

jika (kapak 120) {

Servo1.write (servoPos1--);

Servo2.write (servoPos2 ++);

Servo3.write (servoPos3--); }

jika (kapak> 120 && ay> 0) {

Servo1.write (servoPos1--);

Servo2.write (servoPos2--);

Servo3.write (servoPos3 ++); }

jika (ax == 90 && ay == 90) {

Servo1.write (0);

Servo2.write (0);

Servo3.write (0);

}

}

Disyorkan: