Arduino kod çalışmama sorunu

serhab

Kilopat
Katılım
8 Nisan 2016
Mesajlar
116
Yer
İstanbul
Daha fazla  
Cinsiyet
Erkek
Meslek
Öğrenci
Merhaba, tam 13 saattir bir araba üzerinde uğraşıyorum fakat gitmiyor lanet şey. Bir ileri bir geri gidiyor. Else withaut a previus if gelir diyor, kafayı sıyıracağım artık lüften yardım edin.


Mantık şu, önünde bir şey yoksa ileri, bir şey çıkarsa sağa baksın, bir şey yoksa sağa dönsün, ileri gitsin geri sola dönsün.
Bir şey varsa sola baksın, sağdakilerin sol versiyonu sonra başını öne çevirsin.
Zaman kısımlarına takılmayın.

Kod:
#include <Servo.h>















const int trigger_pin = 4;

const int echo_pin = 5 ;

int sure;

int mesafe ;

int pozisyon;

const int in1 = 11;

const int in2 = 10;

const int in3 = 9;

const int in4 = 8;



Servo sg90;



int pozisyonsag =(35);

int pozisyonduz =(80);

int pozisyonsol =(140);

void setup()

{

  pinMode(trigger_pin, OUTPUT);

  pinMode(echo_pin, INPUT);

 

  sg90.attach(3);

  sg90.write(pozisyonduz);

   Serial.begin(9600);

  pinMode(in1, OUTPUT);

  pinMode(in2, OUTPUT);

  pinMode(in3, OUTPUT);

  pinMode(in4, OUTPUT);

  delay(5000);

}

void ileri(){

  digitalWrite(in1,HIGH);

  digitalWrite(in2,LOW);

  digitalWrite(in3,LOW);

  digitalWrite(in4,HIGH);

}

void sol(){

  digitalWrite(in1,LOW);

  digitalWrite(in2,HIGH);

  digitalWrite(in3,LOW);

  digitalWrite(in4,HIGH);

}

void sag(){

  digitalWrite(in1,HIGH);

  digitalWrite(in2,LOW);

  digitalWrite(in3,HIGH);

  digitalWrite(in4,LOW);

}

void geri(){

  digitalWrite(in1,HIGH);

  digitalWrite(in2,LOW);

  digitalWrite(in3,HIGH);

  digitalWrite(in4,LOW);

}







void loop(){



digitalWrite(trigger_pin, LOW); //sensör pasif hale getirildi

  delayMicroseconds(5);

  digitalWrite(trigger_pin, HIGH); //Sensore ses dalgasının üretmesi için emir verildi

  delayMicroseconds(10);

  digitalWrite(trigger_pin, LOW); //Yeni dalgaların üretilmemesi için trig pini LOW konumuna getirildi



  sure = pulseIn(echo_pin, 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);

if(mesafe>30);{

digitalWrite(in1,HIGH);

  digitalWrite(in2,LOW);

  digitalWrite(in3,LOW);

  digitalWrite(in4,HIGH);              //ileri gidiyor

 

}

else if (mesafe<30) {;   //ileride birşey varsa

sg90.write(pozisyonsag); //başını çeviriyor

// poisyon sağdaysa

if(mesafe>30){ //kafa sağdayken mesafe 40 dan uzunsa





  sag();

  delay(200); // 2 saniye sağa dön

  digitalWrite(in1,HIGH);

  digitalWrite(in2,LOW);

  digitalWrite(in3,LOW);

  digitalWrite(in4,HIGH);

  delay(200); // 2 saniye sağdayken ileri git

  sol();

  delay(200); //2 saniye sola dön(öne0)

  sg90.write(pozisyonduz);

  delay(10);



}}

    //pozisyon sağdayken

if (mesafe<30){ //mesafe 40 dan küçükse

  digitalWrite(in1,LOW);

  digitalWrite(in2,LOW);

  digitalWrite(in3,LOW);

  digitalWrite(in4,LOW);



  sg90.write(pozisyonsol);

  delay(10); //kafasını sola çevirsin

}

  //kafasın sola çevirsin

  if  (mesafe>30){

    sol();     //sola dönddü

    delay(200);

    sag();       

    delay(200);

    digitalWrite(in1,HIGH);

    digitalWrite(in2,LOW);

    digitalWrite(in3,LOW);

    digitalWrite(in4,HIGH);

    delay(200);

    sg90.write(pozisyonduz);

    delay(10);

 

  }

  if else (mesafe<30){  //mesafe soldayken 40 dan küçükse

    geri(); //geri gitsin

    delay(400);

  }

}
 
Son düzenleyen: Moderatör:
Uyarı! Bu konu 5 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ı