!!!Arduıno kod yardım

bekdil

Üye
Katılım
24 Ocak 2019
Mesajlar
64
Puanları
1
Yaş
31
Merhaba Herkese;
1 adet BLDC motor ve 1 BTS7960B Motor sürücü kullanıyorum. 2 adet MZ80 Mesafe sensöründen aldığı bilgi ile ileri-geri hareket sağlıyor. Ancak Motorların hızlarını bir türlü ayarlayamadım. Potansiyometre kullanarak yapıyım dedim olmadı. Veya ben giriyim dışardan diye uğraştım kodu bir türlü yazamadım bana yardımcı olur musunuz ? Aşağıdaki kod Potansiyometre ile MZ80 Birleştirip yazdıgım kod ancak çalışmadı tek yönde hareket sağladı acaba nerde hata yapıyorum yardımcı olur musunuz


#define R1PWM 5
#define L1PWM 6
#define R1EN 7
#define L1EN 8

#define R2PWM 9
#define L2PWM 10
#define R2EN 11
#define L2EN 12

#define sensor 2
#define sensorarka 3
int pot1;
int out1;
int out2;

void setup() {
Serial.begin(9600);
pinMode(R1PWM,OUTPUT);
pinMode(L1PWM,OUTPUT);
pinMode(L1EN,OUTPUT);
pinMode(R1EN,OUTPUT);
digitalWrite(R1EN,HIGH);
digitalWrite(L1EN,HIGH);
Serial.begin(9600);
pinMode(R2PWM,OUTPUT);
pinMode(L2PWM,OUTPUT);
pinMode(L2EN,OUTPUT);
pinMode(R2EN,OUTPUT);
digitalWrite(R2EN,HIGH);
digitalWrite(L2EN,HIGH);
pinMode(sensor,INPUT);
pinMode(sensorarka,INPUT);
}


void loop() {
//pot1=analogRead(A0);

//if(pot1>0)
//out1=map(pot1,0,512,0,255);
//{analogWrite(R1PWM,out1);
//analogWrite(L1PWM,0);
// }
// if(pot1<512)
// out2=map(pot1,512,1023,0,255);
//{analogWrite(R1PWM,0);
// analogWrite(L1PWM,out2);
// }
if((digitalRead(sensor)==1)&&(digitalRead(sensorarka)==0))
{

digitalWrite(R1PWM,HIGH);
digitalWrite(L1PWM,LOW);
digitalWrite(R2PWM,LOW);
digitalWrite(L2PWM,HIGH);
}

if((digitalRead(sensor)==0)&&(digitalRead(sensorarka)==1)){


digitalWrite(L1PWM,HIGH);
digitalWrite(R1PWM,LOW);
digitalWrite(R2PWM,HIGH);
digitalWrite(L2PWM,LOW);
}


}
 
Potansiyometreyi input olarak tanımlaman gerekmiyor mu?
 
if(pot1>0) ve if(pot1<512) aynı anda doğru oluyor. Sanıyorum potansın yarısına kadar bir yöne diğer yarısında diğer yöne hareket vermek istiyorsun. O yüzden
if(pot1>0 && pot1<512) ve if(pot1>511) kullanmalısın.
 
if(pot1>0) ve if(pot1<512) aynı anda doğru oluyor. Sanıyorum potansın yarısına kadar bir yöne diğer yarısında diğer yöne hareket vermek istiyorsun. O yüzden
if(pot1>0 && pot1<512) ve if(pot1>511) kullanmalısın.
şöyle aslında mz80 sensörler ile yön kontrolü yapacam potansiyometre ile de hız kontrolü yapacam. Potansiyometre ile hız ve yön kontrolü yapıyorum. Sensör ile de yön kontrolü yapıyorum ancak iki kodu bir türlü birleştiremedim
 
şöyle aslında mz80 sensörler ile yön kontrolü yapacam potansiyometre ile de hız kontrolü yapacam. Potansiyometre ile hız ve yön kontrolü yapıyorum. Sensör ile de yön kontrolü yapıyorum ancak iki kodu bir türlü birleştiremedim
Bu sorudan çok maruzat olmuş. Soru sorarsan cevap verebilirim ancak.
 
Bu sorudan çok maruzat olmuş. Soru sorarsan cevap verebilirim ancak.
haklısın o zaman şöyle soruyum. Mz80 sensörlerden aldığım bilgi ile ileri geri hareketi yapıp. potansiyometre ile hız ayarını nasıl yapabilirim. yukardaki kodda sensörler tamam çalışıyor istediğimi yapıyor ancak buna bir de hız ayarını nasıl ekleyebilirim.illa potansiyometre olacak diye bir durum yok kodda hız girsem olur
 
C++:
#define R1PWM 5
#define L1PWM 6
#define R1EN 7
#define L1EN 8

#define R2PWM 9
#define L2PWM 10
#define R2EN 11
#define L2EN 12

#define sensor 2
#define sensorarka 3
int pot1,hiz;


void setup() {
  Serial.begin(9600);
  pinMode(R1PWM, OUTPUT);
  pinMode(L1PWM, OUTPUT);
  pinMode(L1EN, OUTPUT);
  pinMode(R1EN, OUTPUT);
  digitalWrite(R1EN, HIGH);
  digitalWrite(L1EN, HIGH);
  Serial.begin(9600);
  pinMode(R2PWM, OUTPUT);
  pinMode(L2PWM, OUTPUT);
  pinMode(L2EN, OUTPUT);
  pinMode(R2EN, OUTPUT);
  digitalWrite(R2EN, HIGH);
  digitalWrite(L2EN, HIGH);
  pinMode(sensor, INPUT);
  pinMode(sensorarka, INPUT);
}

