İçindekiler:

Robotik Arabadan Kaçınan Engel: 9 Adım
Robotik Arabadan Kaçınan Engel: 9 Adım

Video: Robotik Arabadan Kaçınan Engel: 9 Adım

Video: Robotik Arabadan Kaçınan Engel: 9 Adım
Video: İnfrared Kızılötesi Sensörü Kullanımı #42 2024, Kasım
Anonim
Robotik Arabadan Kaçınan Engel
Robotik Arabadan Kaçınan Engel
Robotik Arabadan Kaçınan Engel
Robotik Arabadan Kaçınan Engel

Engelden Kaçınan Robot Nasıl Yapılır?

Adım 1: Kara Kutu

kara kutu
kara kutu

ilk adımda robotum için temel olarak bir kara kutu kullandım.

Adım 2: Arduino

Arduino
Arduino

Arduino tüm sistemin beynidir ve motorlarımızı yönetir.

Adım 3: Arduino'yu Blackbox'a Bağlama

Arduino'yu Blackbox'a Bağlamak
Arduino'yu Blackbox'a Bağlamak

Arduino'yu sıcak tutkal kullanarak kara kutuya bağladım

Adım 4: Ultrasonik Sensör

Ultrasonik sensör
Ultrasonik sensör

Kendi başına hareket edebilen bir robot yapmak için bir tür girdiye, amacımıza uygun bir sensöre ihtiyacımız var. Ultrasonik sensör, ultrasonik ses dalgalarını kullanarak bir nesneye olan mesafeyi ölçen bir araçtır. Bir ultrasonik sensör, bir nesnenin yakınlığı hakkındaki bilgileri geri ileten ultrasonik darbeleri göndermek ve almak için bir dönüştürücü kullanır.

Adım 5: Sensörün Arduino'ya Breadboard Bağlantısı

Sensörün Arduino'ya Breadboard Bağlantısı
Sensörün Arduino'ya Breadboard Bağlantısı
Sensörün Arduino'ya Breadboard Bağlantısı
Sensörün Arduino'ya Breadboard Bağlantısı

Breadboard ve arduino arasındaki bağlantıyı erkekleştirmek için teller kullandım.

Ping sensörünüzün pin yerleşimi farklı olabilir ama voltaj pini, topraklama pini, trig pini ve eko pini olması gerektiğine dikkat edin.

Adım 6: Motor Kalkanı

Motor Kalkanı
Motor Kalkanı

Arduino kartları ürettikleri akımlar çok düşük olduğu için DC motorları kendi başlarına kontrol edemezler. Bu sorunu çözmek için motor kalkanları kullanıyoruz. Motor kalkanı iki DC motorun kontrolüne izin veren 2 kanallı veya 1 step motor. … Bu pinleri adresleyerek başlatmak için bir motor kanalı seçebilir, motor yönünü (polaritesini) belirleyebilir, motor hızını (PWM) ayarlayabilir, motoru durdurup başlatabilir ve her kanalın akım emilimini izleyebilirsiniz.

Adım 7: Motor Shield'i Arduino'ya Bağlama

Motor Shield'i Arduino'ya Bağlama
Motor Shield'i Arduino'ya Bağlama

Sensör kabloları sıkılmış haldeyken motor blendajını arduinoya takmanız yeterlidir.

Adım 8: 4 Motoru ve Bataryayı Kalkana Bağlama

4 Motoru ve Bataryayı Kalkana Bağlama
4 Motoru ve Bataryayı Kalkana Bağlama

Her Motor Kalkanı, biri motorlar için diğeri güç kaynağı için olmak üzere (en az) iki kanala sahiptir. Bunları birbirine göre bağlayın

Adım 9: Robotu Programlayın

bu kodu çalıştır

#include #include

NewPing sonar(TRIG_PIN, ECHO_PIN, MAX_DISTANCE);

AF_DCMotor motor1(1, MOTOR12_1KHZ); AF_DCMotor motor2(2, MOTOR12_1KHZ); AF_DCMotor motor3(3, MOTOR34_1KHZ); AF_DCMotor motor4(4, MOTOR34_1KHZ); Servo myservo;

#define TRIG_PIN A2 #define ECHO_PIN A3 #define MAX_DISTANCE 150 #define MAX_SPEED 100 #define MAX_SPEED_OFFSET 10

boolean gidiyorForward=false; int mesafe = 80; int hız Kümesi = 0;

geçersiz kurulum() {

myservo.attach(10); myservo.write(115); gecikme(2000); mesafe = readPing(); gecikme(100); mesafe = readPing(); gecikme(100); mesafe = readPing(); gecikme(100); mesafe = readPing(); gecikme(100); }

void loop() { int mesafeR = 0; int mesafeL = 0; gecikme(40); if(mesafe<=15) { moveStop(); gecikme(50); Geriye doğru hareket(); gecikme(150); hareketStop(); gecikme(100); mesafeR = bakSağ(); gecikme(100); mesafeL = bakSol(); gecikme(100);

if(mesafeR>=mesafeL) { turnRight(); hareketStop(); }else { turnLeft(); hareketStop(); } }else { moveForward(); } mesafe = readPing(); }

int lookRight() { myservo.write(50); gecikme(250); int mesafe = readPing(); gecikme(50); myservo.write(100); dönüş mesafesi; }

int lookLeft() { myservo.write(120); gecikme(300); int mesafe = readPing(); gecikme(100); myservo.write(115); dönüş mesafesi; gecikme(100); }

int readPing() { gecikme(70); int cm = sonar.ping_cm(); if(cm==0) { cm = 200; } cm'yi döndür; }

void moveStop() { motor1.run(RELEASE); motor2.run(ÇALIŞTIR); motor3.run(ÇALIŞTIR); motor4.run(ÇALIŞTIR); } geçersiz moveForward() {

if(!goesForward) { goesForward=true; motor1.run(İLERİ); motor2.run(İLERİ); motor3.run(İLERİ); motor4.run(İLERİ); için (speedSet = 0; speedSet < MAX_SPEED; speedSet +=2) { motor1.setSpeed(speedSet); motor2.setSpeed(speedSet); motor3.setSpeed(speedSet); motor4.setSpeed(speedSet); gecikme(5); } } }

void moveBackward() { goForward=false; motor1.run(GERİ); motor2.run(GERİ); motor3.run(GERİ); motor4.run(GERİ); için (speedSet = 0; speedSet < MAX_SPEED; speedSet +=2) { motor1.setSpeed(speedSet); motor2.setSpeed(speedSet); motor3.setSpeed(speedSet); motor4.setSpeed(speedSet); gecikme(5); } void turnLeft() { motor1.run(GERİ); motor2.run(GERİ); motor3.run(İLERİ); motor4.run(İLERİ); gecikme(500); motor1.run(İLERİ); motor2.run(İLERİ); motor3.run(İLERİ); motor4.run(İLERİ); }

void turnLeft() { motor1.run(GERİ); motor2.run(GERİ); motor3.run(İLERİ); motor4.run(İLERİ); gecikme(500); motor1.run(İLERİ); motor2.run(İLERİ); motor3.run(İLERİ); motor4.run(İLERİ); }

Önerilen: