serhab
Kilopat
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.
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: