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:
Arduino projemdeki güç kaynağı sorunu
Fotoğraftaki devrenin tüm bağlantılarını yaptım, yalnızca güç kaynağı konusunda sorun yaşadım. Ben de her sette gelen 9V pil ve o pili Arduino'ya bağlamamızı sağlayan yuvarlak bir uç var. Bu projeyi yapmak için dönüştürücümü kesmek istemiyorum. Sadece bir adet 9V pil ile Arduino'ya güç versem...
www.technopat.net
[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]
#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: