Engelden kaçan robot uygulamasını TÜBİTAK 4006 Bilim fuarları projesi olarak yapabilirsiniz. Hem dikkat çeken, hem de öğrencilerin severek yaptığı bir proje olabilir. Tübitak Bilim Fuarlarında da kullanabileceğiniz engelden kaçan robot uygulamasının arduino kodları, mblock kodları ve devre şeması yer almaktadır.
Gerekli Malzemeler
1 adet Arduino Uno R3
1 adet mini breadboard
1 adet 2WD robot araba kiti
1 adet L298N motor sürücü
2 adet 9V pil
1 adet RGB led
2 adet direnç (220 ohm)
19 adet jumper kablo (4EE, 15DE)
2WD araç kiti nedir?
Bu Robot Araba Kitinde arkadan itişli bir robot araba yapmak için gerekli bütün mekanik parçalar bulunmaktadır. Mekanik parçalar dışında sadece motor sürücü devresi ve bir kontrol kartı ile robot arabanızı kolaylıkla yapabilirsiniz. İçinde bulunan araba gövdesinde bulunan çeşitli vida delikleri ile gerekli devreleri monte etmeniz mümkündür. Gövde 21x10 cm boyutlarındadı
Engelden kaçan robot uygulamasını yaparken devre şemasını dikkatlice takip ediniz.
Engelden Kaçan Robot Uygulaması Devresi
Not:Eğer uygulamanızda ses ve ışık istemiyorsanız kullanmayabilirsiniz. Kodlari dilerseniz silebilirsiniz, silmezseniz de problemsiz çalışacaktır.
Engelden Kaçan Robot Uygulaması Arduino kodları
#define echoPin 12 // echo pini 12 numaralı pine
#define trigPin 13 // trig pini 13 numaralı pine tanımladık (mesafe sensörü pinleri)
//şimdi motor pinlerini tanımlıyoruz.
#define sag_ileri 7
#define sag_geri 6
#define sag_motor_hiz 9
#define sol_ileri 5
#define sol_geri 4
#define sol_motor_hiz 3
//rgb ledin iki bacağını tanımladık. Red - Green
#define kirmizi 10
#define yesil 11
#define ses 2
long sure, uzaklik; //süre ve uzaklık değişkenlerini tanımladık
void setup() {
//ledlerimizi çıkış olarak tanımlıyoruz
pinMode (kirmizi, OUTPUT);
pinMode (yesil, OUTPUT);
pinMode (ses, OUTPUT);
//mesafe sensörünün echo pinini giriş , trig pinini çıkış olarak tanımladık.
pinMode(echoPin, INPUT);
pinMode(trigPin, OUTPUT);
//Motorlarımızı çıkış olarak tanımlıyoruz.
pinMode(sol_ileri, OUTPUT);
pinMode(sol_geri, OUTPUT);
pinMode(sol_motor_hiz, OUTPUT);
pinMode(sag_ileri, OUTPUT);
pinMode(sag_geri, OUTPUT);
pinMode(sag_motor_hiz, OUTPUT);
//serial ekranı kullanmak için başlatıyoruz
Serial.begin(9600);
}
void loop() {
digitalWrite(trigPin, LOW); //sensör pasif hale getirildi
delayMicroseconds(5);
digitalWrite(trigPin, HIGH); //Sensore ses dalgasının üretmesi için emir verildi
delayMicroseconds(10);
digitalWrite(trigPin, LOW); //Yeni dalgaların üretilmemesi için trig pini LOW konumuna getirildi
sure = pulseIn(echoPin, HIGH); //ses dalgasının geri dönmesi için geçen sure ölçülüyor
uzaklik = sure / 29.1 / 2; //ölçülen süre uzaklığa çevriliyor
//serial ekrana uzaklık değeri yazdırıldı.
Serial.println(uzaklik);
if (uzaklik < 25) // Uzaklık 25'den küçük ise,
{
geri(); // 300 ms geri git
delay(300);
sag(); // 400 ms sağa dön
delay(400);
}
else { // değil ise,
ileri(); // ileri git
}
}
void ileri(){ // Robotun ileri yönde hareketi için fonksiyon tanımlıyoruz.
digitalWrite(ses, LOW);
digitalWrite(sag_ileri, HIGH); // Sağ motorun ileri hareketi aktif
digitalWrite(sag_geri, LOW); // Sağ motorun geri hareketi pasif
analogWrite(sag_motor_hiz, 150); // Sağ motorun hızı 150
digitalWrite(sol_ileri, HIGH); // Sol motorun ileri hareketi aktif
digitalWrite(sol_geri, LOW); // Sol motorun geri hareketi pasif
analogWrite(sol_motor_hiz, 150); // Sol motorun hızı 150
//ledi yeşil yap
analogWrite(kirmizi, 0);
analogWrite(yesil, 255);
}
void sag(){ // Robotun sağa dönme hareketi için fonksiyon tanımlıyoruz.
digitalWrite(sag_ileri, HIGH); // Sağ motorun ileri hareketi aktif
digitalWrite(sag_geri, LOW); // Sağ motorun geri hareketi pasif
analogWrite(sag_motor_hiz, 0); // Sağ motorun hızı 0 (Motor duruyor)
digitalWrite(sol_ileri, HIGH); // Sol motorun ileri hareketi aktif
digitalWrite(sol_geri, LOW); // Sol motorun geri hareketi pasif
analogWrite(sol_motor_hiz, 150); // Sol motorun hızı 150
//ledi kırmızı+yeşil yap
analogWrite(kirmizi, 255);
analogWrite(yesil, 255);
digitalWrite(ses, 1);
digitalWrite(ses,0);
digitalWrite(ses, 1);
digitalWrite(ses, 0);
}
void geri(){ // Robotun geri yönde hareketi için fonksiyon tanımlıyoruz.
digitalWrite(sag_ileri, LOW); // Sağ motorun ileri hareketi pasif
digitalWrite(sag_geri, HIGH); // Sağ motorun geri hareketi aktif
analogWrite(sag_motor_hiz, 150); // Sağ motorun hızı 150
digitalWrite(sol_ileri, LOW); // Sol motorun ileri hareketi pasif
digitalWrite(sol_geri, HIGH); // Sol motorun geri hareketi aktif
analogWrite(sol_motor_hiz, 150); // Sol motorun hızı 150
//ledi kırmızı yap
analogWrite(kirmizi, 255);
analogWrite(yesil, 0);
digitalWrite(ses, 1);
}
Engelden Kaçan Robot Uygulaması Mblock Kodları
İnceleyeiniz..
Engelden Kaçan Robot Uygulaması Robotistan
https://www.youtube.com/watch?v=r60jfB7TqLs