//L298N Bağlantısı
const int motorA1 = 5; // L298N'in IN3 Girişi.
const int motorA2 = 6; // L298N'in IN1 Girişi.
const int motorB1 = 10; // L298N'in IN2 Girişi.
const int motorB2 = 9; // L298N'in IN4 Girişi.
int i = 0; //Döngüler için atanan rastgele bir değişken.
int j = 0; //Döngüler için atanan rastgele bir değişken.
int state; //Bluetooth cihazından gelecek sinyalin değişkeni.
int vSpeed = 255; // Standart Hız, 0-255 arası bir değer alabilir.
#define TRIG_PIN 3 // HC-SR04 trig pini 3 numaralı pine atandı.
#define ECHO_PIN 2 // HC-SR04 echo pini 2 numaralı pine atandı.
//HC-SR04 ile mesafeyi ölç ve seri monitöre yazdır. Eğer mesafe 15cm den küçükse state değerini S yap ve aracı durdur!
void mesafe_olcumu()
{
digitalWrite(TRIG_PIN, 1);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, 0);
int sure = pulseIn(ECHO_PIN, 1);
int mesafe = (sure / 2) / 29.1;
if (mesafe < 15)
state = 'S';
Serial.print("Mesafe= ");
Serial.println(mesafe);
}
void setup() {
// Pinlerimizi belirleyelim.
pinMode(motorA1, OUTPUT);
pinMode(motorA2, OUTPUT);
pinMode(motorB1, OUTPUT);
pinMode(motorB2, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(TRIG_PIN, OUTPUT);
// 9600 baud hızında bir seri port açalım.
Serial.begin(9600);
}
void loop() {
/*Bluetooth bağlantısı koptuğunda veya kesildiğinde arabayı durdur.
(Aktif etmek için alt satırın "//" larını kaldırın.)*/
// if(digitalRead(BTState)==LOW) { state='S'; }
//HC-SR04 ile mesafeyi ölç ve seri monitöre yazdır. Eğer mesafe 15cm den küçükse state değerini S yap ve aracı durdur!
mesafe_olcumu();
//Gelen veriyi 'state' değişkenine kaydet.
if (Serial.available() > 0) {
state = Serial.read();
}
/* Uygulamadan ayarlanabilen 4 hız seviyesi.(Değerler 0-255 arasında olmalı)*/
switch (state)
{
case 0:
vSpeed = 0;
break;
case 1:
vSpeed = 100;
break;
case 2:
vSpeed = 180;
break;
case 3:
vSpeed = 200;
break;
case 4:
vSpeed = 255;
break;
}
// state değerine göre araç yönü değişir.
switch (state)
{
/***********************İleri****************************/
//Gelen veri 'F' ise araba ileri gider.
case 'F':
analogWrite(motorA1, vSpeed); analogWrite(motorA2, 0);
analogWrite(motorB1, vSpeed); analogWrite(motorB2, 0);
break;
/**********************İleri Sol************************/
//Gelen veri 'G' ise araba ileri sol(çapraz) gider.
case 'G':
analogWrite(motorA1, vSpeed ); analogWrite(motorA2, 0);
analogWrite(motorB1, 100); analogWrite(motorB2, 0);
break;
/**********************İleri Sağ************************/
//Gelen veri 'I' ise araba ileri sağ(çapraz) gider.
case 'I':
analogWrite(motorA1, 100); analogWrite(motorA2, 0);
analogWrite(motorB1, vSpeed); analogWrite(motorB2, 0);
break;
/***********************Geri****************************/
//Gelen veri 'B' ise araba geri gider.
case 'B':
analogWrite(motorA1, 0); analogWrite(motorA2, vSpeed);
analogWrite(motorB1, 0); analogWrite(motorB2, vSpeed);
break;
/**********************Geri Sol************************/
//Gelen veri 'H' ise araba geri sol(çapraz) gider.
case 'H':
analogWrite(motorA1, 0); analogWrite(motorA2, 100);
analogWrite(motorB1, 0); analogWrite(motorB2, vSpeed);
break;
/**********************Geri Sağ************************/
//Gelen veri 'J' ise araba geri sağ(çapraz) gider.
case 'J':
analogWrite(motorA1, 0); analogWrite(motorA2, vSpeed);
analogWrite(motorB1, 0); analogWrite(motorB2, 100);
break;
/***************************Sol*****************************/
//Gelen veri 'L' ise araba sola gider.
case 'L':
analogWrite(motorA1, vSpeed); analogWrite(motorA2, 150);
analogWrite(motorB1, 0); analogWrite(motorB2, 0);
break;
/***************************Sağ*****************************/
//Gelen veri 'R' ise araba sağa gider.
case 'R':
analogWrite(motorA1, 0); analogWrite(motorA2, 0);
analogWrite(motorB1, vSpeed); analogWrite(motorB2, 150);
break;
/************************Stop*****************************/
//Gelen veri 'S' ise arabayı durdur.
case 'S':
analogWrite(motorA1, 0); analogWrite(motorA2, 0);
analogWrite(motorB1, 0); analogWrite(motorB2, 0);
break;
}
}