Arduino İle Labirent Çözen Robot Yapımı
Kendi robotunu yap projelerimizin bu bölümünde arduino ile labirent çözen robot yapacağız. Labirent çözen robot özellikle robot yarışmalarında yer almaktadır. Bir labirentin çözüm yolunu bulmak aslında tek bir etkene bağlıdır. Bu etken sağ veya sol taraftaki herhangi bir duvarı takip ettirmektir. Bu etkenden yola çıkarak robot sol veya sağ tarafından herhangi birisini referans alırsa, labirenttin çıkışını bulacaktır. Bu işlem sadece labirentin çözümünün temeli. Peki labirent yolunda ilerlerken yolun bittiğini ve hangi tarafa dönmesini nasıl anlayacak ? . İşte bu noktada iki sensör daha devreye girecek. Birinci sensör öne bakarak sürekli mesafeyi kontrol edecek ve yolun bitip bitmediği anlaşılacak. Diğer sensör ise diğer duvarı takip edecek. Kısacası sensörler sol ön ve sağ tarafları kontrol edecek. Sağ ve sol sensörler duvarın devamlılığını kontrol edecek. Örneğin sol tarafta boşluk var iken sağ tarafta duvar varsa ve ön taraf da boş ise robot ileri hareket edecektir. Robotun karşılaşacağı her durum için ayrı bir senaryo oluşturularak robotun hareketleri belirlenecek.
Malzemeler:
-
Arduino Uno
-
3 Adet Hc-Sr04 Ultrasonik Sensör
-
L293D Motor Sürücü
-
Robot Kiti ( 2 DC Motor, Robot Şasesi , Sarhoş Tekerlek)
-
Batarya
Devre Şeması:
Devre şemasına bakarak bağlantıları yapalım. Motor sürücünün 8. pini motor volatjı 16. pini ise 5v lojik voltajdır. Aşağıdaki şekilden de pinlerine bakabilirsiniz.
Fritzing Dosyasını Buradan indirebilirsiniz>> labirent Devre Şeması
L298N ile Devre Şeması :
Sensörleri aşağıdaki şekildeki gibi konumlandırın.
Arduino Kodu:
#define sol_motor_hiz 11 // Sol motor hız pini #define sag_motor_hiz 10 // Sağ motor hız pini #define sol_motor_1 8 // Sol motor pin 1 #define sol_motor_2 9 // Sol motor pin 2 #define sag_motor_1 7 //Sağ motor pin 1 #define sag_motor_2 6 // Sağ motor pin 2 int sag_sensor_echo = A0;// sağ sensör int sag_sensor_trigger = A1;// sağ sensör int sol_sensor_echo = A2;// sol sensör int sol_sensor_trigger = A3;// sol sensör int on_sensor_echo = A4; // Ön sensör int on_sensor_trigger = A5; // Ön sensör void setup() { pinMode(on_sensor_trigger, OUTPUT); pinMode(on_sensor_echo, INPUT); pinMode(sol_sensor_trigger, OUTPUT); pinMode(sol_sensor_echo, INPUT); pinMode(sag_sensor_trigger, OUTPUT); pinMode(sag_sensor_echo, INPUT); pinMode(sol_motor_hiz, OUTPUT); pinMode(sag_motor_hiz, OUTPUT); pinMode(sol_motor_1, OUTPUT); pinMode(sol_motor_2, OUTPUT); pinMode(sag_motor_1, OUTPUT); pinMode(sag_motor_2, OUTPUT); delay(5000); } void loop() { long on_sensor_zaman, sol_sensor_zaman, sag_sensor_zaman, sag_mesafe, sol_mesafe, on_mesafe; digitalWrite(on_sensor_trigger, LOW); delayMicroseconds(2); digitalWrite(on_sensor_trigger, HIGH); delayMicroseconds(5); digitalWrite(on_sensor_trigger, LOW); on_sensor_zaman = pulseIn(on_sensor_echo, HIGH); on_mesafe = on_sensor_zaman/29/2; digitalWrite(sol_sensor_trigger, LOW); delayMicroseconds(2); digitalWrite(sol_sensor_trigger, HIGH); delayMicroseconds(5); digitalWrite(sol_sensor_trigger, LOW); sol_sensor_zaman = pulseIn(sol_sensor_echo, HIGH); sol_mesafe = sol_sensor_zaman/29/2; digitalWrite(sag_sensor_trigger, LOW); delayMicroseconds(2); digitalWrite(sag_sensor_trigger, HIGH); delayMicroseconds(5); digitalWrite(sag_sensor_trigger, LOW); sag_sensor_zaman = pulseIn(sag_sensor_echo, HIGH); sag_mesafe = sag_sensor_zaman/29/2; analogWrite(sol_motor_hiz, 0); analogWrite(sag_motor_hiz, 0); analogWrite(sol_motor_1, 0); analogWrite(sol_motor_2, 0); analogWrite(sag_motor_1, 0); analogWrite(sag_motor_2, 0); if(on_mesafe >8) { if(sag_mesafe >7 && sag_mesafe< 13) { analogWrite(sol_motor_hiz, 120); analogWrite(sag_motor_hiz, 150); analogWrite(sol_motor_1, 255); analogWrite(sol_motor_2, 0); analogWrite(sag_motor_1, 0); analogWrite(sag_motor_2, 255); } if(sag_mesafe >=13) { analogWrite(sol_motor_hiz, 255); analogWrite(sag_motor_hiz, 60); analogWrite(sol_motor_1, 255); analogWrite(sol_motor_2, 0); analogWrite(sag_motor_1, 0); analogWrite(sag_motor_2, 255); } if(sag_mesafe <=7) { analogWrite(sol_motor_hiz, 60); analogWrite(sag_motor_hiz, 255); analogWrite(sol_motor_1, 255); analogWrite(sol_motor_2, 0); analogWrite(sag_motor_1, 0); analogWrite(sag_motor_2, 255); } } if(sol_mesafe <=20 && sag_mesafe>20 && on_mesafe <=8) { sag();} if(sol_mesafe >20 && sag_mesafe>20 && on_mesafe <=8) { sag(); } if(sag_mesafe <=20 && sol_mesafe>20 && on_mesafe <=8) { sol(); } if(sag_mesafe<=20 && sol_mesafe<=20 && on_mesafe<=8) { tam_donus(); } } void sol() { analogWrite(sol_motor_hiz, 120); analogWrite(sag_motor_hiz, 120); analogWrite(sol_motor_1, 0); analogWrite(sol_motor_2, 255); analogWrite(sag_motor_1, 0); analogWrite(sag_motor_2, 255); delay(700); } void sag() { analogWrite(sol_motor_hiz, 120); analogWrite(sag_motor_hiz, 120); analogWrite(sol_motor_1, 255); analogWrite(sol_motor_2, 0); analogWrite(sag_motor_1, 255); analogWrite(sag_motor_2, 0); delay(800); } void tam_donus() { analogWrite(sol_motor_hiz, 120); analogWrite(sag_motor_hiz, 120); analogWrite(sol_motor_1, 255); analogWrite(sol_motor_2, 0); analogWrite(sag_motor_1, 255); analogWrite(sag_motor_2, 0); delay(1200); }
L293D entegresi ile devreyi birebir kurdum. Fakat motorların birine güç gitmiyor. Bu sorunu nasıl çözebilirim. Diğer motor çalışıyor. Motoru diğer tarafta denedim çalışıyor yani motor sağlam. Sadece sol tarafa enerji gitmiyor.
sensör yerlerini nasıl ayarlıyacağız? yada yerleri fark ediyormu
#define sol_motor_hiz 11 // Sol motor hız pini
#define sag_motor_hiz 10 // Sağ motor hız pini
#define sol_motor_1 8 // Sol motor pin 1
#define sol_motor_2 9 // Sol motor pin 2
#define sag_motor_1 7 //Sağ motor pin 1
#define sag_motor_2 6 // Sağ motor pin 2
int sag_sensor_echo = A0;// sağ sensör
int sag_sensor_trigger = A1;// sağ sensör
int sol_sensor_echo = A2;// sol sensör
int sol_sensor_trigger = A3;// sol sensör
int on_sensor_echo = A4; // Ön sensör
int on_sensor_trigger = A5; // Ön sensör
void setup()
{
pinMode(on_sensor_trigger, OUTPUT);
pinMode(on_sensor_echo, INPUT);
pinMode(sol_sensor_trigger, OUTPUT);
pinMode(sol_sensor_echo, INPUT);
pinMode(sag_sensor_trigger, OUTPUT);
pinMode(sag_sensor_echo, INPUT);
pinMode(sol_motor_hiz, OUTPUT);
pinMode(sag_motor_hiz, OUTPUT);
pinMode(sol_motor_1, OUTPUT);
pinMode(sol_motor_2, OUTPUT);
pinMode(sag_motor_1, OUTPUT);
pinMode(sag_motor_2, OUTPUT);
delay(5000);
}
void loop()
{
long on_sensor_zaman, sol_sensor_zaman, sag_sensor_zaman, sag_mesafe, sol_mesafe, on_mesafe;
digitalWrite(on_sensor_trigger, LOW);
delayMicroseconds(2);
digitalWrite(on_sensor_trigger, HIGH);
delayMicroseconds(5);
digitalWrite(on_sensor_trigger, LOW);
on_sensor_zaman = pulseIn(on_sensor_echo, HIGH);
on_mesafe = on_sensor_zaman/29/2;
digitalWrite(sol_sensor_trigger, LOW);
delayMicroseconds(2);
digitalWrite(sol_sensor_trigger, HIGH);
delayMicroseconds(5);
digitalWrite(sol_sensor_trigger, LOW);
sol_sensor_zaman = pulseIn(sol_sensor_echo, HIGH);
sol_mesafe = sol_sensor_zaman/29/2;
digitalWrite(sag_sensor_trigger, LOW);
delayMicroseconds(2);
digitalWrite(sag_sensor_trigger, HIGH);
delayMicroseconds(5);
digitalWrite(sag_sensor_trigger, LOW);
sag_sensor_zaman = pulseIn(sag_sensor_echo, HIGH);
sag_mesafe = sag_sensor_zaman/29/2;
analogWrite(sol_motor_hiz, 0);
analogWrite(sag_motor_hiz, 0);
analogWrite(sol_motor_1, 0);
analogWrite(sol_motor_2, 0);
analogWrite(sag_motor_1, 0);
analogWrite(sag_motor_2, 0);
if(on_mesafe >5)
{
if(sag_mesafe >7 && sag_mesafe=13)
{
analogWrite(sol_motor_hiz, 255);
analogWrite(sag_motor_hiz, 60);
analogWrite(sol_motor_1, 255);
analogWrite(sol_motor_2, 0);
analogWrite(sag_motor_1, 0);
analogWrite(sag_motor_2, 255);
}
if(sag_mesafe <=7)
{
analogWrite(sol_motor_hiz, 60);
analogWrite(sag_motor_hiz, 255);
analogWrite(sol_motor_1, 255);
analogWrite(sol_motor_2, 0);
analogWrite(sag_motor_1, 0);
analogWrite(sag_motor_2, 255);
}
}
if(sol_mesafe 20 && on_mesafe <=5) { sag(); }
if(sag_mesafe 20 && on_mesafe <=5) { sol(); }
if(sag_mesafe<=20 && sol_mesafe<=20 && on_mesafe<=5) { tam_donus(); }
}
void sol()
{
analogWrite(sol_motor_hiz, 120);
analogWrite(sag_motor_hiz, 120);
analogWrite(sol_motor_1, 0);
analogWrite(sol_motor_2, 255);
analogWrite(sag_motor_1, 0);
analogWrite(sag_motor_2, 255);
delay(700);
}
void sag()
{
analogWrite(sol_motor_hiz, 120);
analogWrite(sag_motor_hiz, 120);
analogWrite(sol_motor_1, 255);
analogWrite(sol_motor_2, 0);
analogWrite(sag_motor_1, 255);
analogWrite(sag_motor_2, 0);
delay(800);
}
void tam_donus()
{
analogWrite(sol_motor_hiz, 120);
analogWrite(sag_motor_hiz, 120);
analogWrite(sol_motor_1, 255);
analogWrite(sol_motor_2, 0);
analogWrite(sag_motor_1, 255);
analogWrite(sag_motor_2, 0);
delay(1200);
}
#define sol_motor_hiz 11 // Sol motor hız pini
#define sag_motor_hiz 10 // Sağ motor hız pini
#define sol_motor_1 8 // Sol motor pin 1
#define sol_motor_2 9 // Sol motor pin 2
#define sag_motor_1 7 //Sağ motor pin 1
#define sag_motor_2 6 // Sağ motor pin 2
int sag_sensor_echo = A0;// sağ sensör
int sag_sensor_trigger = A1;// sağ sensör
int sol_sensor_echo = A2;// sol sensör
int sol_sensor_trigger = A3;// sol sensör
int on_sensor_echo = A4; // Ön sensör
int on_sensor_trigger = A5; // Ön sensör
void setup()
{
pinMode(on_sensor_trigger, OUTPUT);
pinMode(on_sensor_echo, INPUT);
pinMode(sol_sensor_trigger, OUTPUT);
pinMode(sol_sensor_echo, INPUT);
pinMode(sag_sensor_trigger, OUTPUT);
pinMode(sag_sensor_echo, INPUT);
pinMode(sol_motor_hiz, OUTPUT);
pinMode(sag_motor_hiz, OUTPUT);
pinMode(sol_motor_1, OUTPUT);
pinMode(sol_motor_2, OUTPUT);
pinMode(sag_motor_1, OUTPUT);
pinMode(sag_motor_2, OUTPUT);
delay(5000);
}
void loop()
{
long on_sensor_zaman, sol_sensor_zaman, sag_sensor_zaman, sag_mesafe, sol_mesafe, on_mesafe;
digitalWrite(on_sensor_trigger, LOW);
delayMicroseconds(2);
digitalWrite(on_sensor_trigger, HIGH);
delayMicroseconds(5);
digitalWrite(on_sensor_trigger, LOW);
on_sensor_zaman = pulseIn(on_sensor_echo, HIGH);
on_mesafe = on_sensor_zaman/29/2;
digitalWrite(sol_sensor_trigger, LOW);
delayMicroseconds(2);
digitalWrite(sol_sensor_trigger, HIGH);
delayMicroseconds(5);
digitalWrite(sol_sensor_trigger, LOW);
sol_sensor_zaman = pulseIn(sol_sensor_echo, HIGH);
sol_mesafe = sol_sensor_zaman/29/2;
digitalWrite(sag_sensor_trigger, LOW);
delayMicroseconds(2);
digitalWrite(sag_sensor_trigger, HIGH);
delayMicroseconds(5);
digitalWrite(sag_sensor_trigger, LOW);
sag_sensor_zaman = pulseIn(sag_sensor_echo, HIGH);
sag_mesafe = sag_sensor_zaman/29/2;
analogWrite(sol_motor_hiz, 0);
analogWrite(sag_motor_hiz, 0);
analogWrite(sol_motor_1, 0);
analogWrite(sol_motor_2, 0);
analogWrite(sag_motor_1, 0);
analogWrite(sag_motor_2, 0);
if(on_mesafe >8)
{
if(sag_mesafe >7 && sag_mesafe=13)
{
analogWrite(sol_motor_hiz, 255);
analogWrite(sag_motor_hiz, 60);
analogWrite(sol_motor_1, 255);
analogWrite(sol_motor_2, 0);
analogWrite(sag_motor_1, 0);
analogWrite(sag_motor_2, 255);
}
if(sag_mesafe 8) { ileri();}
if(sol_mesafe 20 && on_mesafe 20 && sag_mesafe>20 && on_mesafe <=8) { sag(); }
if(sag_mesafe 20 && on_mesafe <=8) { sol(); }
if(sag_mesafe<=20 && sol_mesafe<=20 && on_mesafe<=8) { tam_donus(); }
}
void sol()
{
analogWrite(sol_motor_hiz, 120);
analogWrite(sag_motor_hiz, 120);
analogWrite(sol_motor_1, 0);
analogWrite(sol_motor_2, 255);
analogWrite(sag_motor_1, 0);
analogWrite(sag_motor_2, 255);
delay(700);
}
void sag()
{
analogWrite(sol_motor_hiz, 120);
analogWrite(sag_motor_hiz, 120);
analogWrite(sol_motor_1, 255);
analogWrite(sol_motor_2, 0);
analogWrite(sag_motor_1, 255);
analogWrite(sag_motor_2, 0);
delay(800);
}
void tam_donus()
{
analogWrite(sol_motor_hiz, 120);
analogWrite(sag_motor_hiz, 120);
analogWrite(sol_motor_1, 255);
analogWrite(sol_motor_2, 0);
analogWrite(sag_motor_1, 255);
analogWrite(sag_motor_2, 0);
delay(1200);
}
void ileri()
{
analogWrite(sol_motor_hiz, 120);
analogWrite(sag_motor_hiz, 120);
analogWrite(sol_motor_1, 255);
analogWrite(sol_motor_2, 0);
analogWrite(sag_motor_1, 0);
analogWrite(sag_motor_2, 255);
delay(700);
}
Robotu ileri gitmeyen arkadaşlar için, sanırsam bu kodda robotun ileriye gitmesi için gereken kod yok. Ben;
void ileri()
{
analogWrite(sol_motor_hiz, 120);
analogWrite(sag_motor_hiz, 120);
analogWrite(sol_motor_1, 255);
analogWrite(sol_motor_2, 0);
analogWrite(sag_motor_1, 0);
analogWrite(sag_motor_2, 255);
delay(700);
bu kodu kendim yazıp ekledim. Bu sefer doğru çalıştı.
ileri komutunu kodda nereye koydunuz?
Bu devre neden çalışmıyor videodaki gibi
Yapabilen varmı?
ÇALIŞIYOR
Merhaba, aynı kodlar L298N motor sürücü kartı kullanımında da geçerli olur mu acaba?
kodun yazıldığı labirentin özelliklerini de söyleseniz daha güzel olacak
Kerim verdiğin kodu kodun neresine kopyalayacaz
Gösterildiği gibi bağlantıları yaptım ancak sağ motora 3 volt sol motora 6 volt gerilim geliyor biri yavas diğeri hızlı dönüyor, sanki sensörün biri görevini yapmıyor gibi (diğer sensörlerle yer değiştirerek test ettim sensörlerim sağlam) nasıl bir çözüm önerirsiniz
Bu sorunu çözdüm ancak sağ sensör hala görevini yapmıyor yani robot sağı dolu olduğunda sola dönmüyor
Geriye dönüşte ve sağa dönüşte bir sıkıntı yok
Gösterildiği bağlantıları yaptım ancak sağ motora 3volt sol motora 6 volt gerilim gidiyor biri yavaş diğeri hızlı dönüyor sanki sensörün biri görevini yapmıyor gibi (diğerleriyle yer değiştirdim sensörüm sağlam)
Gösterilen şekilde bağlantıyı yaptım ancak sağ motora 3 volt sol motora 6 volt gerilim gidiyor
mesafe ölçümünü aşağıdaki gibi yapsak daha iyi olur daha kararlı çalışır. çünkü ses sinyallerinin karışma olasılığı var bu da sağlıklı ölçüm yapılmasını engelleyebilir. ben döngü ve if kullanarak sırayla ölçüm yaptırdım.
for (i=1;i<=3;i++)
{ if (i==1) {
digitalWrite(on_sensor_trigger, LOW);
delayMicroseconds(2);
digitalWrite(on_sensor_trigger, HIGH);
delayMicroseconds(5);
digitalWrite(on_sensor_trigger, LOW);
on_sensor_zaman = pulseIn(on_sensor_echo, HIGH);
on_mesafe = on_sensor_zaman/29/2;}
if (i==2) {
digitalWrite(sol_sensor_trigger, LOW);
delayMicroseconds(2);
digitalWrite(sol_sensor_trigger, HIGH);
delayMicroseconds(5);
digitalWrite(sol_sensor_trigger, LOW);
sol_sensor_zaman = pulseIn(sol_sensor_echo, HIGH);
sol_mesafe = sol_sensor_zaman/29/2;}
if (i==3) {
digitalWrite(sag_sensor_trigger, LOW);
delayMicroseconds(2);
digitalWrite(sag_sensor_trigger, HIGH);
delayMicroseconds(5);
digitalWrite(sag_sensor_trigger, LOW);
sag_sensor_zaman = pulseIn(sag_sensor_echo, HIGH);
sag_mesafe = sag_sensor_zaman/29/2;}
}
sağ motor geriye dönmüyor
bütün aşamaları dediğiniz gibi yaptım robotum deli gibi kendi etrafında 360 derece dönüyor lütfen yardım edin ödev teslimim rica ediyorum
Kendi etrafında dönmeden kastın nedir? Bir tekerlek ileri diğeri geri mi yoksa biri sabit diğeri mi dönüyor eğerki biri sabit biri dönüyorsa toplam 12 voltluk pile ihtiyacın var .eğer ikiside hareketliyse bağlantıları kontrol et veya kodlamada sıkıntı olmalı ben düzenleyerek kullanıyorum yapımcı donanımsal eksiklerden fazla yazılımsal eksiklikler çok fazla
Projeyi sorunsuz şekilde yapabilen oldu mu arkadaşlar? yorumlarda sürekli olumsuz paylaşımlar yapılmış. Yapabilen lütfen bizle de paylaşsın. Projeyi sunmama 20 gün kaldı ve malzemelerden başka hiç bişey yok ortada
Merhaba. Bu kodda ne yapmaya çalişiyor tam olarak anlamış değilim! sağ tarafını takip ederek çıkışı buldurmaya çalışıyor anladıgım kadarıyla. Ben motorların 1,2 nolu uclarını tam anlamayarak
if(sag_mesafe >7 && sag_mesafe< 13)
{
analogWrite(sol_motor_hiz, 120);
analogWrite(sag_motor_hiz, 150);
analogWrite(sol_motor_1, 255);
analogWrite(sol_motor_2, 0);
analogWrite(sag_motor_1, 0);
analogWrite(sag_motor_2, 255);
}
bu blokta sağa girinti varsa 7-13 cm arası hafif sağa dönsün demek istemiş diye yorumladım. o zaman 1 blok ötede if(sag_mesafe <=7)
{
analogWrite(sol_motor_hiz, 60);
analogWrite(sag_motor_hiz, 255);
analogWrite(sol_motor_1, 255);
analogWrite(sol_motor_2, 0);
analogWrite(sag_motor_1, 0);
analogWrite(sag_motor_2, 255);
} blogunda sağa çok yaklaşınca bu araba daha da sağa gitmeye calışmayacakmı? bunu tam olarak yapabilen var mi?
Dostum aynı sorun bendede vardı sensörlerin yerini değiştirmek gerekiyor değiştirince sorun düzeldi.
Nasıl yani sağ sensör le solu mu yoksa biraz sensörleri oynatacaz mı kardeş?
Sağ sen sör ile sol sel sensörü değiştirmelisin
Arkadaslar çözümü motorların bağlı oldugu 2 kabloyu yer değiştirerek bulduk!
Arduino R3 clone ile kullanırsak olur mu ?
ayrıca nasıl pil alalım link ürün linki atar mısınız ?
mustafa bey ben öğrenciyim numaram 05395548586 numaram bu aynı sorunu yaşıyorum bunu yapamazsam okul bitmicek yardımcı olurmusun.
analogWrite(sol_motor_hiz, 120); hocam bu kod hata veriyor bunun nedeni ne olabilir hata mesajında hız belirtilmediğini söylüyor yardımcı olabilir misiniz?
#include (sol_motor_hız , 11);
yazcaksın başına
pil kaç volt (AKLIMDA KALDI)
Sorunu çözdüm arkadaşlar; aracın verilen kod ile kararlı çalışabilmesi için şu değişiklikleri yaptım; sensörler sarhoş tekerleğin olduğu kısıma monte edilecek (ilginç bir durum ama sarhoş tekerlek ön kısımda olduğunda benim araç daha kararlı çalıştı) çizimde belirtilen sağ ve sol sensörün yerini değiştirdim, ayrıca L293D motor sürücüsündeki bir bağlantı da değiştirildi, şimdi sorunsuz çalışıyor. İsteyenler için yardımcı olacaksa yeni devre şemasını yükledim. İnceleyebilirsiniz;
https://i.hizliresim.com/2JEjbE.jpg
Mustafa senin dediğin sistemi yaptım 4 tane 1.5 voltluk piller kullandım elimi sesnsörlerin önüne koyduğumda motorlardan kısık sesli çalışma sesi geliyor ama motorları hareket ettirmiyor ben devreden çalışmadığını düşünüyorum güç yetmiyor gibi geliyor siz ne dersiniz sorun pillerde gibi duruyor pil olarak ne önerirsiniz ?
Mustafa bey benim bu projeyi hemen yetiştirmem lazım. Eminsiniz değil mi? Başkabir proje yapamam ve buna başladım. Ben hem 6 volt pil kullandım arduino ve sensörlere. Sadece L293D ye lippo kullandım. Olur mu? Çalışması için aynı kod olur mu. Ve çalışması için sadece enerji vermem mi gerekli? Başka bişey yapmalı mıyım. Sadece pili takmam yeter mi.
Robotu 4 defa tam anlamıyla söküp tekrar birleştirdim. Projedekileri adım adım kontrol ederek 4 defa uyguladım, fakat sonuç aynı kendi etrafında dönüp duruyor veya karşısına engel çıktığında durmayıp çarpıyor, sensör kaynaklı olabilir dedim değiştirdim yine aynı. Bağlantılar kesinlikle projedeki ile birebir aynı. Komutlardaki hızlar çok yüksek değil mi? Ayrıca mesafeleri nasıl düşürebiliriz. Bazı arkadaşlara batarya zayıf olabilir demişsiniz. bende lipo batarya mevcut 3 amp., bununla da denedim sonuç aynı. Yani bataryadan kaynaklı bir sorun değil, şu projeyi gerçekleştirdiniz mi ? yani sağlıklı çalışıyor mu? çünkü videoda görünen farklı bir yapıya benziyor. Yardımcı olursanız sevinirim.
@Mustafa Keçeci dediğiniz gibi bende de aynı sorun var. l298n ile denedim. Arduino ile motor sürücüyü 12 v lipo ile besledim robot deli gibi yerinde dönüyor. Ayrıca ön sensör önünde engel varsa da yoksa da hiç bir tepki vermiyor. Yardımcı olabilecek arkadaş var mı ?
Usta ya ben robotu yaptım fakat kendi kafasına göre hareket ediyor ne yapmam lazım yardımcı olursan sevinirim
birşey sorabilirmiyim kodun bu bölümünü
#define sol_motor_hiz 11 // Sol motor hız pini
#define sag_motor_hiz 10 // Sağ motor hız pini
#define sol_motor_1 8 // Sol motor pin 1
#define sol_motor_2 9 // Sol motor pin 2
#define sag_motor_1 7 //Sağ motor pin 1
#define sag_motor_2 6 // Sağ motor pin 2
kısada olsa açıklıyabilirmisiniz koda tek anlıyamadığım bölüm bura şimdiden cevaplkadığınız içi saolun
NOT:EYER BU KODU ANLAMAMI SAĞLIYACAK BİR KAYNAKÇA BİLİYORSANIZ YAZARSANIZ SEVİNİRİM
Orada motor pinlerini tanımlamış. Detaylı olarak konuya bakmak istersen variable diye arat.
kardeşim birşey sorucam çok acil elimde L293B MOTOR SÜRÜCÜSÜ VAR L293D MOTTOR SÜRÜCÜSÜ YERİNE L293B MOTOR SÜRÜCÜSÜ KULANSAM HERHANGİ BİR SIKINTI OLUŞURMU EN YAKIN ZAMND CEVAP VERİRSEN ÇOK SEVİNİRİM ŞİMDİDEN TEŞEKÜRLER
l293b sürücü d ye göre daha fazla güçlüdür. l293b lik projelerde l293d motor sürücüsünü klullanamassın ama l293d lik projelerde l293b kullanırsan pek sorun olmaz
Hocam merhaba bu micromouse (Labirent Cozen Robot) kategorisindeki robotlarin mesafe sensorleri SHARP IR denilen farkli led seklindeki sensorler kullaniliyor. O sensoru kullanmalarinin sebebi nedir?
Hocam Sol sensör ne yaptıysam çalışmıyor, ve sağ tekerler yavaş sol tekerler hızlı dönüyor. L298Nsürücü kullandım.
İKİ AMPERLİK POWER BANK VAR ONU TAKSAM OLURMU ELİMDEKİ 9 VOLTLUK PİLİDE ARDUİNOYA BAĞLASAM ?
ABİ ROBOTU YAPTIM KOMPLE SONUNDA AMA İLERLEMİYOR HATTA HİÇ BİRŞEY YAPMIYOR 9 V STANDART PİL TAKTIM OLMADI BU ALET KAÇ AMPERLE ÇALIŞIYOR VE BAŞKA Bİ TAVSİYEN VARMI ?BU BENİM PROJE ÖDEVİM BİRAZ ERKEN CVP YAZABİLİRSEN SEVİNİRİM BU ARADA ROBOT ÇALIŞIRSA YOUTUBE YE YÜKLEYECEĞİM….
Alemdar robotun çalışmama sebebi düşük amper pil kullandığından kaynaklı. Motorların hız kontrolündeki pwm değerleri düşük olduğu için fazla akıma gerek duyar. O nedenle kullanacağın pilin akımı 3 amper civarı olsa iyi olur. Bu arada motorları ayrı pille beslemen de fayda var. 9v pillerin akımı düşüktür. lipo pil kullanabilirsin.
Kucuk=7 olacak
Bazi yerleri anlamadim.cevaplayabilirseniz cok makbule gecer.
Sagmesafe(kucuk=) de motoro sag duvara yaklasmis demek degil mi? Budurumda siz sag motoru geri sol motoru ileri cevirmissiniz ki bu motorun saga donmesini saglara ve motor duvara carpar.. ben mi yanlis anladkm?
bahsettiğin yerde iki motor da ileri dönüyor fakat hızları farklı olduğu için sag_mesafe<7 kısmında sağ motor sol motordan daha hızlı dönerek robotu sola doğru hareket ettiriyor. Alttaki sag() ve sol() fonksiyonlara bakarsan orada motorların dönüş yönlerini görebilirsin.
o halde solmotor1 ileri sagmotor2 ileriyi temsil ediyor.. anladım ..ben genelde sag1 ileri sol1 ileri yaparım kafam karıştı
hocam kodları aynı şekilde kopyalamama rağmen hata mesajı alıyorum
çalışmıyor sensörler görmüyor amaçsızca dönüyor iletişime geçme şansım varsa lütfen yardımcı olun
Kaç volt ve amperde pil kullandınız ? Normalde akımı yüksek pil kullanmanız gerekiyor. koddaki motor hız değerleri düşük olduğu için o pwm değerinde yeterince güç alamıyordur. Pili değiştirme imkanınız yok ise koddaki hız değerlerini arttırmanız gerekiyor
Slm arkadaşlar ben bu ödevi yeni aldım merakımdan girdim ama güzel birsey yapmak istiyorum bunun icin bana gereken mazemelerin isimlerini atarmısınız simdiden tesekürler
Projeniz güzel ama yorumlarda çalışmadığını söyleyenler olmuş. Ayrıca bu projeyle ilgili pek video göremedim bi tek siz varsınız. Malzemeleri de sipariş ettim. umarım çalışmamazlık etmez. Yapıp deneyince olumlu-olumsuz geri döneceğim. teşekkürler…
ne oldu sonuç?
Hocam bu projeyi pic ile 16f877a yapmam lazım kodları konusunda bana yardımcı olabilir misiniz? Lütfen dönün cevabınızı bekliyorum
Merhaba hocam batarya nasıl bir batarya olucak.
herşeyi aynı yaptık motorlar 6v 2000rpm dc motor herşey aynı ama pil ısınıyor yerdeyken ilerlemiyor 6v pille besledik gitmiyor
pil ısınıyor ise kısa devre vardır muhtemelen. kablo bağlantılarını kontrol etmenizde fayda var.
ARDUİNO UNU DİYORSUNUZ AMA FARKLI BİR ARDUİNO KULLANMIŞSINIZ GİBİ SONRADAN Bİ SIKINTI OLURMU ?
kullanabilirsiniz. sorun olmaz
ONCELİKLE SORUMU CVP LADIĞINIZ İÇİN TESEKKUR EDERİM İKİNCİ OLARAK.BİZ DONEM SONU PROJESİ OLARAK BUNU YAPACAIZ ACABA DİYORUM İKİNCİ DONEM BUNA BİDE BLUTHOUT KONTROLU OZELLİĞİ KOYABİLİRMİYİZ KODLAMA İSİNDE DAHA YENİYİZ KONTROL İÇİN PİN KALIRMI VEYA MİKRO DENETLEYİCİDE HAFIZA KALIRMIDİYE Bİ FİKRİMİZ YOK ?
Hocam L298N motor sürücü kullanacak olsam pinleri nasıl vericem, 3 tane sol motor sag motor hareketi vermişsiniz.
Böyle bir devre çok saçma Allah aşkına bu robot çıkmaza geldiginde ne yapacak?
Merhaba kolay gelsin labirent çözen robotu proje ödevi olarak yapmayı düşünüyorum labirent in genişliği nasıl olmalıdır ve son olarak herhangi bir labirent te robot çözenbilir mi ilginiz için teşekkür ederim
ÇALIŞMIYOR! Kaç kere denedim söktüm taktım ama çalışmıyor saçma sapan hareketler yapıyor.
Merhaba.Projenizi yapmayı düşünüyoruz robot kiti için şu model uygun olur mu? urun.n11.com/diger/arduino-akilli-robot-araba-motor-sase-ve-tekerlek-kit-P153356514?cid=604001&gclid=CNuwytyxsNICFSEM0wodnggMxw&gclsrc=aw.ds ayrıca motor sürücüsünün bağlantı şemasını ve sensörlerin şemasının daha iyi görünen bir resmi mevcutsa elinizde yardımcı olabilir misiniz?
Bahsettiğiniz robot kiti kullanabilirsiniz. Detaylı resim ne yazık ki mevcut değil.
Hocam aynısını birebir uyguladım ama robot çok saçma hareket ediyor. Yardımcı olabilir misin?
Bağlantılarınız doğru ve sensörlerin konumları uygun ise enerji yetersizliğinden kaynaklanabilir
kodlarda sıkıntı yok yani?
Kodlarda sorun yok videodaki robotta kullanılan kodlardır. Motor yönlerini doğru taktınız mı. Yön komutlarında doğru yönde dönüyorlar mı bunları da kontrol ediniz. Şöyle bir durum da var . Eğer robotu beslediğiniz pilin enerjisi az ise kod kısmında motorların hareketi için verilen analog değeri arttırabilirsiniz.
Peki bu robot. En kısa yolu nasıl bulabilir. İkinci kez aynı labirentten geçtiği zaman en kısa yoldan gitmesi için ne yapmamız gerekiyor?
Çizgili olan labirenti çözen robotlarda o özellik mevcut. İlerleyen günlerde o tarz proje paylaşacağım.
Bu robotun üstüne ekleme yapabilir misiniz? 1 hafta içinde? Bu bizim için çok önemli.
??
Hocam robot boyutları tam olarak nedir
Robot boyutunu labirentin genişliğine göre seçerseniz daha mantıklı olur. Normal deneme yapacaksanız kendinize göre boyut belirleyebilir veya hazır iki tekerlekli robot kitlerden kullanabilirsiniz
Mesafe okuma işlemi fonksiyon ile yapisaydi daha güzel olurdu.loop un içerisinde surekli motorlari durdurmak ve calıştırnak çok mantıklı olmamış. Ayni sekilde yön kontrollerinin hepsi fonksiyonlarda olsaydi daha iyi olurdu. Iyi çalışmalar.