engelden kaçan robot projemde L298N motorumun sol kısmı çalışmıyor

Katılım
27 Mayıs 2022
Mesajlar
10
Motor sürücü kartı L298N kullanıyorum elimde iki tane var, sürücü kartının sol kısmı ikisinde de çalışmıyor. Tek motorum şuan çalışıyor neden kaynaklanıyor olabilir?






YANITLA
 
Bize şema,program vermezsseniz biz sadece tahmin yürütebiliriz.

İlk tahminim sarı plastik rediktörlü motoru kullanıyorsanız uzun zaman çalışınca o rediktör dağılıp sıkıştırıyor içerideki dişlileri motor dönemiyor.

Aynı anda sürüş yapıyorsanız beslemeniz çöküyor diğer motor dönmesi için gereken akım çekemiyor olabilir.

Daha önce o kanalda bir kısa devre yapmış olabilirsiniz bu sebeple o kanalın H köprüsünün bozmuş olabilirsiniz.

O kanala ait EN jumperi birleştirmiyor olabilir o en pinini
 
size tavsiyem bütün engelden kaçan düzenini ayırıp sadece arduino+pil+l298+motorlar bağlayıp sıra sıra test yapın.

kanallara sıra sıra aynı anda olmamak kaydıyla 1-0 yapın
kanallara sıra sıra aynı anda olmamak kaydıyla pwm uygulayın

kanalları aynı anda 1-0 yapın
kanallara aynı anda pwm uygulayın

gözlemleyin motorları doğru sürebiliyor musunuz
 
size tavsiyem bütün engelden kaçan düzenini ayırıp sadece arduino+pil+l298+motorlar bağlayıp sıra sıra test yapın.

kanallara sıra sıra aynı anda olmamak kaydıyla 1-0 yapın
kanallara sıra sıra aynı anda olmamak kaydıyla pwm uygulayın

kanalları aynı anda 1-0 yapın
kanallara aynı anda pwm uygulayın

gözlemleyin motorları doğru sürebiliyor musunuz
esp-32s 38 pin kullanıyoruz. 3 adet mesafe sensörü + 1 adet buzzer+ 2 adet motor+1 adet L298n motor sürücü kartı kullanıyoruz. beslememizde sıkıntı yok. 2 motorumuzda da sıkıntı yok. Motorları tek tek L298n'in sağ kısmına bağladığımızda çalışıyor fakat sol kısmına bağladığımızda motor çalışmıyor. Bozuldu diyr bir tane aldık ikisinde de aynı durumu yaşıyoruz
 
esp-32s 38 pin kullanıyoruz. 3 adet mesafe sensörü + 1 adet buzzer+ 2 adet motor+1 adet L298n motor sürücü kartı kullanıyoruz. beslememizde sıkıntı yok. 2 motorumuzda da sıkıntı yok. Motorları tek tek L298n'in sağ kısmına bağladığımızda çalışıyor fakat sol kısmına bağladığımızda motor çalışmıyor. Bozuldu diyr bir tane aldık ikisinde de aynı durumu yaşıyoruz
programınızın tamamını buraya kod ekle kısmından ekleyin
a2.png
a3.png
a4.png
 
programınızın tamamını buraya kod ekle kısmından ekleyin
17545 eklentisine bak17546 eklentisine bak17547 eklentisine bak
Kod:
//ön mesafe sensörünün haberleşme pinleri ataması
#define TRIGGER_PIN_1 32
#define ECHO_PIN_1 33

//sağ mesafe sensörünün haberleşme pinleri ataması
#define TRIGGER_PIN_2 12
#define ECHO_PIN_2 13

#define TRIGGER_PIN_3 25
#define ECHO_PIN_3 26


//ön mesafe sensörüne göre motor hareketleri için pin ataması
const int leftForward = 14;
const int leftBackward = 15;
const int rightForward = 34;
const int rightBackward = 35;

//sağ mesafe sensörüne göre motor hareketleri için pin ataması
const int leftForward1 = 14;
const int leftBackward1 = 15;
const int rightForward1 = 34;
const int rightBackward1 = 35;

//sol mesafe sensörüne göre motor hareketleri için pin ataması
const int leftForward2 = 10;
const int leftBackward2 = 9;
const int rightForward2 =34;
const int rightBackward2 = 35;

//ön mesafe sensörü için süre ve mesafe bilgileri 0'a kalibre edildi.
int duration = 0;
int distance = 0;

//sağ mesafe sensörü için süre ve mesafe bilgileri 0'a kalibre edildi.
int duration1 = 0;
int distance1 = 0;

//sol mesafe sensörü için süre ve mesafe bilgileri 0'a kalibre edildi.
int duration2 = 0;
int distance2 = 0;

int buzzer=17;
int titresimsag=2;
int titresimsol=4;

void setup()
{
  pinMode(TRIGGER_PIN_1, OUTPUT);
  pinMode(ECHO_PIN_1, INPUT);
  pinMode(leftForward , OUTPUT);
  pinMode(leftBackward , OUTPUT);
  pinMode(rightForward , OUTPUT);
  pinMode(rightBackward , OUTPUT);

  pinMode(TRIGGER_PIN_2, OUTPUT);
  pinMode(ECHO_PIN_2 , INPUT);
  pinMode(leftForward1 , OUTPUT);
  pinMode(leftBackward1 , OUTPUT);
  pinMode(rightForward1 , OUTPUT);
  pinMode(rightBackward1 , OUTPUT);

  pinMode(TRIGGER_PIN_3 , OUTPUT);
  pinMode(ECHO_PIN_3 , INPUT);
  pinMode(leftForward2 , OUTPUT);
  pinMode(leftBackward2 , OUTPUT);
  pinMode(rightForward2 , OUTPUT);
  pinMode(rightBackward2 , OUTPUT);
 
  Serial.begin(9600);
  pinMode(buzzer,OUTPUT);
pinMode(titresimsag,OUTPUT);
digitalWrite(titresimsag,LOW);
pinMode(titresimsol,OUTPUT);
digitalWrite(titresimsol,LOW);


}

