Sayfalar

1 Ağustos 2020 Cumartesi

Robot Kodu

/*
 *  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
}