/*
* Tarih: 30.12.2017
* 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 (Sağ motor PWM pini) 10. pine bağlanmıştır
* ENB (Sol motor PWM pini) 11. pine bağlanmıştır
* INA (Sağ motor yön pini) 12. pine bağlanmıştır
* INB (Sol motor yön pini) 13. pine bağlanmıştır
* -------------------------------------------------
* Harici bağlantılar:
* Ön Lamba 5. pine bağlanmıştır
* Arka Lamba 6. pine bağlanmıştır
* Park Lamba 7. pine bağlanmıştır
* -------------------------------------------------
*/
int ENA = 10; // MotorA çıkışı için pwm kontrol pini - sağ motor hız
int ENB = 11; // MotorB çıkışı için pwm kontrol pini - sol motor yön
int INA = 12; // MotorA çıkışı için yön kontrol pini - sağ motor yön
int INB = 13; // MotorB çıkışı için yön kontrol pini - sol motor yön
int buzzerPin=4; // buzzer 4. pine bağlandı
int onlamba = 5; // onlamba 5. pine bağlandı
int arkalamba =6; // arkalamba 6. pine bağlandı
int parklamba=7; // parklamba 7. 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()
{
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' ) digitalWrite(parklamba,HIGH);
if( tus == 'x' ) digitalWrite(parklamba,LOW);
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);
digitalWrite(INB, HIGH);
analogWrite(ENA, hiz);
analogWrite(ENB, hiz);
}
void geri()
{
digitalWrite(INA, LOW);
digitalWrite(INB, LOW);
analogWrite(ENA, hiz);
analogWrite(ENB, hiz);
}
void SagaDon()
{
digitalWrite(INA, HIGH);
digitalWrite(INB, HIGH);
analogWrite(ENA, hiz);
analogWrite(ENB, 0);
}
void SolaDon()
{
digitalWrite(INA, HIGH);
digitalWrite(INB, HIGH);
analogWrite(ENA, 0);
analogWrite(ENB, hiz);
}
void ileriSagaDon()
{
digitalWrite(INA, HIGH);
digitalWrite(INB, HIGH);
analogWrite(ENA, hiz);
analogWrite(ENB, 40);
}
void ileriSolaDon()
{
digitalWrite(INA, HIGH);
digitalWrite(INB, HIGH);
analogWrite(ENA, 40);
analogWrite(ENB, hiz);
}
void geriSagaDon()
{
digitalWrite(INA, LOW);
digitalWrite(INB, LOW);
analogWrite(ENA, hiz);
analogWrite(ENB, 40);
}
void geriSolaDon()
{
digitalWrite(INA, LOW);
digitalWrite(INB, LOW);
analogWrite(ENA, 40);
analogWrite(ENB, hiz);
}
void dur()
{
digitalWrite(INA, LOW);
digitalWrite(INB, LOW);
analogWrite(ENA, 0);
analogWrite(ENB, 0);
}
void buzzerCalistir()
{
for(int i=0;i<5;i++)
{
melodi(200);
}
}
void buzzerDur()
{
digitalWrite(4, LOW);
}
int melodi(int dly)
{
tone(buzzerPin, 440);
delay(dly);
noTone(buzzerPin);
delay(dly);
}
Hiç yorum yok:
Yorum Gönder