void loop()
{
 
 
  digitalWrite(titresimsag,LOW);
  digitalWrite(titresimsol,LOW);

  digitalWrite(TRIGGER_PIN_1, HIGH); 
  delayMicroseconds(100);
  digitalWrite(TRIGGER_PIN_1, LOW);


  duration = pulseIn(ECHO_PIN_1, HIGH);
  distance = (duration/2) / 28.5 ;
  Serial.println(distance);

  digitalWrite( TRIGGER_PIN_2, HIGH);
  delayMicroseconds(100);
  digitalWrite(TRIGGER_PIN_2 , LOW);


  duration1 = pulseIn(ECHO_PIN_2, HIGH);
  distance1 = (duration1/2) / 28.5 ;
  Serial.println(distance1);

  digitalWrite( TRIGGER_PIN_3, HIGH);
  delayMicroseconds(100);
  digitalWrite(TRIGGER_PIN_3, LOW);


  duration2 = pulseIn(ECHO_PIN_3, HIGH);
  distance2 = (duration2/2) / 28.5 ;
  Serial.println(distance2);
 

  if ( distance < 30 )
  {
    digitalWrite(leftForward , LOW);
    digitalWrite(leftBackward , HIGH);
    digitalWrite(rightForward , HIGH);
    digitalWrite(rightBackward , LOW);
    delay(1000);
    digitalWrite(titresimsol,HIGH);
    digitalWrite(titresimsag,HIGH);
    digitalWrite(buzzer,HIGH);
    delay(350);
  }
  else
  {
    digitalWrite(leftForward , HIGH);
    digitalWrite(leftBackward , HIGH);
    digitalWrite(rightForward , LOW);
    digitalWrite(rightBackward ,LOW);
    digitalWrite(titresimsol,LOW);
    digitalWrite(titresimsag,LOW);
    digitalWrite(buzzer,LOW);
    delay(0);
  }

  if ( distance1 < 30 )
  {
    digitalWrite(leftForward1 , LOW);
    digitalWrite(leftBackward1 , HIGH);
    digitalWrite(rightForward1 , HIGH);
    digitalWrite(rightBackward1 , LOW);
    delay(1000);
    digitalWrite(titresimsol,LOW);
    digitalWrite(titresimsag,HIGH);
    digitalWrite(buzzer,HIGH);
    delay(1000);
  }
  else
  {
    digitalWrite(leftForward1 , HIGH);
    digitalWrite(leftBackward1 , LOW);
    digitalWrite(rightForward1 , HIGH);
    digitalWrite(rightBackward1 , LOW);
    digitalWrite(titresimsol,LOW);
    digitalWrite(titresimsag,LOW);
    digitalWrite(buzzer,LOW);
    delay(0);
  }

  if ( distance2 < 30 )
  {
    digitalWrite(leftForward2 , LOW);
    digitalWrite(leftBackward2 , HIGH);
    digitalWrite(rightForward2 , HIGH);
    digitalWrite(rightBackward2 , LOW);
    delay(1000);
    digitalWrite(titresimsol,HIGH);
    digitalWrite(titresimsag,LOW);
    digitalWrite(buzzer,HIGH);
    delay(1000);
  }
  else
  {
    digitalWrite(leftForward2 , HIGH);
    digitalWrite(leftBackward2 , LOW);
    digitalWrite(rightForward2 , HIGH);
    digitalWrite(rightBackward2 , LOW);
    digitalWrite(titresimsol,LOW);
    digitalWrite(titresimsag,LOW);
    digitalWrite(buzzer,LOW);
    delay(0);
}

}
 
Kod:
//ön mesafe sensörünün haberleşme pinleri ataması
#define TRIGGER_PIN_1 32
#define ECHO_PIN_1 33

//sağ mesafe sensörünün haberleşme pinleri ataması
#define TRIGGER_PIN_2 12
#define ECHO_PIN_2 13

#define TRIGGER_PIN_3 25
#define ECHO_PIN_3 26


//ön mesafe sensörüne göre motor hareketleri için pin ataması
const int leftForward = 14;
const int leftBackward = 15;
const int rightForward = 34;
const int rightBackward = 35;

//sağ mesafe sensörüne göre motor hareketleri için pin ataması
const int leftForward1 = 14;
const int leftBackward1 = 15;
const int rightForward1 = 34;
const int rightBackward1 = 35;

//sol mesafe sensörüne göre motor hareketleri için pin ataması
const int leftForward2 = 10;
const int leftBackward2 = 9;
const int rightForward2 =34;
const int rightBackward2 = 35;

//ön mesafe sensörü için süre ve mesafe bilgileri 0'a kalibre edildi.
int duration = 0;
int distance = 0;

//sağ mesafe sensörü için süre ve mesafe bilgileri 0'a kalibre edildi.
int duration1 = 0;
int distance1 = 0;

//sol mesafe sensörü için süre ve mesafe bilgileri 0'a kalibre edildi.
int duration2 = 0;
int distance2 = 0;

int buzzer=17;
int titresimsag=2;
int titresimsol=4;