void loop() {
  pot1=analogRead(A0);
  hiz = map(pot1, 0, 1023, 0, 255);
  if ((digitalRead(sensor) == 1) && (digitalRead(sensorarka) == 0)) {

    analogWrite(R1PWM, hiz);
    digitalWrite(L1PWM, LOW);
    digitalWrite(R2PWM, LOW);
    analogWrite(L2PWM, hiz);
  }

  if ((digitalRead(sensor) == 0) && (digitalRead(sensorarka) == 1)) {

    analogWrite(L1PWM, hiz);
    digitalWrite(R1PWM, LOW);
    analogWrite(R2PWM, hiz);
    digitalWrite(L2PWM, LOW);
  }

}
 
C++:
#define R1PWM 5
#define L1PWM 6
#define R1EN 7
#define L1EN 8

#define R2PWM 9
#define L2PWM 10
#define R2EN 11
#define L2EN 12

#define sensor 2
#define sensorarka 3
int pot1,hiz;


void setup() {
  Serial.begin(9600);
  pinMode(R1PWM, OUTPUT);
  pinMode(L1PWM, OUTPUT);
  pinMode(L1EN, OUTPUT);
  pinMode(R1EN, OUTPUT);
  digitalWrite(R1EN, HIGH);
  digitalWrite(L1EN, HIGH);
  Serial.begin(9600);
  pinMode(R2PWM, OUTPUT);
  pinMode(L2PWM, OUTPUT);
  pinMode(L2EN, OUTPUT);
  pinMode(R2EN, OUTPUT);
  digitalWrite(R2EN, HIGH);
  digitalWrite(L2EN, HIGH);
  pinMode(sensor, INPUT);
  pinMode(sensorarka, INPUT);
}

void loop() {
  pot1=analogRead(A0);
  hiz = map(pot1, 0, 1023, 0, 255);
  if ((digitalRead(sensor) == 1) && (digitalRead(sensorarka) == 0)) {

    analogWrite(R1PWM, hiz);
    digitalWrite(L1PWM, LOW);
    digitalWrite(R2PWM, LOW);
    analogWrite(L2PWM, hiz);
  }

  if ((digitalRead(sensor) == 0) && (digitalRead(sensorarka) == 1)) {

    analogWrite(L1PWM, hiz);
    digitalWrite(R1PWM, LOW);
    analogWrite(R2PWM, hiz);
    digitalWrite(L2PWM, LOW);
  }

}
Teşekkür Ederim çok oldum ama bir soru daha sorabilir miyim sensörlerin ikiside 1 oldugunda motor yönü değiştirme komutu var mı acaba
 
nasıl yani, hangi yöne gittiğine bakmadan ters yöne mi dönsün istiyorsun? Eğer öyleyse bir bayrakla motorun yönünü takip etmen gerek

C++:
#define R1PWM 5
#define L1PWM 6
#define R1EN 7
#define L1EN 8

#define R2PWM 9
#define L2PWM 10
#define R2EN 11
#define L2EN 12

#define ILERI 1
#define GERI 0

#define sensor 2
#define sensorarka 3
int pot1, hiz;
bool yon;

void setup() {
  Serial.begin(9600);
  pinMode(R1PWM, OUTPUT);
  pinMode(L1PWM, OUTPUT);
  pinMode(L1EN, OUTPUT);
  pinMode(R1EN, OUTPUT);
  digitalWrite(R1EN, HIGH);
  digitalWrite(L1EN, HIGH);
  Serial.begin(9600);
  pinMode(R2PWM, OUTPUT);
  pinMode(L2PWM, OUTPUT);
  pinMode(L2EN, OUTPUT);
  pinMode(R2EN, OUTPUT);
  digitalWrite(R2EN, HIGH);
  digitalWrite(L2EN, HIGH);
  pinMode(sensor, INPUT);
  pinMode(sensorarka, INPUT);
}

void loop() {
  pot1 = analogRead(A0);
  hiz = map(pot1, 0, 1023, 0, 255);
  if (digitalRead(sensor) && !digitalRead(sensorarka))
      yon = motor_sur(ILERI);

  if (!digitalRead(sensor) && digitalRead(sensorarka))
      yon = motor_sur(GERI);
 
  if (!digitalRead(sensor) && digitalRead(sensorarka))
      yon = motor_sur(yon);
}
bool motor_sur(bool myon){
    if(myon){
        analogWrite(R1PWM, hiz);
        digitalWrite(L1PWM, LOW);
        digitalWrite(R2PWM, LOW);
        analogWrite(L2PWM, hiz);
    }
    else{
        analogWrite(L1PWM, hiz);
        digitalWrite(R1PWM, LOW);
        analogWrite(R2PWM, hiz);
        digitalWrite(L2PWM, LOW);
    }
    return !myon;
}
 

Forum istatistikleri

Konular
129,834
Mesajlar
930,598
Kullanıcılar
452,662
Son üye
Yılmaz Çetiner

Yeni konular

Geri
Üst