Arduino Joystick ile DC Motor Kontrolü Nasıl Yapılır?

rascalll

Hectopat
Katılım
22 Temmuz 2017
Mesajlar
156
Daha fazla  
Cinsiyet
Erkek
Amacım, joystick ile DC motoru ileri ve ters yönde çalıştırıp, motora bağlı olan cismin yukarısında ve aşağısında bulunan sensörlere yaklaşınca motorun durmasıdır.

Joystick'i ileri ve ters yönde kontrol edebiliyorum ancak; joystick y ekseninde belirli bir açıyı geçince, joystick'i serbest bıraksam bile motor çalışıp cisim mesafe sensörüne yaklaşınca durması gerekiyor.

Yani belirli bir açıya kadar joystick'i elle basılı tutarak(manuel olarak), belirli bir açıyı geçip joystick'i bıraksam bile(otomatik olarak) motorun çalışıp cisim mesafe sensörüne yaklaşınca durmasını istiyorum, yardımcı olursanız sevinirim. Şu ana kadar bu kadar yapabildim:

Kod:
int y_durum;
int ust_mesafe;
int alt_mesafe;

void setup()
{
  Serial.begin(9600);
  pinMode(A0,INPUT);
  pinMode(A1,INPUT);
  pinMode(A2,INPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
}

void loop()
{
  y_durum = analogRead(A0);
  ust_mesafe = analogRead(A1);
  alt_mesafe = analogRead(A2);

  if(y_durum<515 && 100<y_durum)
  {
    digitalWrite(7, LOW);
    digitalWrite(8, HIGH);

    if(ust_mesafe<=300)
    {
      digitalWrite(7, LOW);
      digitalWrite(8, LOW);
    }
  }

  else if(y_durum>525 && 900>y_durum)
  {
    digitalWrite(7, HIGH);
    digitalWrite(8, LOW);

    if(alt_mesafe<=300)
    {
      digitalWrite(7, LOW);
      digitalWrite(8, LOW);
    }
  }

  else
  {
    digitalWrite(7, LOW);
    digitalWrite(8, LOW);
  }
}

Ekran Alıntısı.JPG
 
Dostum 1 yıl önce arduino projeleri ile uğraşıyordum.
Sana şunu diyebilirim. Yardımcı olur mu bilmiyorum.
Önce programın algoritmasını bir kağıda yada bilgisayarında metin belgesinde yaz.
Algoritma'da nerede yanlış yaptığını kontrol et.
Yaptığım projeleri hatırlasam belki daha çok yardımcı olabilirdim.
 
Gowner'ın dediği gibi flowchart çizersen senin için daha kolay olacaktır.

Kabaca program algoritman aşağıdaki gibi olacaktır. İlk if bloğundan sağa doğru ayrılan kolda sonuna kadar çizmedim.

Ayrıca motor hareketi gibi sürerliliği olan işlerin kontrolünü if yerine while ile yaparsan daha sağlıklı olacaktır. Şöyle ki:

while(HareketiBelirleyenDegisken <= 100)
{
motorları hareket ettir;
HareketiBelirleyenDegisken değerini sensörden oku;
}


gibi.

1.PNG
 
Uyarı! Bu konu 6 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Yeni konular

Geri
Yukarı