void setup()
{
  pinMode(TRIGGER_PIN_1, OUTPUT);
  pinMode(ECHO_PIN_1, INPUT);
  pinMode(leftForward , OUTPUT);
  pinMode(leftBackward , OUTPUT);
  pinMode(rightForward , OUTPUT);
  pinMode(rightBackward , OUTPUT);

  pinMode(TRIGGER_PIN_2, OUTPUT);
  pinMode(ECHO_PIN_2 , INPUT);
  pinMode(leftForward1 , OUTPUT);
  pinMode(leftBackward1 , OUTPUT);
  pinMode(rightForward1 , OUTPUT);
  pinMode(rightBackward1 , OUTPUT);

  pinMode(TRIGGER_PIN_3 , OUTPUT);
  pinMode(ECHO_PIN_3 , INPUT);
  pinMode(leftForward2 , OUTPUT);
  pinMode(leftBackward2 , OUTPUT);
  pinMode(rightForward2 , OUTPUT);
  pinMode(rightBackward2 , OUTPUT);
 
  Serial.begin(9600);
  pinMode(buzzer,OUTPUT);
pinMode(titresimsag,OUTPUT);
digitalWrite(titresimsag,LOW);
pinMode(titresimsol,OUTPUT);
digitalWrite(titresimsol,LOW);


}

void loop()
{
 
 
  digitalWrite(titresimsag,LOW);
  digitalWrite(titresimsol,LOW);

  digitalWrite(TRIGGER_PIN_1, HIGH);
  delayMicroseconds(100);
  digitalWrite(TRIGGER_PIN_1, LOW);


  duration = pulseIn(ECHO_PIN_1, HIGH);
  distance = (duration/2) / 28.5 ;
  Serial.println(distance);

  digitalWrite( TRIGGER_PIN_2, HIGH);
  delayMicroseconds(100);
  digitalWrite(TRIGGER_PIN_2 , LOW);


  duration1 = pulseIn(ECHO_PIN_2, HIGH);
  distance1 = (duration1/2) / 28.5 ;
  Serial.println(distance1);

  digitalWrite( TRIGGER_PIN_3, HIGH);
  delayMicroseconds(100);
  digitalWrite(TRIGGER_PIN_3, LOW);


  duration2 = pulseIn(ECHO_PIN_3, HIGH);
  distance2 = (duration2/2) / 28.5 ;
  Serial.println(distance2);
 

  if ( distance < 30 )
  {
    digitalWrite(leftForward , LOW);
    digitalWrite(leftBackward , HIGH);
    digitalWrite(rightForward , HIGH);
    digitalWrite(rightBackward , LOW);
    delay(1000);
    digitalWrite(titresimsol,HIGH);
    digitalWrite(titresimsag,HIGH);
    digitalWrite(buzzer,HIGH);
    delay(350);
  }
  else
  {
    digitalWrite(leftForward , HIGH);
    digitalWrite(leftBackward , HIGH);
    digitalWrite(rightForward , LOW);
    digitalWrite(rightBackward ,LOW);
    digitalWrite(titresimsol,LOW);
    digitalWrite(titresimsag,LOW);
    digitalWrite(buzzer,LOW);
    delay(0);
  }

  if ( distance1 < 30 )
  {
    digitalWrite(leftForward1 , LOW);
    digitalWrite(leftBackward1 , HIGH);
    digitalWrite(rightForward1 , HIGH);
    digitalWrite(rightBackward1 , LOW);
    delay(1000);
    digitalWrite(titresimsol,LOW);
    digitalWrite(titresimsag,HIGH);
    digitalWrite(buzzer,HIGH);
    delay(1000);
  }
  else
  {
    digitalWrite(leftForward1 , HIGH);
    digitalWrite(leftBackward1 , LOW);
    digitalWrite(rightForward1 , HIGH);
    digitalWrite(rightBackward1 , LOW);
    digitalWrite(titresimsol,LOW);
    digitalWrite(titresimsag,LOW);
    digitalWrite(buzzer,LOW);
    delay(0);
  }

  if ( distance2 < 30 )
  {
    digitalWrite(leftForward2 , LOW);
    digitalWrite(leftBackward2 , HIGH);
    digitalWrite(rightForward2 , HIGH);
    digitalWrite(rightBackward2 , LOW);
    delay(1000);
    digitalWrite(titresimsol,HIGH);
    digitalWrite(titresimsag,LOW);
    digitalWrite(buzzer,HIGH);
    delay(1000);
  }
  else
  {
    digitalWrite(leftForward2 , HIGH);
    digitalWrite(leftBackward2 , LOW);
    digitalWrite(rightForward2 , HIGH);
    digitalWrite(rightBackward2 , LOW);
    digitalWrite(titresimsol,LOW);
    digitalWrite(titresimsag,LOW);
    digitalWrite(buzzer,LOW);
    delay(0);
}

}
titreşim sol ve titreşim sağ nedir bunlar neyi kontrol ediyor?
 
titreşim sol ve titreşim sağ nedir bunlar neyi kontrol ediyor?
titreşim sol , sol mesafe sensöründe engel gördüğünde çalışıyor. titreşim sağ, sağ mesafe sensöründe engel gördüğünde çalışıyor. 3 mesafe sensöründe de engel algılandığında iki titreşim de çalışıyor
 
titreşim sol , sol mesafe sensöründe engel gördüğünde çalışıyor. titreşim sağ, sağ mesafe sensöründe engel gördüğünde çalışıyor. 3 mesafe sensöründe de engel algılandığında iki titreşim de çalışıyor
Kod:
//ön mesafe sensörünün haberleşme pinleri ataması
#define TRIGGER_PIN_1 32
#define ECHO_PIN_1 33

//sağ mesafe sensörünün haberleşme pinleri ataması
#define TRIGGER_PIN_2 12
#define ECHO_PIN_2 13

#define TRIGGER_PIN_3 25
#define ECHO_PIN_3 26


//ön mesafe sensörüne göre motor hareketleri için pin ataması
const int leftForward = 14;
const int leftBackward = 15;
const int rightForward = 34;
const int rightBackward = 35;

