Arduino Sensörlü Araç Yapımı
Arduino ile sensörlü engelden kaçan araba Arduino başlangıç için güzel bir projedir.
Bu arabanın karşısına engel çıkarsa sensör tarafından algılanan engel Arduino kodları ile nesnelere çarpmadan gitmesini sağlayabiliriz.
Bunun için aşağıdaki malzemelere ihtiyaç vardır.
- 1 adet 2WD (2 tekerlekli) Robot Araç Kiti
- 1 adet L298N Motor Sürücü Kartı
- 1 adet Arduino Uno SMD Klon
- Arduino Kartı ile Bilgisayar arasında bağlantı için USB Kablo
- 1 adet HC-SR04 Ultrasonik Mesafe Sensörü
- Jumper Kabloları
Araç bağlantı devresi
Engelden kaçan sensörlü araç Arduino kodu:
#define echoPin 13 // Ultrasonik sensörün echo pini Arduino'nun 13. pin tanımı
#define trigPin 12 // Ultrasonik sensörün trig pini Arduino'nun 12. pin tanımı
#define MotorR1 6 // Sağ Motor pini tanımlıyoruz.
#define MotorR2 7 // Sağ Motor pini tanımlıyoruz.
#define MotorRE 9 // Sağ Motor hız pini tanımlıyoruz.
#define MotorL1 5 // Sol Motor pini tanımlıyoruz.
#define MotorL2 4 // Sol Motor pini tanımlıyoruz.
#define MotorLE 3 // Sol Motor hız pini tanımlıyoruz.
long sure, uzaklik; //süre ve uzaklık değişkenleri tanımlıyoruz.
void setup() {
pinMode(echoPin, INPUT); // bu dalgaları Echo pini ile geri aldığı için INPUT (Giriş) olarak tanımlanır.
pinMode(trigPin, OUTPUT);// ultrasonik sensör Trig pininden ses dalgaları gönderdiği için OUTPUT (Çıkış),
pinMode(MotorL1, OUTPUT); //Motorlarımızı çıkış olarak tanımlıyoruz.
pinMode(MotorL2, OUTPUT);
pinMode(MotorLE, OUTPUT);
pinMode(MotorR1, OUTPUT);
pinMode(MotorR2, OUTPUT);
pinMode(MotorRE, OUTPUT);
Serial.begin(9600);
}
void loop() {
digitalWrite(trigPin, LOW); //sensör pasif hale getirildi
delayMicroseconds(5);
digitalWrite(trigPin, HIGH); //Sensore ses dalgasının için komut
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.println(uzaklik);
if (uzaklik < 15) // Uzaklık 15 cmden küçük ise,
{
geri(); // 150 milisaniye geri git
delay(150);
sag(); // 250 milisaniye sağa dön
delay(250);
}
else {
ileri(); // değilse ileri git
}
}
void ileri(){ // Robotun ileri yönde hareketi için fonksiyon tanımlıyoruz.
digitalWrite(MotorR1, HIGH); // Sağ motorun ileri hareketi aktif
digitalWrite(MotorR2, LOW); // Sağ motorun geri hareketi pasif
analogWrite(MotorRE, 150); // Sağ motorun hızı 150
digitalWrite(MotorL1, HIGH); // Sol motorun ileri hareketi aktif
digitalWrite(MotorL2, LOW); // Sol motorun geri hareketi pasif
analogWrite(MotorLE, 150); // Sol motorun hızı 150
}
void sag(){ // Robotun sağa dönme hareketi için fonksiyon tanımlıyoruz.
digitalWrite(MotorR1, HIGH); // Sağ motorun ileri hareketi aktif
digitalWrite(MotorR2, LOW); // Sağ motorun geri hareketi pasif
analogWrite(MotorRE, 0); // Sağ motorun hızı 0 (Motor duruyor)
digitalWrite(MotorL1, HIGH); // Sol motorun ileri hareketi aktif
digitalWrite(MotorL2, LOW); // Sol motorun geri hareketi pasif
analogWrite(MotorLE, 150); // Sol motorun hızı 150
}
void geri(){ // Robotun geri yönde hareketi için fonksiyon tanımlıyoruz.
digitalWrite(MotorR1, LOW); // Sağ motorun ileri hareketi pasif
digitalWrite(MotorR2, HIGH); // Sağ motorun geri hareketi aktif
analogWrite(MotorRE, 150); // Sağ motorun hızı 150
digitalWrite(MotorL1, LOW); // Sol motorun ileri hareketi pasif
digitalWrite(MotorL2, HIGH); // Sol motorun geri hareketi aktif
analogWrite(MotorLE, 150); // Sol motorun hızı 150
}
Sensörlü Araç Videosu