Kodumun neresi hatalı?

emrestro

Üye
Katılım
29 Tem 2019
Mesajlar
2
Puanları
1
Yaş
27
Merhaba arkadaşlar, bir problemle karşılaştım fakat ne olduğunu bir türlü bulamıyorum. Daha önceden yazdığım ve çalışan bir engelden kaçma kodu var. Çizgi izleme ile birleştirmek için tekrar açıp bakmam gerekti koda, denemek için arduinoya yüklediğimde tek motoru döndürdüğünü fark ettim. Pinlerinde veya motorlarda bir sıkıntı olup olmadığına bakmak için basit bi motor kodu yazdım ve 2 motor da dönüyor, hızları da ayarlanıyor. Ama engelden kaçma kodunu yükleyince yine 1 motor dönüyor diğer motor duruyor. Pinlerde çakışma mı var diye baktım fakat herhangi bi çakışma da yok.

Bu kodun orjinali değil fakat bunda da aynı sıkıntı oluyor, nerede hata yapıyorum? Programlamaya pek hakim değilim bölümümle alakalı olmadığı için, ama bitirme projesi olarak bunu verdiler hehe...
Kod:
#include <NewPing.h>

#include <Servo.h>



int PWM1 = 11;

int DIR1 = A0;

int PWM2 = 10;

int DIR2 = A1;

#define TRIGGER_PIN  A3

#define ECHO_PIN     A2

#define MAX_DISTANCE 200

Servo myservo;



NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);

int distance = 100;



void setup() {



  pinMode(DIR1, OUTPUT);

  pinMode(DIR2, OUTPUT);

  Serial.begin(9600);

  myservo.attach(3);

  myservo.write(75);

  delay(10);

    

}



void loop() {

 

  distance = readPing();

  delay(50);

  Serial.println(distance);

  delay(500);

  if(distance <= 10)

  {

    myservo.write(150);

    delay(1000);

    myservo.write(35);

    delay(1000);

    myservo.write(115);

    delay(1000);

  }else

      {

        ileriGit();

        delay(5);

      }



  /*Serial.print("Ping: ");

  Serial.print(sonar.ping_cm());

  Serial.println("cm");*/

 

}



int readPing() {

  delay(70);

  int cm = sonar.ping_cm();

  if(cm==0)

  {

    cm = 250;

  }

  return cm;

}

void ileriGit()

{



  digitalWrite(DIR1, HIGH);

  digitalWrite(DIR2, HIGH);

  analogWrite(PWM1, 80);

  analogWrite(PWM2, 80);

  delay(10);

}
 
Moderatör tarafında düzenlendi:
Merhaba arkadaşlar, bir problemle karşılaştım fakat ne olduğunu bir türlü bulamıyorum. Daha önceden yazdığım ve çalışan bir engelden kaçma kodu var. Çizgi izleme ile birleştirmek için tekrar açıp bakmam gerekti koda, denemek için arduinoya yüklediğimde tek motoru döndürdüğünü fark ettim. Pinlerinde veya motorlarda bir sıkıntı olup olmadığına bakmak için basit bi motor kodu yazdım ve 2 motor da dönüyor, hızları da ayarlanıyor. Ama engelden kaçma kodunu yükleyince yine 1 motor dönüyor diğer motor duruyor. Pinlerde çakışma mı var diye baktım fakat herhangi bi çakışma da yok.

Bu kodun orjinali değil fakat bunda da aynı sıkıntı oluyor, nerede hata yapıyorum? Programlamaya pek hakim değilim bölümümle alakalı olmadığı için, ama bitirme projesi olarak bunu verdiler hehe...

#include <NewPing.h>
#include <Servo.h>

int PWM1 = 11;
int DIR1 = A0;
int PWM2 = 10;
int DIR2 = A1;
#define TRIGGER_PIN A3
#define ECHO_PIN A2
#define MAX_DISTANCE 200
Servo myservo;

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
int distance = 100;