/*
  //sağ mesafe sensörüne göre motor hareketleri için pin ataması
  const int leftForward1 = 14;
  const int leftBackward1 = 15;
  const int rightForward1 = 34;
  const int rightBackward1 = 35;

  //sol mesafe sensörüne göre motor hareketleri için pin ataması
  const int leftForward2 = 10;
  const int leftBackward2 = 9;
  const int rightForward2 =34;
  const int rightBackward2 = 35;
*/

//ön mesafe sensörü için süre ve mesafe bilgileri 0'a kalibre edildi.
int duration = 0;
int distance = 0;

//sağ mesafe sensörü için süre ve mesafe bilgileri 0'a kalibre edildi.
int duration1 = 0;
int distance1 = 0;

//sol mesafe sensörü için süre ve mesafe bilgileri 0'a kalibre edildi.
int duration2 = 0;
int distance2 = 0;

int buzzer = 17;
int titresimsag = 2;
int titresimsol = 4;

void setup()
{

  Serial.begin(9600);
 
  pinMode(TRIGGER_PIN_1, OUTPUT);
  pinMode(ECHO_PIN_1, INPUT);

  pinMode(TRIGGER_PIN_2, OUTPUT);
  pinMode(ECHO_PIN_2 , INPUT);

  pinMode(ECHO_PIN_3 , INPUT);
  pinMode(ECHO_PIN_3 , INPUT);


  pinMode(leftForward , OUTPUT);
  pinMode(leftBackward , OUTPUT);

  pinMode(rightForward , OUTPUT);
  pinMode(rightBackward , OUTPUT);

    
  pinMode(buzzer, OUTPUT);
  pinMode(titresimsag, OUTPUT);
  digitalWrite(titresimsag, LOW);
  pinMode(titresimsol, OUTPUT);
  digitalWrite(titresimsol, LOW);

  /*
  pinMode(leftForward1 , OUTPUT);
  pinMode(leftBackward1 , OUTPUT);
  pinMode(rightForward1 , OUTPUT);
  pinMode(rightBackward1 , OUTPUT);


  pinMode(leftForward2 , OUTPUT);
  pinMode(leftBackward2 , OUTPUT);
  pinMode(rightForward2 , OUTPUT);
  pinMode(rightBackward2 , OUTPUT);
  */

}

void loop()
{


  digitalWrite(titresimsag, LOW);
  digitalWrite(titresimsol, LOW);

  digitalWrite(TRIGGER_PIN_1, HIGH);
  delayMicroseconds(100);
  digitalWrite(TRIGGER_PIN_1, LOW);


  duration = pulseIn(ECHO_PIN_1, HIGH);
  distance = (duration / 2) / 28.5 ;
  Serial.println(distance);

  digitalWrite( TRIGGER_PIN_2, HIGH);
  delayMicroseconds(100);
  digitalWrite(TRIGGER_PIN_2 , LOW);


  duration1 = pulseIn(ECHO_PIN_2, HIGH);
  distance1 = (duration1 / 2) / 28.5 ;
  Serial.println(distance1);

  digitalWrite( TRIGGER_PIN_3, HIGH);
  delayMicroseconds(100);
  digitalWrite(TRIGGER_PIN_3, LOW);


  duration2 = pulseIn(ECHO_PIN_3, HIGH);
  distance2 = (duration2 / 2) / 28.5 ;
  Serial.println(distance2);


  if ( distance < 30 )
  {
    digitalWrite(leftForward , LOW);
    digitalWrite(leftBackward , HIGH);

    digitalWrite(rightForward , HIGH);
    digitalWrite(rightBackward , LOW);

    delay(1000);

    digitalWrite(titresimsol, HIGH);
    digitalWrite(titresimsag, HIGH);

    digitalWrite(buzzer, HIGH);

    delay(350);
  }
  else
  {
    digitalWrite(leftForward , HIGH);
    digitalWrite(leftBackward , HIGH);

    digitalWrite(rightForward , LOW);
    digitalWrite(rightBackward , LOW);

    digitalWrite(titresimsol, LOW);
    digitalWrite(titresimsag, LOW);

    digitalWrite(buzzer, LOW);

  }

  if ( distance1 < 30 )
  {
    digitalWrite(leftForward , LOW);
    digitalWrite(leftBackward , HIGH);

    digitalWrite(rightForward , HIGH);
    digitalWrite(rightBackward , LOW);

    delay(1000);

    digitalWrite(titresimsol, LOW);
    digitalWrite(titresimsag, HIGH);

    digitalWrite(buzzer, HIGH);

    delay(1000);
  }
  else
  {
    digitalWrite(leftForward , HIGH);
    digitalWrite(leftBackward , LOW);

    digitalWrite(rightForward , HIGH);
    digitalWrite(rightBackward , LOW);

    digitalWrite(titresimsol, LOW);
    digitalWrite(titresimsag, LOW);

    digitalWrite(buzzer, LOW);
  }

  if ( distance2 < 30 )
  {
    digitalWrite(leftForward , LOW);
    digitalWrite(leftBackward , HIGH);

    digitalWrite(rightForward , HIGH);
    digitalWrite(rightBackward , LOW);

    delay(1000);

    digitalWrite(titresimsol, HIGH);
    digitalWrite(titresimsag, LOW);

    digitalWrite(buzzer, HIGH);

    delay(1000);
  }
  else
  {
    digitalWrite(leftForward , HIGH);
    digitalWrite(leftBackward , LOW);

    digitalWrite(rightForward , HIGH);
    digitalWrite(rightBackward , LOW);

    digitalWrite(titresimsol, LOW);
    digitalWrite(titresimsag, LOW);

    digitalWrite(buzzer, LOW);
  }

}

birde bu şekilde deneyin tek sürücünüz var farklı outputlardan neden çıkış yaptınız anlamadım tek outputu başka yerlerde atama yapabilirsiniz.

ve bu şekilde çalışırsanız l298 H köprüsünü tamamen aktif edeceği için çarpmadan dönüş yapmanız çok zor çünkü bir fren mekanizmanız yok enerjisi kesilen motor bi süre kendi ataleti ile dönecektir birde parke,fayans zeminlerde hızlı dönen motorunuzla istediğiniz gibi duruş/sürüş elde edemezssiniz pwm kullanın veya daha yavaş dönmesini sağlayacak redüktörlu motor kullanın
 
Kod:
//ön mesafe sensörünün haberleşme pinleri ataması
#define TRIGGER_PIN_1 32
#define ECHO_PIN_1 33

//sağ mesafe sensörünün haberleşme pinleri ataması
#define TRIGGER_PIN_2 12
#define ECHO_PIN_2 13

#define TRIGGER_PIN_3 25
#define ECHO_PIN_3 26


//ön mesafe sensörüne göre motor hareketleri için pin ataması
const int leftForward = 14;
const int leftBackward = 15;
const int rightForward = 34;
const int rightBackward = 35;

/*
  //sağ mesafe sensörüne göre motor hareketleri için pin ataması
  const int leftForward1 = 14;
  const int leftBackward1 = 15;
  const int rightForward1 = 34;
  const int rightBackward1 = 35;

  //sol mesafe sensörüne göre motor hareketleri için pin ataması
  const int leftForward2 = 10;
  const int leftBackward2 = 9;
  const int rightForward2 =34;
  const int rightBackward2 = 35;
*/

//ön mesafe sensörü için süre ve mesafe bilgileri 0'a kalibre edildi.
int duration = 0;
int distance = 0;

//sağ mesafe sensörü için süre ve mesafe bilgileri 0'a kalibre edildi.
int duration1 = 0;
int distance1 = 0;

//sol mesafe sensörü için süre ve mesafe bilgileri 0'a kalibre edildi.
int duration2 = 0;
int distance2 = 0;

int buzzer = 17;
int titresimsag = 2;
int titresimsol = 4;

void setup()
{

  Serial.begin(9600);
 
  pinMode(TRIGGER_PIN_1, OUTPUT);
  pinMode(ECHO_PIN_1, INPUT);

  pinMode(TRIGGER_PIN_2, OUTPUT);
  pinMode(ECHO_PIN_2 , INPUT);

  pinMode(ECHO_PIN_3 , INPUT);
  pinMode(ECHO_PIN_3 , INPUT);


  pinMode(leftForward , OUTPUT);
  pinMode(leftBackward , OUTPUT);

  pinMode(rightForward , OUTPUT);
  pinMode(rightBackward , OUTPUT);

   
  pinMode(buzzer, OUTPUT);
  pinMode(titresimsag, OUTPUT);
  digitalWrite(titresimsag, LOW);
  pinMode(titresimsol, OUTPUT);
  digitalWrite(titresimsol, LOW);

  /*
  pinMode(leftForward1 , OUTPUT);
  pinMode(leftBackward1 , OUTPUT);
  pinMode(rightForward1 , OUTPUT);
  pinMode(rightBackward1 , OUTPUT);


  pinMode(leftForward2 , OUTPUT);
  pinMode(leftBackward2 , OUTPUT);
  pinMode(rightForward2 , OUTPUT);
  pinMode(rightBackward2 , OUTPUT);
  */

}

void loop()
{


  digitalWrite(titresimsag, LOW);
  digitalWrite(titresimsol, LOW);

  digitalWrite(TRIGGER_PIN_1, HIGH);
  delayMicroseconds(100);
  digitalWrite(TRIGGER_PIN_1, LOW);


  duration = pulseIn(ECHO_PIN_1, HIGH);
  distance = (duration / 2) / 28.5 ;
  Serial.println(distance);

  digitalWrite( TRIGGER_PIN_2, HIGH);
  delayMicroseconds(100);
  digitalWrite(TRIGGER_PIN_2 , LOW);


  duration1 = pulseIn(ECHO_PIN_2, HIGH);
  distance1 = (duration1 / 2) / 28.5 ;
  Serial.println(distance1);

  digitalWrite( TRIGGER_PIN_3, HIGH);
  delayMicroseconds(100);
  digitalWrite(TRIGGER_PIN_3, LOW);


  duration2 = pulseIn(ECHO_PIN_3, HIGH);
  distance2 = (duration2 / 2) / 28.5 ;
  Serial.println(distance2);


  if ( distance < 30 )
  {
    digitalWrite(leftForward , LOW);
    digitalWrite(leftBackward , HIGH);

    digitalWrite(rightForward , HIGH);
    digitalWrite(rightBackward , LOW);

    delay(1000);

    digitalWrite(titresimsol, HIGH);
    digitalWrite(titresimsag, HIGH);

    digitalWrite(buzzer, HIGH);

    delay(350);
  }
  else
  {
    digitalWrite(leftForward , HIGH);
    digitalWrite(leftBackward , HIGH);

    digitalWrite(rightForward , LOW);
    digitalWrite(rightBackward , LOW);

    digitalWrite(titresimsol, LOW);
    digitalWrite(titresimsag, LOW);

    digitalWrite(buzzer, LOW);

  }

  if ( distance1 < 30 )
  {
    digitalWrite(leftForward , LOW);
    digitalWrite(leftBackward , HIGH);

    digitalWrite(rightForward , HIGH);
    digitalWrite(rightBackward , LOW);

    delay(1000);

    digitalWrite(titresimsol, LOW);
    digitalWrite(titresimsag, HIGH);

    digitalWrite(buzzer, HIGH);

    delay(1000);
  }
  else
  {
    digitalWrite(leftForward , HIGH);
    digitalWrite(leftBackward , LOW);

    digitalWrite(rightForward , HIGH);
    digitalWrite(rightBackward , LOW);

    digitalWrite(titresimsol, LOW);
    digitalWrite(titresimsag, LOW);

    digitalWrite(buzzer, LOW);
  }

  if ( distance2 < 30 )
  {
    digitalWrite(leftForward , LOW);
    digitalWrite(leftBackward , HIGH);

    digitalWrite(rightForward , HIGH);
    digitalWrite(rightBackward , LOW);

    delay(1000);

    digitalWrite(titresimsol, HIGH);
    digitalWrite(titresimsag, LOW);

    digitalWrite(buzzer, HIGH);

    delay(1000);
  }
  else
  {
    digitalWrite(leftForward , HIGH);
    digitalWrite(leftBackward , LOW);

    digitalWrite(rightForward , HIGH);
    digitalWrite(rightBackward , LOW);

    digitalWrite(titresimsol, LOW);
    digitalWrite(titresimsag, LOW);

    digitalWrite(buzzer, LOW);
  }

}

