Arduino ile yaptığım "engelden kaçan araba" düzgün çalışmıyor

228522

Kilopat
Katılım
8 Eylül 2018
Mesajlar
1.382
Makaleler
4
Çözümler
4
Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.

Bu arabayı yaptım ama farklı bir "güç kaynağı" kullandım. 9V pil ile "Arduino kartımı" besliyorum. Linkini atacağım pili kullanarak "motor sürücüsünü" besliyorum(L298n sürücüsünü kullanıyorum.) Motorlarım çalışmıyor :(. İleri veya geri hiçbir şekilde dönmüyor. Daha önce açtığım bir konuyu incelemenizi istiyorum çünkü bu projeyi daha önceden yapmıştım(düzgün çalışmamıştı.) İlk denememde 9V pil ile hem "motor sürücüsünü" hem de "Arduino kartımı" beslemeyi denemiştim ama yetmemişti, motorlar "küçük küçük" dönüyordu(güç kaynağım yetmemişti çünkü.) Bu sefer güç kaynağım yettiği halde bu sorunu yaşadım. Yazılımsal olarak düzeltmeyi çalıştım ama yine olmadı. Bence motorlarım bozuk.
Linkler:
[CODE title="Projem için kullandığım Arduino kodları"]#define echoPin 12 //Ultrasonik sensörün echo pini Arduino'nun 12.pinine
#define trigPin 13 //Ultrasonik sensörün trig pini Arduino'nun 13.pinine tanımlandı.
#define MotorR1 6
#define MotorR2 7
#define MotorRE 9 // Motor pinlerini tanımlıyoruz.
#define MotorL1 4
#define MotorL2 5
#define MotorLE 3

long sure, uzaklik; //süre ve uzaklık diye iki değişken tanımlıyoruz.

void setup() {

// ultrasonik sensör Trig pininden ses dalgaları gönderdiği için OUTPUT (Çıkış),
// bu dalgaları Echo pini ile geri aldığı için INPUT (Giriş) olarak tanımlanır.
pinMode(echoPin, INPUT);
pinMode(trigPin, OUTPUT);

pinMode(MotorL1, OUTPUT);
pinMode(MotorL2, OUTPUT);
pinMode(MotorLE, OUTPUT); //Motorlarımızı çıkış olarak tanımlıyoruz.
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 ü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.println(uzaklik);

if (uzaklik < 15) // Uzaklık 15'den küçük ise,
{
geri(); // 150 ms geri git.
delay(150);
sag(); // 250 ms sağa dön.
delay(250);
}
else { // değil ise,
ileri(); // 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, 255); // Sağ motorun hızı 150.

digitalWrite(MotorL1, HIGH); // Sol motorun ileri hareketi aktif.
digitalWrite(MotorL2, LOW); // Sol motorun geri hareketi pasif.
analogWrite(MotorLE, 255); // 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, 255); // 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, 255); // Sağ motorun hızı 150.

digitalWrite(MotorL1, LOW); // Sol motorun ileri hareketi pasif.
digitalWrite(MotorL2, HIGH); // Sol motorun geri hareketi aktif.
analogWrite(MotorLE, 255); // Sol motorun hızı 150.

}[/CODE]
 
Son düzenleyen: Moderatör:

Geri
Yukarı