void setup() {

pinMode(DIR1, OUTPUT);
pinMode(DIR2, OUTPUT);
Serial.begin(9600);
myservo.attach(3);
myservo.write(75);
delay(10);

}

void loop() {

distance = readPing();
delay(50);
Serial.println(distance);
delay(500);
if(distance <= 10)
{
myservo.write(150);
delay(1000);
myservo.write(35);
delay(1000);
myservo.write(115);
delay(1000);
}else
{
ileriGit();
delay(5);
}

/*Serial.print("Ping: ");
Serial.print(sonar.ping_cm());
Serial.println("cm");*/

}

int readPing() {
delay(70);
int cm = sonar.ping_cm();
if(cm==0)
{
cm = 250;
}
return cm;
}
void ileriGit()
{

digitalWrite(DIR1, HIGH);
digitalWrite(DIR2, HIGH);
analogWrite(PWM1, 80);
analogWrite(PWM2, 80);
delay(10);
}
Arduino çalışma alanım dışında ancak C++ kodlama aşinalığı ile baktığımda 1 adet motor tanıtılmış görünüyor.
Buna göre gerekli kod eklemelerini yapmanız gerekiyor.

Servo myservo; 1 adet motor tanıtılmış
myservo.attach(3); Bu motor 3 nolu pine çıkış olarak atanmış.

Yanılıyorsam Arduino'ya hakim arkadaşlar bilgilendirsin lütfen..
 
Arduino çalışma alanım dışında ancak C++ kodlama aşinalığı ile baktığımda 1 adet motor tanıtılmış görünüyor.
Buna göre gerekli kod eklemelerini yapmanız gerekiyor.

Servo myservo; 1 adet motor tanıtılmış
myservo.attach(3); Bu motor 3 nolu pine çıkış olarak atanmış.

Yanılıyorsam Arduino'ya hakim arkadaşlar bilgilendirsin lütfen..
pinMode(DIR1, OUTPUT);
pinMode(DIR2, OUTPUT);

bunlar araba için kullandığım dc motorlar için yazıldı. yaptığım araçta engelden kaçmak için servo kullanıldı, servo belli bir mesafeye geldiğinde sağa ve sola dönüp ultrasonik sensör yardımıyla mesafeleri ölçüyor ve uygun doğrultuda etrafından dolaşıyor. motorların bağlantısında bir problem olduğunu sanmıyorum çünkü sadece motorlar için kod yazdığımda normal bi şekilde çalışıyorlar.
 
pinMode(DIR1, OUTPUT);
pinMode(DIR2, OUTPUT);

bunlar araba için kullandığım dc motorlar için yazıldı. yaptığım araçta engelden kaçmak için servo kullanıldı, servo belli bir mesafeye geldiğinde sağa ve sola dönüp ultrasonik sensör yardımıyla mesafeleri ölçüyor ve uygun doğrultuda etrafından dolaşıyor. motorların bağlantısında bir problem olduğunu sanmıyorum çünkü sadece motorlar için kod yazdığımda normal bi şekilde çalışıyorlar.
Daha önce de yazdığım gibi, Arduino çalışma alanım dışında. Ancak kodlama mantığı ile baktığım zaman motor tanıtma komutu olan "servo" komutu karşısındaki değer "myservo"..
Yani 1 adet motor tanıtılmış onun da kod içindeki adı myservo..

2 motor tanıtılması için "servo myservo1, myservo2; şeklinde olması, onlarında myservo.attach komutu ile çıkış pinlerine atanması gerekir diye düşünüyorum.
Sonuçta C++ kodlama mantığı ile bakıyorum olaya.
Belkide siz haklısınızdır.
 

Forum istatistikleri

Konular
128,126
Mesajlar
915,242
Kullanıcılar
449,839
Son üye
Qkay

Yeni konular

Geri
Üst