birde bu şekilde deneyin tek sürücünüz var farklı outputlardan neden çıkış yaptınız anlamadım tek outputu başka yerlerde atama yapabilirsiniz.

ve bu şekilde çalışırsanız l298 H köprüsünü tamamen aktif edeceği için çarpmadan dönüş yapmanız çok zor çünkü bir fren mekanizmanız yok enerjisi kesilen motor bi süre kendi ataleti ile dönecektir birde parke,fayans zeminlerde hızlı dönen motorunuzla istediğiniz gibi duruş/sürüş elde edemezssiniz pwm kullanın veya daha yavaş dönmesini sağlayacak redüktörlu motor kullanın
bu attığınızı mı deneyelim teşekkür ederiz. redüktörlü dc motor kullanıyoruz
 
bu attığınızı mı deneyelim teşekkür ederiz. redüktörlü dc motor kullanıyoruz
dual core bir işlemci kullanıyorsunuz 1 core için motor sürme buzzer öttürme kullanıp
diğer core için hcsr-04 hesabı yaptırın elinizdeki imkanı kullanmıyorsunuz

dediğimi anlamamış olacaksınız büyük ihtimalle motor hızları konusunda çalışmanız ilerledikçe daha iyi anlayacaksınız.

birde ben kafama göre outputları iptal edip tek output bıraktım siz şemanıza göre yazmalısınız outputları
 
dual core bir işlemci kullanıyorsunuz 1 core için motor sürme buzzer öttürme kullanıp
diğer core için hcsr-04 hesabı yaptırın elinizdeki imkanı kullanmıyorsunuz

dediğimi anlamamış olacaksınız büyük ihtimalle motor hızları konusunda çalışmanız ilerledikçe daha iyi anlayacaksınız.

birde ben kafama göre outputları iptal edip tek output bıraktım siz şemanıza göre yazmalısınız outputları
biz enable a ve enable b bağlamadık. Bağlasak bile pinleri tanımlamamız yeter mi yoksa onlar için ayrı bir kod yazmamız gerekir mi?
 
biz enable a ve enable b bağlamadık. Bağlasak bile pinleri tanımlamamız yeter mi yoksa onlar için ayrı bir kod yazmamız gerekir mi?

Bu sürücü ile BT üzerinden mobil app ile kullanılan bir araba yapmıştım. Normalde sürücünün enableA ve ve enableB pinleri PWM input ile hız için kullanılıyor. Kullanmak zorunda değilsiniz, tam hız modunda çalıştırabilirsiniz.

Sürücünün iki tane jumper ile 5V pinlere bağlı olarak gelmiş olması lazım (tam hız = %100 duty PWM sağlıyor). O jumperlardan birisi çıkmış ya da temassızlık yapıyor olabilir. Onu kontrol edin.

l298h.png


Jumperlar sağlamsa çalışmayan taraftaki jumperın üst tarafta kalan pininde 5V var mı diye bakın.
O da sağlamsa iki jumper arasındaki 4 pine takılı kablolardan soldaki ikisiyle sağdaki ikisini yer değiştirip tekrar deneyin.
Hala çalışmıyorsa büyük ihtimal sürücüde sıkıntı vardır. Çalışırsa kodunuzda, jumper kablonuzda ya da geliştirme kartınızın pinlerinde sorun olabilir. Ya da yanlış pine bağlamış olabilirsiniz.
 
Bu sürücü ile BT üzerinden mobil app ile kullanılan bir araba yapmıştım. Normalde sürücünün enableA ve ve enableB pinleri PWM input ile hız için kullanılıyor. Kullanmak zorunda değilsiniz, tam hız modunda çalıştırabilirsiniz.

Sürücünün iki tane jumper ile 5V pinlere bağlı olarak gelmiş olması lazım (tam hız = %100 duty PWM sağlıyor). O jumperlardan birisi çıkmış ya da temassızlık yapıyor olabilir. Onu kontrol edin.

17548 eklentisine bak

Jumperlar sağlamsa çalışmayan taraftaki jumperın üst tarafta kalan pininde 5V var mı diye bakın.
O da sağlamsa iki jumper arasındaki 4 pine takılı kablolardan soldaki ikisiyle sağdaki ikisini yer değiştirip tekrar deneyin.
Hala çalışmıyorsa büyük ihtimal sürücüde sıkıntı vardır. Çalışırsa kodunuzda, jumper kablonuzda ya da geliştirme kartınızın pinlerinde sorun olabilir. Ya da yanlış pine bağlamış olabilirsiniz.
Abi asıl sorun yazılımsaldı sol taraf için sürekli farklı pinleri 1 0 yapmışlar ben düzelttim.

