İçindekiler:

Labirent Bulmaca için Gyro Sensör Kontrollü Platform: 3 Adım
Labirent Bulmaca için Gyro Sensör Kontrollü Platform: 3 Adım

Video: Labirent Bulmaca için Gyro Sensör Kontrollü Platform: 3 Adım

Video: Labirent Bulmaca için Gyro Sensör Kontrollü Platform: 3 Adım
Video: Gesture Controlled Maze 2024, Kasım
Anonim
Labirent Bulmaca için Gyro Sensör Kontrollü Platform
Labirent Bulmaca için Gyro Sensör Kontrollü Platform

Bu talimat, Güney Florida Üniversitesi'ndeki (www.makecourse.com) Make kursunun proje gereksinimini yerine getirmek için oluşturulmuştur

Bu basit proje, ivmeölçer sensöründen geri bildirim alan kendi kendini dengeleyen bir platformdan esinlenmiştir. Henüz yapmadıysanız kontrol edin.

Proje Arduino UNO kullanıyor - Online alışveriş sitelerinden temin edebileceğiniz kullanımı kolay bir mikrodenetleyici! Bu talimatta, tasarım sürecinden kaynak bulma parçalarına, 3D baskı dosyalarına, montaja ve programlamaya kadar kendi programlanabilir eğme platformunuzu nasıl yapabileceğinizi göstereceğim. Dayan ve ilerleyelim!

Adım 1: Gerekli Bileşenler ve 3D Basılı Parçalar

Gerekli Bileşenler ve 3D Basılı Parçalar
Gerekli Bileşenler ve 3D Basılı Parçalar
Gerekli Bileşenler ve 3D Basılı Parçalar
Gerekli Bileşenler ve 3D Basılı Parçalar
Gerekli Bileşenler ve 3D Basılı Parçalar
Gerekli Bileşenler ve 3D Basılı Parçalar

Proje için kullanılan bileşenlerin listesi:

1. Arduino UNO Mikrodenetleyici.

2. Jumper kablolu ekmek tahtası.

3. Bir kutu.

4. Dairesel platform

5. Labirent.

6. Linkler - 3 Hayır

7. Üç servoyu monte etmek için bir taban.

8. Gyro/İvmeölçer sensörü. (MPU6050)

9.1sq mm teller (500cm) - 4 Hayır

10. 3 mm çapında çelik bilyeler.

Proje için kullanılan parçaların çoğu 3D basılmıştır ve stl'yi ekledim. dosyalar yazdırmaya hazır.

Tüm parçaları şekillerde gösterildiği gibi birleştirin. Labirent, resimdeki gibi görünmesi için dairesel platforma sıcak yapıştırılmıştır. Üç servo, kutunun kapağına monte edilen 3D baskılı tabana sıcak yapıştırılmalıdır. Kutu, şekilde gösterildiği gibi monte edilmiş Arduino UNO ve Breadboard'u içerir. Breadboard kurulumu bir sonraki adımda ele alınacaktır.

Montajdan sonra nihai prototip son resimdeki gibi görünmelidir.

2. Adım: Breadboard Kurulumu

Breadboard Kurulumu
Breadboard Kurulumu
Breadboard Kurulumu
Breadboard Kurulumu
Breadboard Kurulumu
Breadboard Kurulumu

Montajdan sonra Arduino, İvmeölçer sensörü, servolar aşağıda anlatıldığı gibi bağlanır.

Breadboard üzerindeki pozitif ve negatif raylar sırasıyla Arduino'nun 5V ve GND'sine bağlanır. Sensörün VCC ve GND pinleri breadboard üzerinde sırasıyla +ve ve -ve raylarına bağlanacak şekilde sensöre lehimlenecek olan yarım metre teller kullanılarak sensör Arduino'ya bağlanır. Arduino'nun A5 ve A4 analog pinlerine bağlanacak sensörün SCL ve SDA pinleri. Üç servonun PWM pinleri sırasıyla Arduino'nun 2, 3, 4 pinlerine bağlanır ve tüm servoların +ve ve -ve pinleri breadboard'un +ve ve -ve raylarına bağlanır. bununla bağlantılarımız tamamlanmış oluyor.

Adım 3: Proje Kodu

MPU6050 ve Servo kütüphanelerini internetten indirip proje için kullanabilirsiniz. Aşağıdaki kodu derleyip Arduino'ya yükleyin ve proje hazır. Sensörü eğin ve labirentin aynı yönde eğildiğini görebilirsiniz! Bulmacayı çözmek biraz zor ama oynaması eğlenceli olduğu için biraz zaman alıyor.

#Dahil etmek

#Dahil etmek

#Dahil etmek

Servo Servo1;

Servo Servo2;

Servo Servo3;

MPU6050 sensörü;

int servoPos1=90;

int servoPos2=90;

int servoPos3=90;

int16_t balta, ay, az;

int16_t gx, gy, gz;

geçersiz kurulum ()

{

Servo1.ek (2);

Servo2.ek (3);

Servo3.ek (4);

tel.başla ();

Seri.başlangıç (9600);

}

boşluk döngüsü ()

{

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

balta = harita (ax, -17000, 17000, 0, 180);

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

Seri.print ("ax=");

Seri.baskı (balta);

Seri.print (" ay=");

Serial.println (ay);

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

Servo1.write(servoPos1++);

Servo2.write(servoPos2--);

Servo3.write(servoPos3--); }

if (balta 120){

Servo1.write(servoPos1--);

Servo2.write(servoPos2++);

Servo3.write(servoPos3--); }

if (ax > 120 && ay > 0){

Servo1.write(servoPos1--);

Servo2.write(servoPos2--);

Servo3.write(servoPos3++); }

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

Servo1.write(0);

Servo2.write(0);

Servo3.write(0);

}

}

Önerilen: