Arduino ile bilgisi olanlar yardımcı olabilir mi?
Biz şimdi aşağıdaki linklerde olan kodları birleştirmeyi başardık fakat amacımız bluetooth kontrollü aracı hcsr-04 yardımı ile engellerden kaçması. Kodları birleştirdik ancak biz bluetootha bağlanana kadar motorlar boşta dönüyor.. Biz bluetootha bağlanana kadar motorların dönmemesini nasıl sağlarız bir türlü çözemedim.
kullandığımı kodlar:
bluetooth kontrol kodu;
http://lezzetlirobottarifleri.com/video/cep-telefonu-kontrollu-arac
hcsr-04;
http://lezzetlirobottarifleri.com/video/arduino-ile-engelden-kacan-robot-v1-00
bizim yazdığımız kod ise burada;
#include
SoftwareSerial bt_iletisim(6, 7);
#define echoPin 2 //Ultrasonik sensörün echo pini Arduino'nun 12.pinine
#define trigPin 3 //Ultrasonik sensörün trig pini Arduino'nun 13.pinine tanımlandı.
#define sol_ileri 8
#define sol_geri 9
#define sol_hiz 10
#define sag_ileri 13
#define sag_geri 12
#define sag_hiz 11
long sure, uzaklik; //süre ve uzaklık diye iki değişken tanımlıyoruz.
int motorlar_hiz = 255;
byte son_islem;
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(sol_ileri, OUTPUT);
pinMode(sag_ileri, OUTPUT);
pinMode(sol_geri, OUTPUT);
pinMode(sag_geri, OUTPUT);
pinMode(sol_hiz, OUTPUT);
pinMode(sag_hiz, OUTPUT);
Serial.begin(9600);
bt_iletisim.begin(9600);
}
void loop(){
{
if (bt_iletisim.available())
{
char data = bt_iletisim.read();
Serial.println(data);
if (data == '1')
{
dur();
delay(10);
ileri();
son_islem = 1;
}
else if (data == '2')
{
dur();
delay(10);
geri();
son_islem = 2;
}
else if (data == '3')
{
dur();
delay(10);
sol();
son_islem = 3;
}
else if (data == '4')
{
dur();
delay(10);
sag();
son_islem = 4;
}
else if (data == '6')
{
dur();
}
else if (data == '0')
{
motorlar_hiz = motorlar_hiz + 25;
if (motorlar_hiz > 255)
{
motorlar_hiz = 255;
}
Serial.print("motorlar hiz= ");
Serial.println(motorlar_hiz);
son_isleme_devam_et();
}
else if (data == '5')
{
motorlar_hiz = motorlar_hiz - 25;
if (motorlar_hiz < 0)
{
motorlar_hiz = 0;
}
Serial.print("motorlar hiz= ");
Serial.println(motorlar_hiz);
son_isleme_devam_et();
}
}
}
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);
}
}
void ileri()
{
digitalWrite(sol_ileri, 1);
digitalWrite(sag_ileri, 1);
digitalWrite(sol_geri, 0);
digitalWrite(sag_geri, 0);
analogWrite(sol_hiz, motorlar_hiz);
analogWrite(sag_hiz, motorlar_hiz);
}
void geri()
{
digitalWrite(sol_ileri, 0);
digitalWrite(sag_ileri, 0);
digitalWrite(sol_geri, 1);
digitalWrite(sag_geri, 1);
analogWrite(sol_hiz, motorlar_hiz);
analogWrite(sag_hiz, motorlar_hiz);
}
void sol()
{
digitalWrite(sol_ileri, 1);
digitalWrite(sag_ileri, 0);
digitalWrite(sol_geri, 0);
digitalWrite(sag_geri, 1);
analogWrite(sol_hiz, motorlar_hiz);
analogWrite(sag_hiz, motorlar_hiz);
}
void sag()
{
digitalWrite(sol_ileri, 0);
digitalWrite(sag_ileri, 1);
digitalWrite(sol_geri, 1);
digitalWrite(sag_geri, 0);
analogWrite(sol_hiz, motorlar_hiz);
analogWrite(sag_hiz, motorlar_hiz);
}
void dur()
{
digitalWrite(sol_ileri, 0);
digitalWrite(sag_ileri, 0);
digitalWrite(sol_geri, 0);
digitalWrite(sag_geri, 0);
analogWrite(sol_hiz, 0);
analogWrite(sag_hiz, 0);
}
void son_isleme_devam_et()
{
if (son_islem == 1)
{
ileri();
}
else if (son_islem == 2)
{
geri();
}
else if (son_islem == 3)
{
sol();
}
else if (son_islem == 4)
{
sag();
}
}
#akış #TeknoYardım
Ben ardiuno da çok bilgili değilim ama, şunları bluetooth bağlantısından sonra yazıp deneyebilir misin?
"pinMode(sol_ileri, OUTPUT);
pinMode(sag_ileri, OUTPUT);
pinMode(sol_geri, OUTPUT);
pinMode(sag_geri, OUTPUT);
pinMode(sol_hiz, OUTPUT);
pinMode(sag_hiz, OUTPUT);"
Mavi diş bağlantısı dinleyerek, bağlantı sağlanana kadar kodları çalıştırmayacak şekilde denetleme yapabilirsiniz.
özür dilerim, mavi diş bağlantısı ne?
@pessimist-enes Bluetooth! 🙂
Araç bluetooth ile kontrol edilecek ise otonom olmayacak demektir. O zaman neden engellerden kaçınan yapmaya çalışıyorsunuz? Yada söyle birsey olabilir, kodun sonlarına doğru yazdiginiz Ultrasonik sensör değerini alıp ona göre hareket ettiği kısmı, ilk bölümlerde ki if (data=10) gibi bir tuşa bağlayıp bluetooth tan gelen belli bir değer ile otonom hale gelmesini sağlayabilirsiniz. Denemek lazim
biz şimdi ilk önce bluetooth kontrollü araç yaptık. her şey güzeldi fakat öğretmen bu böyle olmaz buna bir şeyler ekleyin farklı fonksiyonları olsun dedi biz de hcsr04 ile telefonla kontrol ederken engellerden kaçsın bari dedik. Senin sorduğun soruyu ben de hocaya sordum fakat adam böyle istedi yapalıcak bir şey yok.
Mavi diş üzerinden başka komutlar alırken, kendisi otomatik olarak engellerden kaçma özelliğine sahip olabilir.
@pessimist-enes Eğer maksat farklı birsey yapmaksa, araca bir kalem takın. Bluetooth üzerinden gondereceginiz komut ile bulunduğu yüzeye farklı şeyler çizsin. Örneğin 8 komutu girdiğinde 8 çizmeye çalışsın. Tabi bunu siz ileri geri fonksiyonları ile yapmanız lazım. Basit bir tavsiye sadece.
@birkan-akar bizim tavsiyeye değil şu anki durumu çözmeye ihtiyacımız var. Yine de sağol. Arduino ile yapılabilen milyonlarca harika şey var ama biz basit şeyler yapmaya çalıştık çünkü arduinoyu kullanmayı çok iyi bilmiyoruz.
Başka bir kullanım amacı söyleyeyim. Örneğin yük taşımada, aracı kontrol eden kullanıcı ağırlıktan ve/veya yükün büyüklüğünden ve/veya gittiği istikametin darlığından dolayı, gücü yetmediği, görmediği vb nedenlerden tam çeviremeyebilir veya geçirmekte zorlanabilir (özellikle uzaktan kumanda ile). Dolayısı ile engel tespit ile kullanıcıyı asiste edebilir.
Engelli kullanıcıların kumandalı tekerlekli sandalyeleri için engel asistanı olabilir.
@pesimist-enes.
zaten kodunda dur fonksiyonu var. en baştaki setup fonksiyonu sonunda dur fonksiyonunu çağırdın mı durmaları lazım. buna rağmen hareket ediyorsa pinler çakışıyor olabilir shield kullanıldığında mümkün olan bir durum