Ayrıca L298 datasına göz gezdirirsen Kanallar için kullanılan girişler ile En pini bir ve kapısında birleşiyor yani en pini hız kontrolü pwm pinidir dire bişey yok girişlerden de vereceğiniz pwm aynı ve kapısından geçiyor en pininden vereceğiniz pwmde aynı ve kapısından geçiyor fazladan io kullanmış oluyoruz

L298in datasını detaylı incelersen aslında sadece işlemciden 2 tane çıkış kullanarak hem yön hem hız kontrolü yapabileceğinide görürsün
 
Hmm datasheetine hiç bakmamıştım. Modülün gördüğüm çoğu şemasında yön pinleri için logic pin diyor.
Mesela şurada da böyle tarif etmiş :
https://lastminuteengineers.com/l298n-dc-stepper-driver-arduino-tutorial/

Bunu öğrendiğim iyi oldu.
Yani, o zaman EN pinini 5V jumper ile bırakıp yön pinlerine PWM uygularsak da motor hızını kontrol yine edebiliriz diyorsun?
entegrenin iç yapısına baktığınızda zaten En ve a b girişlerinin VE kapısına bağlı olduğunu göreceksiniz.

2 motora yön ve hız vermek için 6 pin kullanmak yerine sadece 2 pin kullanarak yine 2 motora yön ve hız verebilirsiniz
 
entegrenin iç yapısına baktığınızda zaten En ve a b girişlerinin VE kapısına bağlı olduğunu göreceksiniz.

2 motora yön ve hız vermek için 6 pin kullanmak yerine sadece 2 pin kullanarak yine 2 motora yön ve hız verebilirsiniz
Kod:
#define TRIGGER_PIN_1 32
#define ECHO_PIN_1 33
#define TRIGGER_PIN_2 12
#define ECHO_PIN_2 13
#define TRIGGER_PIN_3 25
#define ECHO_PIN_3 26


#define sol 14 // Motor Sag pinlerini tanımlıyoruz.
#define sol1 15 // Motor Sag pinlerini tanımlıyoruz.
#define sag 3  // Motor Sol pinlerini tanımlıyoruz.
#define sag1 21  // Motor Sol pinlerini tanımlıyoruz.

int  sure = 0;
int mesafe = 0;
int  sure1 = 0;
int mesafe1 = 0;
int  sure2= 0;
int mesafe2= 0;
int buzzer=17;
int titresimsag=2;
int titresimsol=4;

void setup()

{
  
  pinMode(TRIGGER_PIN_1, OUTPUT);
  pinMode(ECHO_PIN_1, INPUT);
  pinMode(TRIGGER_PIN_2, OUTPUT);
  pinMode(ECHO_PIN_2 , INPUT);
  pinMode(TRIGGER_PIN_3 , OUTPUT);
  pinMode(ECHO_PIN_3 , INPUT);
 
  pinMode(sol, OUTPUT); //Motorlarımızı çıkış olarak tanımlıyoruz.
  pinMode(sol1, OUTPUT);
  pinMode(sag, OUTPUT);
  pinMode(sag1, OUTPUT);
 
  Serial.begin(9600);
pinMode(buzzer,OUTPUT);
pinMode(titresimsag,OUTPUT);
digitalWrite(titresimsag,LOW);
pinMode(titresimsol,OUTPUT);
digitalWrite(titresimsol,LOW);

}

void loop()

