Soru & Cevap

Açılı motor kontrolü ...

15.12.2018 - 11:22

İyi çalışmalar,

Arkadaşlar otonom araba geliştiriyoruz ve yazılım kısmında bir bazı sorunlarımız var ;

Arduino ile toplam 3 adet dc motor kontrol ediyoruz bunların 2 tanesi arka motorlar 1 tanesi ise tekerlerkleri sağa veya sola döndürecek olan motor.

Ben kısaca şu ana kadar yazdığım kodu anlatayım;

HC-SR04 Ultrasonik mesafe sensörüm cm cinsinden ölçme yapıyor ve ölçtüğüm değer 15cm den küçük ise motorlar duruyor, 15cm den büyük ise motorlar çalışıyor.

Ben ön tekerlerimi kontrol edecek motora önüne engel geldiğinde 2 sn beklemesini ve ardından sağ veya sola dönmesini ardından arka motorlarımın çalışıp ilerlemesini ve ardından engeli atlattıktan sonra ön motorumun eski haline gelmesini istiyorum. Yardımcı olursanız çok sevinirim.

Yazdığım kodları paylaşıyorum.

2 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-87289-1569234090.png
yakupgovler
28.09.2019 - 11:56

Ön tekerleri sanırım aracınızın yönünü ayarlamak için kullanıyorsunuz, onları döndüren bir motor yok sanırım. Kullandığınız motorun görevi de sadece tekerlere yön verme.

Eğer projeniz böyleyse ön tekerlerde servo motor kullanmalısınız. DC motorla ne kadarlık bir açıda döndüğünüzü takip edemezsiniz. Kodların resminde de kodlarınız tam okunmuyor.

 

picture-158072-1530701953.jpg
TGUNEYSU
19.12.2018 - 07:59

Projenizin tasarımı sağlam değil. Ön tekerleği basit DC motorla kontrol etmeniz zor olacak. Stepper veya Servo motor daha iyi ve kontrollü bir sonuç verir. 

IF komutlarının nasıl çalıştığını iyi anlıyormusunuz?

IF (uzaklık <= 15) {motor+durum=0;} ELSE {.....} ile bunun arkasindaki IF (uzaklık > 15) { motor+durum=1;} ELSE {....} komutları aynı koşulları iki kere kontrollüyor. Eğer 1ci IF doğruysa ( yani uzaklık <= 15),  2ci IF'in ELSE koşulu ile aynı sonuç. Eğer 1ci ELSE doğruysa (yani uzaklık > 15), bu 2ci IF koşulu ile aynı sonuç. 

Koşullarınızı birleştirip azaltırsanız daha kolay okunur ve anlaşılan bir kod olur.

Ayrıca, yapmak istediğiniz 3cü tekerlek (ön tekerlek)  işlemleri 3cü motor komutları ile başarılablir. Tabiki önce belirgin olmayan "SAĞA veya SOLA", "ENGELİ ATLATTIKTAN SONRA", "ESKİ HALİNE" gibi koşulları birer formülle kodunuza eklemelisiniz. Gerisi basit bir IF komut yazılımı. Bir çaba gösterip yazın ve çalışmazsa tekrar yardımcı olabiliriz. Bu arada kodunuzun resmini değil metnini yazarsanız daha kolay incelenir.

İyi çalışmalar.