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

BeğenFavori PaylaşYorum yap