{
  digitalWrite(titresimsag,LOW);
  digitalWrite(titresimsol,LOW);
 
  digitalWrite(TRIGGER_PIN_1, LOW); //sensör pasif hale getirildi
  delayMicroseconds(5);
  digitalWrite(TRIGGER_PIN_1, HIGH); //Sensore ses dalgasının üretmesi için emir verildi
  delayMicroseconds(10);
  digitalWrite(TRIGGER_PIN_1, LOW); //Yeni dalgaların üretilmemesi için trig pini LOW konumuna getirildi
  sure = pulseIn(ECHO_PIN_1, HIGH); //ses dalgasının geri dönmesi için geçen sure ölçülüyor
  mesafe = sure / 29.1 / 2; //ölçülen süre uzaklığa çevriliyor
  Serial.println(mesafe);
 
  digitalWrite(TRIGGER_PIN_2, LOW); //sensör pasif hale getirildi
  delayMicroseconds(5);
  digitalWrite(TRIGGER_PIN_2, HIGH); //Sensore ses dalgasının üretmesi için emir verildi
  delayMicroseconds(10);
  digitalWrite(TRIGGER_PIN_2, LOW); //Yeni dalgaların üretilmemesi için trig pini LOW konumuna getirildi
  sure1 = pulseIn(ECHO_PIN_2, HIGH); //ses dalgasının geri dönmesi için geçen sure ölçülüyor
  mesafe1 = sure1 / 29.1 / 2; //ölçülen süre uzaklığa çevriliyor
  Serial.println(mesafe1);

  digitalWrite(TRIGGER_PIN_3, LOW); //sensör pasif hale getirildi
  delayMicroseconds(5);
  digitalWrite(TRIGGER_PIN_3, HIGH); //Sensore ses dalgasının üretmesi için emir verildi
  delayMicroseconds(10);
  digitalWrite(TRIGGER_PIN_3, LOW); //Yeni dalgaların üretilmemesi için trig pini LOW konumuna getirildi
  sure2 = pulseIn(ECHO_PIN_3, HIGH); //ses dalgasının geri dönmesi için geçen sure ölçülüyor
  mesafe2 = sure2 / 29.1 / 2; //ölçülen süre uzaklığa çevriliyor
  Serial.println(mesafe2);

  if (mesafe < 30 )
  {
    digitalWrite(sol ,  LOW);
    digitalWrite(sol1 , HIGH);
    digitalWrite(sag ,  LOW);
    digitalWrite(sag1 , HIGH);
    delay(150);

    digitalWrite(sol ,  LOW);
    digitalWrite(sol1 , HIGH);
    digitalWrite(sag , LOW);
    digitalWrite(sag1 ,  HIGH);
    delay(250);

    digitalWrite(titresimsol,HIGH);
    digitalWrite(titresimsag,HIGH);
    digitalWrite(buzzer,HIGH);
    delay(350);
  }
  else
  {
    digitalWrite(sol , HIGH);
    digitalWrite(sol1 ,  LOW);
    digitalWrite(sag , LOW);
    digitalWrite(sag1 ,  HIGH);
    digitalWrite(titresimsol,LOW);
    digitalWrite(titresimsag,LOW);
    digitalWrite(buzzer,LOW);
    delay(0);
  }

  if (mesafe1 < 30 )
  {
    digitalWrite(sol ,  LOW);
    digitalWrite(sol1 , HIGH);
    digitalWrite(sag ,  LOW);
    digitalWrite(sag1 , HIGH);
    delay(150);

    digitalWrite(sol ,  LOW);
    digitalWrite(sol1 , HIGH);
    digitalWrite(sag , LOW);
    digitalWrite(sag1 ,  HIGH);
    delay(250);
    digitalWrite(titresimsol,LOW);
    digitalWrite(titresimsag,HIGH);
    digitalWrite(buzzer,HIGH);
    delay(350);
    
  }
  else
  {
    digitalWrite(sol , HIGH);
    digitalWrite(sol1 ,  LOW);
    digitalWrite(sag , LOW);
    digitalWrite(sag1 ,  HIGH);
    digitalWrite(titresimsol,LOW);
    digitalWrite(titresimsag,LOW);
    digitalWrite(buzzer,LOW);
    delay(0);
  }

   if (mesafe2 < 30 )
  {
    digitalWrite(sol ,  LOW);
    digitalWrite(sol1 , HIGH);
    digitalWrite(sag ,  LOW);
    digitalWrite(sag1 , HIGH);
    delay(150);

    digitalWrite(sol ,  LOW);
    digitalWrite(sol1 , HIGH);
    digitalWrite(sag , LOW);
    digitalWrite(sag1 ,  HIGH);
    delay(250);
   digitalWrite(titresimsol,HIGH);
    digitalWrite(titresimsag,LOW);
    digitalWrite(buzzer,HIGH);
    delay(350);
    
  }
  else
  {
    digitalWrite(sol , HIGH);
    digitalWrite(sol1 ,  LOW);
    digitalWrite(sag , LOW);
    digitalWrite(sag1 ,  HIGH);
     digitalWrite(titresimsol,LOW);
    digitalWrite(titresimsag,LOW);
    digitalWrite(buzzer,LOW);
    delay(0);
    
  }
}
 
entegrenin iç yapısına baktığınızda zaten En ve a b girişlerinin VE kapısına bağlı olduğunu göreceksiniz.

2 motora yön ve hız vermek için 6 pin kullanmak yerine sadece 2 pin kullanarak yine 2 motora yön ve hız verebilirsiniz
bu kodla dediğiniz gibi iki motoru da çalıştırdım. şuan tek sıkıntım engel gördüğünde yarım tekerlek dönüşü yapıp geri gidip tekrar ileri dönüş yapıyor. Ben engel algıladığı sürece geri gidip engelin yönüne göre ters yönde hareket etmesini istiyorum. Kodda ne gibi değişiklikler yapmam gerekiyor? teşekkür ederim
 
bu kodla dediğiniz gibi iki motoru da çalıştırdım. şuan tek sıkıntım engel gördüğünde yarım tekerlek dönüşü yapıp geri gidip tekrar ileri dönüş yapıyor. Ben engel algıladığı sürece geri gidip engelin yönüne göre ters yönde hareket etmesini istiyorum. Kodda ne gibi değişiklikler yapmam gerekiyor? teşekkür ederim
enkoder ile okuma yapmadan 90 derece dönüş yapmanız zamana bağlı olacaktır şu şekilde bir tavsiye vereyim

eğer engel solumda varsa 250ms boyunca sağa dön
&&
100ms boyunca düz git
&&
250ms boyunca sola dön

engeli atlamış oldun

tabii bu adımları uygularken tekrar tekrar sonik sensörden gelen veriyi karşılaştırman lazım.
programınız çok çok yetersiz kalmış bu proje için

elektroniğini ve programını bi kenara bırakıp kağıt kalem üstünde çalışın hangi engeli nerden görürsem ne yapıcam diye.
 

Çevrimiçi üyeler

Forum istatistikleri

Konular
7,301
Mesajlar
123,445
Üyeler
2,951
Son üye
burhanettin buğa

Son kaynaklar

Son profil mesajları

Freemont2.0 herbokolog Freemont2.0 wrote on herbokolog's profile.
nick iniz yakıyor
:D
Freemont2.0 posta Freemont2.0 wrote on posta's profile.
Merhabalar :)
az bilgili çok meraklı
Prooffy semih_s Prooffy wrote on semih_s's profile.
Merhaba, sizden DSO2C10 hakkında bilgi rica ettim. Yanıtlarsanız sevinirim...
Unal taydin Unal wrote on taydin's profile.
Timur Bey, Arduino kontrollü bir akü şarj cihazı yapmaya çalışıyorum. Aklımdaki fikri basit bir çizim olarak konu açmıştım. Özellikle sizin fikirlerinizi çok önemsiyorum.
Back
Top