/*
* Gonüllü Robotik - 4WD ROBOT Kod v1
* Tarih: 30.07.2020
* Yazan: Abidin CAN
* L298P Motor Sürücü Kartı ile Bluetooth Araç Kontrolü
* Bluetooth üzerinden robot kontrol edilebilir
* Kodları yükleme aşamasında bluetooth bağlantısını kesiniz.
* Bluetooth beslemesi için +5V pinini jumper ile sağlayınız.
* -------------------------------------------------
* Dahili Bağlantılar:
* L298P motor sürücü kartı bağlantıları:
* Buzzer 4. pine bağlanmıştır
* ENA (Sol motor PWM pini) 10. pine bağlanmıştır
* ENB (Sağ motor PWM pini) 11. pine bağlanmıştır
* INA (Sol motor yön pini) 12. pine bağlanmıştır
* INB (Sağ motor yön pini) 13. pine bağlanmıştır
* -------------------------------------------------
* Harici bağlantılar:
* Ön Lamba 7. pine bağlanmıştır
* Arka Lamba 8. pine bağlanmıştır
* Park Lamba 3. pine bağlanmıştır
*/
int ENA = 10; // MotorA çıkışı için pwm kontrol pini - sol motor hız
int ENB = 11; // MotorB çıkışı için pwm kontrol pini - sağ motor yön
int INA = 12; // MotorA çıkışı için yön kontrol pini - sol motor yön
int INB = 13; // MotorB çıkışı için yön kontrol pini - sağ motor yön
int buzzerPin=4; // buzzer 4. pine bağlandı
int onlamba = 7; // onlamba 7. pine bağlandı
int arkalamba = 8; // arkalamba 8. pine bağlandı
int parklamba = 3; // parklamba 3. pine bağlandı
int hiz = 150; // başlangıç hız değeri 150 olarak belirlendi
void setup(){
Serial.begin(9600);
pinMode(ENA, OUTPUT);
pinMode(ENB, OUTPUT);
pinMode(INA, OUTPUT);
pinMode(INB, OUTPUT);
pinMode(buzzerPin, OUTPUT);
pinMode(onlamba, OUTPUT);
pinMode(arkalamba, OUTPUT);
pinMode(parklamba, OUTPUT);
analogWrite(ENA, 0);
analogWrite(ENB, 0);
}
void loop(){
// ------bluetooth kontrol--------------
if (Serial.available() > 0) { // Bluetooth’tan veri geldi mi?
char tus = (char)Serial.read(); // Seri porttan gelen tus verisini oku
Serial.println(tus); // tus verisini seri port ekranında göster
if( tus == 'F' ) ileri();
if( tus == 'B' ) geri();
if( tus == 'S' ) dur();
if( tus == 'L' ) SolaDon();
if( tus == 'R' ) SagaDon();
if( tus == 'G' ) ileriSolaDon();
if( tus == 'I' ) ileriSagaDon();
if( tus == 'H' ) geriSolaDon();
if( tus == 'J' ) geriSagaDon();
if( tus == 'V' ) buzzerCalistir();
if( tus == 'v' ) buzzerDur();
if( tus == 'W' ) digitalWrite(onlamba,HIGH);
if( tus == 'w' ) digitalWrite(onlamba,LOW);
if( tus == 'U' ) digitalWrite(arkalamba,HIGH);
if( tus == 'u' ) digitalWrite(arkalamba,LOW);
if( tus == 'X' ) a=1;
if( tus == 'x' ) a=2;
// Cep telefonundan pwm verilerini ayarla
if( tus == '0' ) hiz=0;
if( tus == '1' ) hiz=40;
if( tus == '2' ) hiz=60;
if( tus == '3' ) hiz=75;
if( tus == '4' ) hiz=100;
if( tus == '5' ) hiz=125;
if( tus == '6' ) hiz=150;
if( tus == '7' ) hiz=175;
if( tus == '8' ) hiz=200;
if( tus == '9' ) hiz=225;
if( tus == 'q' ) hiz=255;
}
}
// --------------Fonksiyonlar-----------------
void ileri(){
digitalWrite(INA, HIGH); // Sol motor ileri
digitalWrite(INB, HIGH); // Sağ motor ileri
analogWrite(ENA, hiz);
analogWrite(ENB,hiz);
}
void geri(){
digitalWrite(INA, LOW); // Sol motor geri
digitalWrite(INB, LOW); // Sağ motor geri
analogWrite(ENA, hiz); // sol motor hızı
analogWrite(ENB, hiz); // sağ motor hızı
}
void SagaDon(){
digitalWrite(INA, HIGH); // sol motor ileri
digitalWrite(INB, LOW); // sağ motor geri
analogWrite(ENA, hiz); // sol motor hızı
analogWrite(ENB, hiz); // sağ motor hızı
}
void SolaDon()
{
digitalWrite(INA, LOW); // sol motor geri
digitalWrite(INB, HIGH); // sağ motor ileri
analogWrite(ENA, hiz); // sol motor hızı
analogWrite(ENB, hiz); // sağ motor hızı
}
void ileriSagaDon(){
digitalWrite(INA, HIGH); // sol motor ileri
digitalWrite(INB, HIGH); // sağ motor ileri
analogWrite(ENA, hiz); // sol motor hızı
analogWrite(ENB, 30); // sağ motor hız: 30
}
void ileriSolaDon(){
digitalWrite(INA, HIGH); // sol motor ileri
digitalWrite(INB, HIGH); // sağ motor ileri
analogWrite(ENA, 30); // sol motor hız: 30
analogWrite(ENB, hiz); // sağ motor hızı
}
void geriSagaDon(){
digitalWrite(INA, LOW); // sol motor geri
digitalWrite(INB, LOW); // sağ motor geri
analogWrite(ENA, 40); // sol motor hız: 40
analogWrite(ENB, hiz); // sağ motor hızı
}
void geriSolaDon(){
digitalWrite(INA, LOW); // sol motor geri
digitalWrite(INB, LOW); // sağ motor geri
analogWrite(ENA, hiz); // sağ motor hızı
analogWrite(ENB, 40); // sol motor hız: 40
}
void dur(){
digitalWrite(INA, LOW); // sol motor geri
digitalWrite(INB, LOW); // sağ motor geri
analogWrite(ENA, 0); // sol motor hızı: 0
analogWrite(ENB, 0); // sağ motor hızı: 0
}
void buzzerCalistir(){
digitalWrite(buzzerPin, HIGH); // buzzer aktif
}
void buzzerDur(){
digitalWrite(buzzerPin, LOW); // buzzer pasif
}