7 Mayıs 2018 Pazartesi

Bluetooth Kontrollü ve Engelden Kaçan Robot

Malzemeler:
Arduino Uno R3 SMD
4WD ARAÇ
L298P Motor Sürücü Shiled
HC06 Bluetooth Modül
Dişi - Erkek Jumper Kablo
12V 500mAH lipo pil(Lipo kullanırken gözlük ve eldiven kullanınız. İş güvenliği önlemlerinizi alınız)
Lipo Pil Şarj Aleti
JST dişi erkek kablo
Çift taraflı bant








Kodlar için linke tıklayınız.


/*
 *  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                     7. pine bağlanmıştır
 *  Arka Lamba                   8. pine bağlanmıştır
 *  Park Lamba                   3. pine bağlanmıştır
 *  -------------------------------------------------
 *  echo pini                    5. pine bağlanmıştır
 *  trig pini                    6. 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 = 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

#define echoPin 5   //echo pini Arduino'nun 5. pine bağlandı
#define trigPin 6   //trig pini Arduino'nun 6. pine bağlandı
long sure, mesafe;  //süre ve uzaklık diye iki değişken tanımlıyoruz.
int a=2;

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);

  pinMode(echoPin, INPUT);
  pinMode(trigPin, OUTPUT);
}

void loop()
{
  // engelden kaçan robot --------------
  if(a==1)
  {
    digitalWrite(trigPin, LOW);
    delayMicroseconds(5);
    digitalWrite(trigPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(trigPin, LOW);
 
    sure = pulseIn(echoPin, HIGH);
    mesafe = sure / 29.1 / 2;
 
    Serial.println(mesafe);
 
    if (mesafe < 15)
    {
      geri(); 
      delay(150);
      SagaDon();
      delay(250);
    }
    else { 
      ileri();
    }
  }
  // -------------------------------------
 
  // ------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(a==2)  // park lambası pasif iken çalışır. Bluetooth üzerinden kontrol.
    {
      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;

    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